最終更新日:2026年9月15日
fe fe-technology software object-oriented
まず結論
オブジェクト指向の関係を問う問題では、「種類どうし」「具体例と種類」「部分と全体」のどれかを先に見分けると判断しやすくなります。
種類A は 種類B の一種
→ is-a(上位・下位のクラス関係)
具体的なものA は 種類B に属する
→ インスタンスとクラスの関係
A は B の一部分
→ part-of(部分と全体)
基本情報技術者試験では、用語だけを暗記するより、左右に置かれたものが「具体物」か「種類」かを確認するのがポイントです。
直感的な説明
次の3つを比べると違いが見えます。
公務員 : 俸給生活者
→ どちらも種類
→ 「公務員は俸給生活者の一種」と考える
日本 : 国
→ 日本は具体的な1つの対象、国は種類
→ インスタンスとクラス
部屋 : 家
→ 部屋は家の一部分
→ part-of
まず、「AはBである」と言えるだけで全部is-aにしないことが大切です。
たとえば「日本は国である」と自然な日本語では言えますが、モデルとして見ると、
日本
→ 具体的な対象
国
→ 種類・クラス
なので、クラス同士の継承関係ではなく、具体例がクラスに属する関係として整理します。
定義・仕組み
クラスとは
クラスは、似た特徴をもつものをまとめた種類・型・概念です。
たとえば、
- 国
- 自動車
- 社員
- 商品
などがクラスとして考えられます。
クラスには、その種類が共通してもつ属性や操作を定義できます。
インスタンスとは
インスタンスは、クラスから作られた具体的な1つの対象です。
クラス:国
インスタンス:日本、フランス、ブラジル
クラス:自動車
インスタンス:ある特定の1台の自動車
試験では、固有名詞や「この○○」「私の○○」のような表現が出たら、まず具体物ではないかを確認します。
is-a関係
is-a関係は、ある種類が、より広い種類の一種である関係です。
公務員 is-a 俸給生活者
犬 is-a 動物
乗用車 is-a 自動車
オブジェクト指向では、上位クラスと下位クラスの関係として表現され、継承・汎化・特化の考え方につながります。
上位クラス
↑
下位クラス
インスタンスとクラスの関係
具体的な1つの対象が、あるクラスに属する関係です。
日本 : 国
→ 日本は「国」というクラスの具体例
厳密なモデリング用語では、これは instance-of(インスタンスである) と区別して説明されることがあります。
FEの問題では、問題文や解説の表現が簡略化されることがあるため、用語だけで決めず、具体物なのか種類なのかを見る方が安全です。
part-of関係
part-of関係は、あるものが別のものの一部分である関係です。
タイヤ part-of 自動車
部屋 part-of 家
CPU part-of コンピュータ
判断するときは、
AはBの一部である
と言い換えて自然かを確認します。
科目Aでどう出る?
科目Aでは、2つの対象の関係を見て、同じ種類の関係を選ぶ問題が出ます。
判断軸1:両方とも「種類」か
犬 : 動物
公務員 : 俸給生活者
どちらも種類なら、
AはBの一種
と言えるかを確認します。
言えるなら、is-a関係を考えます。
判断軸2:左側が具体物、右側が種類か
日本 : 国
東京 : 都市
ある社員A : 社員
この場合は、
具体例 : クラス
というインスタンスとクラスの関係です。
判断軸3:「一部」で言い換えられるか
部屋 : 家
タイヤ : 自動車
なら、
部屋は家の一部
タイヤは自動車の一部
と表せるのでpart-ofです。
3ステップで切る
迷ったら、次の順番で確認します。
1. 左右は「具体物」か「種類」か
2. 「AはBの一種」と言えるか
3. 「AはBの一部」と言えるか
これだけで、多くの選択肢を切り分けられます。
どんな場面で使う?
この考え方は、オブジェクト指向の問題だけでなく、UMLのクラス図を読むときにも役立ちます。
特に次の内容につながります。
- クラスとオブジェクト
- 継承
- 汎化・特化
- 集約・コンポジション
- UMLクラス図
まず「種類」「具体例」「部分」の3つを区別できるようにしておくと、その後のUMLも理解しやすくなります。
よくある誤解・混同
「AはBである」と言えれば全部is-a
これは危険です。
たとえば、
日本は国である
とは言えますが、
日本 = 具体的な対象
国 = 種類
なので、クラス同士の上下関係として扱うより、インスタンスとクラスの関係として見るのが適切です。
part-ofとis-aを混同する
タイヤ : 自動車
は、
タイヤは自動車の一種
ではありません。
タイヤは自動車の一部
なのでpart-ofです。
「私の父」と「父」を同じ扱いにする
「父」という言葉だけなら概念として扱える場合がありますが、「私の父」は具体的な1人を指します。
問題文では、固有名詞や所有を示す表現があると、インスタンスである可能性が高くなります。
is-aと継承は全く別の話
is-aは、オブジェクト指向で継承関係を考えるときの基本的な意味関係です。
犬 is-a 動物
なら、犬を下位クラス、動物を上位クラスとしてモデル化する考え方につながります。
ただし、実際の設計では「日本語として〜であると言える」だけで継承にするのではなく、モデルとして本当に上位・下位関係にするべきかを考える必要があります。
まとめ(試験直前用)
- クラスは種類・概念、インスタンスは具体的な1つの対象
- 種類どうしで「AはBの一種」ならis-aを考える
- 具体物と種類ならインスタンスとクラスの関係を考える
- 「AはBの一部」ならpart-of
- 「AはBである」と言えるだけで、すべてis-aにしない
- 迷ったら、まず左右が「具体物」か「種類」かを見る