ObjectSquare

[オブジェクト指向と情報処理試験 -2000年 秋-]


(アプリケーションエンジニア・午後・問1)

間1.オブジェクト指向分析に関する次の記述を読んで,設問1〜3に答えよ。

X市には,A,B二つの図書館がある。このたび,両図書館において,貸出・返却 システム,利用者管理システム,予約システムからなる図書舘システムを開発するこ とになり,分析を行った。

なお,以下では,A図書館のシステムについて記述するが,B図書館にも同じシステムが導入されることになっている。

〔図書館の概要〕

図1 図書館利用カードの例

〔予約〕

〔貸出中予約(自図書館)〕

〔仮押え予約〕

〔貸出中予約(他図書館)〕

〔制限事項〕

予約システムの機能の分析を行うため,クラス図,シーケンス図を作成した。クラ ス図を図2に,貸出処理,仮押え予約処理のシーケンス図をそれぞれ図3,4に示す (図2,4は,作成途中)。
なお,図3,4は,1冊目の図書の処理についてだけ記述している。

図2 クラス図

・長方形はクラスを表す。クラスを表す長方形には,クラス名と
その時点で明らかになっている属性を記入する。

・クラスの長方形を結ぶ直線でクラスとクラスの関連を表す。

・クラスとクラスの関連の多重度の範囲を,x..yで表す。
範囲ではなく,単一の値であるときには,単にxとする。
(x,yは,0又は自然数とする。ただし,上限に明示的な
制限がない場合,*とする)。左図の場合,1個のクラスAに対して,
1個以上のクラスBが関連することを表す。

・クラスとクラスの間に継承関係があるとき,直線に白抜き
の三角形を付す。左図は,クラスBがクラスAを継承することを表す。

図3 貸し出し中のシーケンス図


図4 仮押え予約処理のシーケンス図




設問1

図2中の [a]〜[l] に入れる適切な字句を答えよ。ただし, [a]〜[c] はクラスの関連の多重度, [d]〜[l] は属性又はクラス名である。さらに,〇にクラス間の関連又は継承関係を示す線を加えることによって,クラス図を完成させよ。

設問2

図4中の [m]〜[p] に適切な字句を入れて,シーケンス図を完成させよ。

設問3

システム稼働後,A図書館から,B図書館の図書を仮押さえ予約し,直ちにB図 書館に赴いたところ,その図書は既に貸出中で借りられなかったという事態が頻 繁に発生した。これは,図2〜4に基づいて作成した仕様に漏れがあったからである。 このような問題が発生する理由を60字以内で述べよ。

(解答)

設問1:
a: 1 b: 1..3 c: 0..* d: 予約番号 e: 図書ID
f: 氏名 g: 住所 h: 電話番号 i: 有効期限 j: 利用者ID
k: 単行本 l: 雑誌


○内の関連
予約 ―(関連)― 予約図書
図書 ―(継承)― 単行本、雑誌

設問2:
m: A図書館利用者管理
n: 所蔵図書か?
o: 仮押え予約されている
p: NO

設問3:図3で貸出しを行う際に、予約システムに該当図書がすでに仮押え予約されているかを尋ねずに貸出しているから。

(コメント)

このような問題が必須問題として出題されるとは、オブジェクト指向をしている方にとっては、ラッキーな時代到来。
と思いきや、設問1のdとe は、解答に悩みますね。図2のクラス図は、ちょっぴりおかしいようです。。。
以下、助っ人編集員のコメントです。

----- F編集委員のコメント -----

多分、図2はクラス図ではなくER図として解釈したほうがいいようです。
理由は以下のとおりです。

予約クラスに利用者IDが存在する。
予約クラスは利用者クラスと双方向の関連があるから、属性に利用者ID
があるのはおかしい。 筆者の意図として、関連も明示的に属性としてあらわすのであれば、
利用者クラスには予約番号が必要になる。
しかし、利用者クラスは解答のとおりの5つの属性のみで、予約番号は 記述できない。
したがって、意図的に関連の属性を記述しているとは思えない。
じゃぁ、どうやって利用者から予約を参照するのか考えてみたが、
これがER図でDBのテーブルだとすれば、予約テーブルから利用者IDで
選択すれば一意に予約が取得できる。

同様に考えると予約図書(この存在意義が?)は予約と図書の関連テーブルで
属性に予約番号と図書IDを持つことで予約から一意に図書を取得でできる。

以上の推測から上のように回答しました。

クラス図と考えると摩訶不思議だけど、ER図と思えばわからなくもない...
あぁ、愚問だ。


© 2000 OGIS-RI Co., Ltd.
Prev
Prev.