![]()
平成26年 秋期 基本情報技術者 午後 問05
問05 4問選択問5 共通ライブラリのオブジェクト指向設計に関する次の記述を読んで,設問1,2に答えよ。
システムインテグレータのT社は,自社で開発するソフトウェアの品質の安定化,開発の
生産性の向上などを目的として,オブジェクト指向を用いた共通ライブラリの設計に取り組んでいる。
![]() 図1 社員検索機能の表示例 組織階層の扱いは,どの開発プロジェクトにおいても類似するものが多い。そこで, 組織階層を扱う機能をユーザインタフェースから切り離して, 様々な開発プロジェクトで再利用できるように,共通ライブラリとして設計することにした。 共通ライブラリは,オブジェクト指向で設計し,UML のクラス図で表現する。ここで, 共通ライブラリの設計に当たり,共通ライブラリを利用する側のソフトウェアを一律に クライアントと呼ぶことにする。 まず,分析のためのクラス図を作成した。 〔分析のためのクラス図の説明〕 組織階層において,ある組織が親の組織(以下,親組織という)をもつ場合, 親組織は必ず一つであり,子の組織(以下,子組織という)をもつ場合, 子組織の数に制限はない。また,親組織をもたない組織,子組織をもたない組織, 親組織も子組織ももたない組織もある。社員は必ず一つの組織だけに属する。 (1) 組織階層は木構造で管理する。 (2) クライアントが組織階層を参照する際,組織と社員を共通に扱えるようにするために, どちらも組織エントリとして管理する。 図2は,分析のためのクラス図である。
![]() 図2 分析のためのクラス図 次に,組織エントリを管理するクラスの,設計のためのクラス図を作成した。 〔設計のためのクラス図の説明〕
組織は自身に属する組織エントリのリスト(以下,組織エントリリストという)を
属性として保持する。
(1) 組織エントリリストは,組織エントリをサイズが可変の配列で管理する。 (2) クライアントは,組織エントリリストに表1のメソッドでアクセス(組織エントリの追加や削除, 取出し,走査など)する。
![]() 図3 組織エントリリストを設計するためのクラス図
![]()
設問1 図2の分析のためのクラス図の中の a,b に関する解答群 オ 組織 カ 組織エントリ キ 組織階層 c,d に関する解答群
設問2 次の記述中の 共通ライブラリの社内レビューを実施したところ,組織エントリリストのクラス設計に 対して次の指摘が挙がった。 〔指摘の内容〕 組織エントリリストから組織エントリを取り出すとき,クライアントが要素番号を 指定する必要がある。全ての組織エントリを取り出すときや,特定条件を 満たす組織エントリだけを取り出したいときなど,クライアント側の実装依存が大きくなる。 図4にクライアントの走査の例を示す。
![]() 図4 クライアントの走査の例 共通ライブラリは,組織エントリリストの内部構造をクライアントに意識させず, 組織エントリリストの走査を拡張できるように改善すべきである。 この指摘を受け,組織エントリリストのクラス設計を次の設計方針に従って 見直すことにした。 〔設計方針〕 (1) 組織エントリリストは,より汎用的にするために,任意のオブジェクトを 管理できるようにする。
(2) リストを走査する処理は,別のクラス(以下,イテレータという)に与える。
リストでは,このイテレータを生成して (3) 共通ライブラリで提供するイテレータは,先頭から順に全ての要素を 走査するメソッドを提供する。 (4) アクセス方法の統一を目的として,必要なメソッドをインタフェースとして定義する。 クライアントは,必ずこのインタフェースを用いてリストを走査することとする。
(5) クライアントは,共通ライブラリで提供するメソッドと異なる走査をしたい場合は,
図5は見直し後の設計のためのクラス図,表2は図5のクラスの図で説明ある。
![]() 図5 見直し後の設計のためのクラス図
![]() e に関する解答群 f に関する解答群 イ BaseList と Baselterator を継承してメソッドを追加 ウ BaseList と Baselterator を実装して処理をオーバライド エ BaseList と Baselterator を実装してメソッドを追加 オ List と Iterator を継承して処理をオーバライド カ List と Iterator を継承してメソッドを追加 キ List と Iterator を実装して処理をオーバライド ク List と Iterator を実装してメソッドを追加
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|