リファクタリング “継承の分割”
出典: 令和3年度 秋期 応用情報技術者試験 午前 問48 (IPA)
図は,ある図形描画ツールのクラス図の一部である。新たな形状や線種で図形を描画する機能の追加を容易にするために,リファクタリング “継承の分割” を行った。変更後のクラス図はどれか。





- ア ア
- イ イ
- ウ ウ
- エ エ
正解と解説を見る
正解: ウ
- ア: 形状と線種の組合せを全て「図形」の子クラスにしているので、形状や線種を増やすたびに組合せの数だけクラスが増えます。
- イ: 「太線の図形」の階層にまだ「太線の三角形」「太線の四角形」と形状が混ざっていて、継承が分割されていません。
- ウ: 「図形」の階層と「線種」の階層を分け、図形から線種を関連で参照しているので、形状と線種を独立に追加できます。正しい答えです。
- エ: 「太線の三角形」などが図形と太線の両方を継承する多重継承になっていて、組合せごとのクラスが残っています。
ポイント
- 元のクラス図では、形状 (三角形・四角形) と線種 (太線) という 2 つの観点が 1 つの継承の階層に混ざって います。形状や線種を増やすたびに、その組合せの数だけクラスが増えてしまいます。
- 継承の分割: 混ざった観点ごとに継承の階層を分け、一方から他方を 関連 で参照するようにします。
- 「図形」の階層 (三角形・四角形) と「線種」の階層 (太線・細線) に分け、図形が線種を参照する形 (ウ) にすると、それぞれ独立に追加できます。