令和7年度 春期 午前Ⅱ 問2
設計
SOLIDに関する問題
オブジェクト指向設計における設計原則の説明のうち,開放・閉鎖原則のものはどれか。
- アクラスにもたせる役割は一つだけにするべきであり,複数の役割が存在する場合にはクラスを分割する。
- イクラスを利用するクライアントごとに異なるメソッドが必要な場合は,インタフェースを分ける。
- ウ上位のモジュールは,下位のモジュールに依存してはならない。
- エモジュールは,機能の追加や変更が可能であって,その影響を他のモジュールに及ぼしてはならない。
答えと解説を見る
✓ これが正解エモジュールは,機能の追加や変更が可能であって,その影響を他のモジュールに及ぼしてはならない。
解説
拡張には開き、修正の影響は閉じるのが開放・閉鎖原則です。
開放・閉鎖原則は、オブジェクト指向設計の原則をまとめた SOLID の一つで、モジュールは拡張に対して開いており、修正に対して閉じているべきだという考え方です。機能を追加したり変えたりできる柔軟さをもちながら、その変更が既存のほかのモジュールに波及しないように作る、という意味になります。抽象的なインタフェースを用意し、新しい振る舞いはそれを実装したクラスを足すことで加える、といった設計がその例です。見分ける軸は、変更や拡張とその影響の範囲に触れているかです。役割を一つにする、インタフェースを分ける、依存の向きを抽象に向ける、という記述は SOLID のほかの原則に当たります。開いて追加、閉じて影響を止める、と覚えると選べます。
ほかの選択肢はなぜ違うのか
- アクラスにもたせる役割は一つだけにするべき…:クラスにもたせる役割を一つに絞り、複数あれば分割するという記述は、変更の理由を一つにするための原則です。SOLID の別の原則にあたり、拡張しても影響を閉じ込めるという開放・閉鎖原則の内容とは異なります。
- イクラスを利用するクライアントごとに異なる…:利用するクライアントごとに必要なメソッドが違えばインタフェースを分ける、という記述は、使わないメソッドへの依存を避けるための原則です。インタフェースの分け方の話で、拡張と影響範囲を扱うものではありません。
- ウ上位のモジュールは,下位のモジュールに依…:上位のモジュールが下位のモジュールに依存してはならないという記述は、依存の向きを抽象の側にそろえるための原則です。モジュール間の依存関係の向きを扱うもので、機能の追加と影響の閉じ込めを述べたものではありません。
出典:令和7年度 春期 システムアーキテクト試験 午前Ⅱ 問2
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)