2016年12月23日金曜日

[平成26年度秋] 午後 問5解説

[問題文・解答]


平成26年度10月に実施された基本情報技術者試験の午後試験の問題・解答はIPA公式ページからダウンロード出来ます。(以下リンク)

[問題概要]


この問題は、選択問題で問2〜問7のうち4問を選択する必要があります。
出題分野はソフトウェア設計で、問題の題材は共通ライブラリのオブジェクト指向設計です。
組織の階層情報を管理する共通ライブラリを分析・設計するためのクラス図について問われます。

[設問1]


a) P.25[分析のためのクラス図の説明](2)に「組織と社員を共通に扱えるようにするために、どちらも組織エントリとして管理する」とあることから、組織エントリは組織と社員の共通部分を取り出したスーパークラスであり、組織と社員がそのサブクラスとなることが分かります。図2の凡例よりクラスaがクラスbと左下のクラスのスーパークラスとなるため、「カ」が正解です。

b) P.25[分析のためのクラス図の説明](1)に「組織階層は木構造で管理する」とあります。つまり、組織の一部として、組織や社員といった組織エントリが含まれることになるため、集約の関係となります。従って、図2の凡例よりクラスbとクラスaが集約関係にあり、クラスaがクラスbの一部であるためbは組織となります。よって「オ」が正解です。

c,d) 組織の階層関係についてP.25[分析のためのクラス図の説明]では以下のように述べられています。
①親組織をもつ場合、親組織は必ず一つである(親組織をもたない場合もある)
②子組織をもつ場合、子組織の数に制限はない(子組織をもたない場合もある)
図2の凡例より①の多重度は0..1、②の多重度は0..*で表せます。図2ではaの組織エントリ(組織又は社員)が子、bの組織が親と見なせるため、cには0..*が、dには0..1が適切です。

[答] a) カ b) オ c) ウ d) イ

[設問2]


e) 図5のクラス図より、BaseListがBaseIteratorを生成しており、BaseIteratorには属性としてlistがあります。従って、リスト(BaseList)がイテレータ(BaseIterator)を生成して、リスト自身を生成したイテレータに登録することで、イテレータがリストを走査出来るようになるため「エ」が正解です。

f) 共通ライブラリで提供するメソッドは、インタフェースListとIteratorで定義され、BaseListとBaseIteratorされたメソッドのみとなります。クライアントが異なる走査をしたい場合は、走査に関連するメソッドを再定義し、それ以外の部分は継承する必要があります。よって、BaseList、BaseIteratorを継承して、一部のメソッドをオーバーライドする「ア」が正解です。

[答] e) エ f) ア

上記の解説は問題と解答を元に自分なりの考え方を記述しており、間違っている部分もあるかと思いますので、ご了承願います。また、誤りについては正しい考え方をご指摘・ご教授頂けると助かります。


0 件のコメント:

コメントを投稿