形状と線種の組合せ爆発を防ぎ機能追加を容易にするBridgeパターンのクラス図

問題のクラス図では、「図形」のサブクラスとして「三角形」「四角形」があり、さらにそれぞれのサブクラスとして「太線の三角形」「太線の四角形」が定義されています。このように1つの継承階層の中で「形状」と「線種」という直交する2つの概念を同時に扱っていると、新しい線種(細線、破線など)や形状(円など)を追加するたびにサブクラスが掛け算で急増(クラス爆発)し、コードの重複と保守性の低下を招きます。 これを解決するリファクタリング(Bridgeパターン)では、「図形」の継承階層(形状:三角形、四角形)と「線種」の継承階層(線種:太線、細線)の2つに継承階層を分割し、「図形」が「線種」への参照(関連・委譲)を保持する構成にします。したがって、この構造を正しく表しているウが正解です。 「線種」が「図形」を継承する誤った構造になっており、線種が図形の一種であるという不適切な関係になっています。 「図形」と「線種」の間に関連がなく、線種に応じた描画の委譲関係が成り立っていません。 「三角形」や「四角形」が「線種」を直接多重継承するような構造になっており、継承階層の分割(委譲による結合)の目的に反しています。

図は,ある図形描画ツールのクラス図の一部である。新たな形状や線種で図形を描画する機能の追加を容易にするために,リファクタリング“継承の分割”を行った。変更後のクラス図はどれか。 〔クラス図〕

問題画像
出典令和3年度 秋期 応用情報技術者試験 午前 問48
ア
選択肢アの画像
イ
選択肢イの画像
ウ
選択肢ウの画像
エ
選択肢エの画像