問2 オブジェクト指向設計に関する次の記述を読んで,設問1〜3に答えよ。
 図1の貸出カードを使って,本とCDの貸出しと返却の管理を行っている図書館がある。この図書館における貸出管理のシステムをオブジェクト指向で開発することになった。
 まず,扱っている本とCDに着目し,図2に示す“本”クラスと“CD”クラスを定義した。図2は,各クラスがタイトルなどの属性と,それらを参照する操作をもっていることを示す。
図3にクラスの定義方法と,クラス間の関係の定義方法を示す。


タイトル
 

貸出日 返却日 利用者
     
     
     
     
     
  
図1 貸出カード
 
タイトル
著者
キーワード
タイトルを参照する
著者を参照する
キーワードを参照する
CD
タイトル
作曲者
指揮者
演奏者
タイトルを参照する
作曲者を参照する
指揮者を参照する
演奏者を参照する
図2 “本”クラスと“CD”クラスの定義
                                  
クラス定義
クラス名
属性名
操作名
図3 クラスの定義方法と関係の定義方法
 
設問1 “本”クラスと“CD”クラス共通のスーパクラスとして“貸出物”クラスを設けることにした。クラス間の構造を表現した図4を完成させよ。スーパクラスで定義した方がよいと考えられるものはすべてスーパクラスで定義し,サブクラスでは定義しないものとする。属性名及び操作名は,図2にあるものを使用すること。
 
図4 クラス構造(1)
設問2 貸出履歴を管理するために,図1の貸出カードの項目である貸出日,返却日及び利用者をもつ“貸出履歴”クラスを設けることにした。“貸出物”クラスに対する貸出しや返却の処理はすべて,“貸出物”クラスから“貸出履歴”クラスに委譲されるものとする。図5の“貸出物”クラスと“貸出履歴”クラスの属性名及び操作名欄に適切な属性名と操作名を記入し,これらのクラスの定義を完成させよ。 属性名及び操作名は要求されているものだけを書くこと。また,“本”クラスと“CD”クラスには何も書かないこと。
  
注 網掛け部分には何も書かないこと
   図5 クラス構造(2)

設問3
オブジェクト指向プログラミングに関する次の記述中の
に入れる適切な字句を答えよ。
オブジェクト指向プログラミングでは,
化の槻念を用いて
を介してデータを扱う。これによって,オブジェクト内部の
構造に
変更があっても,呼出し側のプログラムを変更する必要がなく,保守性の向上が期待できる。
図4のクラス構造の場合,スーパクラスで定義した操作をサブクラスで再定義することもできる。これを
という。操作の再定義によって,同じ名前
でも違った実装をもつことになる。実装が異なっても,それを呼び出すプログラムが違いを意識しなくてよいことを
という。
プログラムによって生成されるオブジェクトの実体は,
f 
領域に確保される。使用されなくなったオブジェクトの管理をプログラムで行うのは困難
なので,
によって領域内の不必要なオブジェクトの整理を行い,領域の再利用を図る言語処理系がある。
設問1
貸出物
CD
設問2
貸出物
貸出履歴
設問3