汎化・特化(オブジェクト指向)とは?はんか・とっか
汎化・特化(オブジェクト指向)とは、複数のクラスに共通する性質を抜き出して上位のクラスにまとめる関係が汎化で、逆向きに下位へ具体化する見方が特化である。汎化は「下位は上位の一種である」というis-a関係を表し、クラス図では白抜きの三角矢印を上位クラスへ向けて描く。全体と部分を表す集約・コンポジションとは別の関係になる。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
同じ属性や操作を似たクラスへ書き写すと、仕様が変わったときに直し漏れが必ず出る。共通部分を上位へ一度だけ置いて下位が引き継ぐ形にすれば、修正箇所が一点に集まり再利用も効く。セキュア開発の観点では、入力検証や認可判定のような横断的な処理を上位に置けば実装漏れを減らせる一方、階層が深いと実際にどの実装が動くのかを追いにくくなり、レビューで見落としが生じるという緊張関係がある。
具体例
Javaの例外はThrowableを頂点にExceptionが続き、その下にIOExceptionやSQLExceptionが並ぶ階層で定義されている。catch (Exception e) と書けば下位の例外をまとめて受けられるのが汎化の効き目である。これに対し、HTTPリクエストがヘッダとボディを保持する関係のように「〜を持つ」で言い換えられるものは集約であって汎化ではない。
試験での引っ掛け
「〜を持つ」で言い換えられる関係は集約・コンポジションであり、汎化と入れ替えて出題される定番の混同である。矢印の向きも狙われ、汎化は下位から上位へ向けて描く。特化は汎化を逆から眺めた見方にすぎず、第三の関係が増えるわけではない点も押さえておく。
関連用語
出典・参考
公式シラバスの4 開発技術 > 2. 設計 > (9) ソフトウェア設計手法に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。