基本情報 平成29年度 春期 問47:テクノロジ系に関する問題
オブジェクト指向分析を用いてモデリングしたとき, クラスとオブジェクトの関 係になる組みはどれか。
- a公園, ぶらんこ
- b公園, 代々木公園正答
- c鉄棒, ぶらんこ
- d中之島公園, 代々木公園
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは b「公園, 代々木公園」 です。
クラス=「設計図」「種類の名前」、オブジェクト=「その設計図から作った実物」。
「公園」というカテゴリ(クラス)に対して、「代々木公園」はその実物(オブジェクト)。たとえば「犬」がクラスで「ポチ」がオブジェクト、みたいなイメージです。
👉 覚え方:クラス=抽象、オブジェクト=具体!
ほかの選択肢:a 公園とぶらんこは「全体と部分」の関係/c 鉄棒とぶらんこは「同じ仲間」/d 中之島公園と代々木公園は「どちらも実物」で同じ立場。
なぜこれが正解か
正解は b。オブジェクト指向ではクラスは概念・型・テンプレートを表し、オブジェクト(インスタンス)はそのクラスから生成された具体的な実体を指す。「公園」というクラスに属する具体例として「代々木公園」が存在する、というクラス/インスタンスの関係が成立する。
各選択肢の解説
- a 公園・ぶらんこ:公園は構成要素として遊具を持つ=集約(aggregation)/コンポジションの関係。
- b 公園・代々木公園:抽象=クラス、具体=インスタンス → 正解。
- c 鉄棒・ぶらんこ:どちらも「遊具」クラスの兄弟インスタンス。クラス・オブジェクト関係ではない。
- d 中之島公園・代々木公園:どちらも「公園」のインスタンス同士で同列。
覚え方・ひっかけ注意
「クラスは型、オブジェクトは実例」の関係は汎化(is-a)とも異なるので注意。「犬 is-a 動物」は汎化(クラス間の関係)、「ポチ is-an instance of 犬」がインスタンス化。dの「中之島と代々木」のように両方が固有名(インスタンス)の組は引っかけ頻出。
理論的背景
オブジェクト指向の関係概念は UML で厳密に区別される:
- インスタンス化(instantiation):クラス→オブジェクト。本問の関係。
- 汎化(generalization, is-a):スーパークラス←サブクラス。継承で実現、白抜き三角矢印。
- 実現(realization):インタフェース←実装クラス、破線+白抜き三角。
- 関連(association, has-a):クラス間の構造的関係、実線。
- 集約(aggregation):部分が全体に属するが独立して存在可能、白抜き菱形。
- コンポジション(composition):部分は全体と運命を共にする強い所有、黒塗り菱形。
- 依存(dependency):一時的な使用関係、破線矢印。
メタモデル階層
OMGのMOFでは M0(実行時インスタンス)⇄ M1(モデル=クラス)⇄ M2(メタモデル=UML自体)⇄ M3(メタメタモデル=MOF) の4階層が定義される。本問は M0⇄M1 の関係。「クラス自体もメタクラスのインスタンス」と捉える視点は、Smalltalk・Ruby・Python等のメタプログラミング理解に必須。
実装言語との対応
- Pythonでは `代々木公園 = 公園()` でインスタンス生成、`isinstance(代々木公園, 公園)` で関係確認。
- Javaでは `公園 代々木公園 = new 公園();` の `new` がインスタンス化演算子。
- JavaScriptはプロトタイプベースで、クラスは概念上存在せずプロトタイプチェーンで継承を実現(ES6でclass構文は導入されたが内部はprototype)。
試験での位置づけ
FE「ソフトウェア開発/オブジェクト指向」分野で頻出。UMLクラス図の関係判別問題は応用情報・高度試験でも継続出題。汎化/集約/コンポジション/関連/実現の5関係の図示記号を完璧に区別できるようにする。
選択肢の発展補足
aの公園⇄ぶらんこはコンポジション(公園が消滅すると遊具も消える)の典型例。cの鉄棒・ぶらんこは「遊具」抽象クラスからの兄弟インスタンス、共通の振る舞いを継承する場合にStrategy や Template Method パターンの題材になる。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成29年度 春期 問47/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。