基本情報技術者 2018年 秋期 午前(科目A) 問47
問題文
オブジェクト指向におけるクラスとインスタンスとの関係のうち、適切なものはどれか。
選択肢
ア:インスタンスはクラスの仕様を定義したものである。
イ:クラスの定義に基づいてインスタンスが生成される。(正解)
ウ:一つのインスタンスに対して、複数のクラスが対応する。
エ:一つのクラスに対して、インスタンスはただ一つ存在する。
オブジェクト指向におけるクラスとインスタンスの関係【午前2 解説】
要点まとめ
- 結論→クラスはオブジェクトの設計図(属性と振る舞いの定義)であり、インスタンスはその設計図から生成された具体的な実体です。
- 根拠→プログラミングにおける「インスタンス化」はクラス定義をもとにメモリ上に個別のオブジェクトを生成する操作であり、定義→生成の一方向の関係が成立します。
- 差がつくポイント→「インスタンスがクラスを定義する」「クラスに対してインスタンスはただ一つ」などの誤認を避け、設計(クラス)と生成(インスタンス)の役割を正確に理解すること。
正解の理由
正解は イ です。クラスは属性(フィールド)や操作(メソッド)を定義するテンプレートであり、その定義に基づいて具体的なオブジェクトが生成されます。生成されたオブジェクトが「インスタンス」であり、クラス定義が元になっているため「クラスの定義に基づいてインスタンスが生成される」という記述が正確です。
よくある誤解
- 「インスタンスはクラスの仕様を定義したもの」:逆で、クラスが仕様(設計)を定義し、インスタンスはその仕様に従った実体です。
- 「クラスに対してインスタンスはただ一つ」:一般的には同じクラスから複数のインスタンスを生成できます(シングルトンは例外的なデザインパターン)。
- 「一つのインスタンスに複数のクラスが対応する」:継承やインタフェースの観点での見方はあるが、設問意図では「定義される主たるクラス」とインスタンスの関係を問うため誤答となります。
解法ステップ
- 設問のキーワード(クラス、インスタンス、関係)を確認する。
- 各選択肢の述語が「設計(定義)」と「生成(実体)」のどちらを示すかを判定する。
- 「設計→生成」の関係を満たす記述を正解とし、逆や唯一性を主張するものを排除する。
- 継承や特殊なパターン(シングルトン、プロトタイプ)を念頭に置きつつ、基本的な定義に従って選ぶ。
選択肢別の誤答解説
-
ア: インスタンスはクラスの仕様を定義したものである。
誤り。仕様(定義)を行うのはクラスであり、インスタンスはその仕様に従った具体的実体です。逆転した表現で不正確です。 -
イ: クラスの定義に基づいてインスタンスが生成される。
正解。クラスが設計図であり、そこからインスタンス(オブジェクト)が作られるという基本的な関係を正しく述べています。 -
ウ: 一つのインスタンスに対して、複数のクラスが対応する。
誤り(問題文の意図として)。実行時の型関係としては継承で親クラスにも属するなどの見方がありますが、一般的な「クラスが設計しインスタンスが生成される」という一次対応の観点からは不適切です。 -
エ: 一つのクラスに対して、インスタンスはただ一つ存在する。
誤り。通常は同じクラスから複数のインスタンスが生成されます。シングルトンは設計パターンとして「ただ一つ」に制限する特殊例ですが、一般論としては誤った記述です。
補足コラム
- クラスベース言語(Java、C++、Pythonなど)では「クラス定義→インスタンス生成(インスタンス化)」が基本のモデルです。
- プロトタイプベースの言語(JavaScriptのプロトタイプ継承など)では「オブジェクトからオブジェクトを複製」するスタイルですが、問題で問われる基本概念は同様に「設計と実体の関係」です。
- 継承やインタフェースの概念により、あるオブジェクトは複数の型(クラスやインタフェース)に属すると見なすことができますが、設問では「生成元としてのクラス」の位置づけを重視します。
FAQ
Q1: 「インスタンスは複数のクラスに属することがある」は正しいですか?
A1: 継承や実装(インタフェース)の観点で「あるオブジェクトが複数の型に適合する」ことはありますが、通常は「あるクラス定義から生成されたインスタンス」という一次的な関係が基本です。
A1: 継承や実装(インタフェース)の観点で「あるオブジェクトが複数の型に適合する」ことはありますが、通常は「あるクラス定義から生成されたインスタンス」という一次的な関係が基本です。
Q2: シングルトンは選択肢エの記述を正当化しますか?
A2: シングルトンは「あるクラスから生成されるインスタンスを1つに限定する」デザインパターンで例外的ですが、設問は一般的な関係を問うためエは誤りです。
A2: シングルトンは「あるクラスから生成されるインスタンスを1つに限定する」デザインパターンで例外的ですが、設問は一般的な関係を問うためエは誤りです。
Q3: クラスと型(type)は同じ意味ですか?
A3: 多くの言語でクラスは型を定義しますが、型システムとクラス定義は厳密には異なる概念として扱われる場合があります。基本的な理解としては「クラス=オブジェクトの型(設計)」で問題ありません。
A3: 多くの言語でクラスは型を定義しますが、型システムとクラス定義は厳密には異なる概念として扱われる場合があります。基本的な理解としては「クラス=オブジェクトの型(設計)」で問題ありません。
関連キーワード: オブジェクト指向、クラス、インスタンス、インスタンス化、継承、カプセル化、ポリモーフィズム、コンストラクタ、シングルトン、プロトタイプベース

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

