マナビング基本情報技術者

クラスとインスタンスの関係をどう見分けるか

基本情報技術者試験 平成30年度秋期 午前 問47 / システム開発技術 › ソフトウェア方式設計・詳細設計

過去問にチャレンジ

平成30年度秋期 午前 問47

オブジェクト指向におけるクラスとインスタンスとの関係のうち,適切なものはどれか。

  1. ア

    インスタンスはクラスの仕様を定義したものである。

  2. イ

    クラスの定義に基づいてインスタンスが生成される。

  3. ウ

    一つのインスタンスに対して,複数のクラスが対応する。

  4. エ

    一つのクラスに対して,インスタンスはただ一つ存在する。

会話形式の解説

講師講師
この問題では、クラスとインスタンスの役割を分けて考えます。定義するのはどちらでしょうか。
受験者受験者
クラスです。実体に共通する属性や操作を定めます。
講師講師
そうです。では、インスタンスが仕様を定義するという説明はどうでしょうか。
受験者受験者
定義する側が逆なので、誤りです。インスタンスは定義に基づく実体ですね。
講師講師
その関係から、クラスの定義に基づいてインスタンスが生成されるという説明は適切です。これが正解です。
受験者受験者
一つのインスタンスに複数のクラスが対応するという説明は、どう考えればよいですか。
講師講師
この問題で問う基本的な生成関係では、インスタンスには生成元のクラスが対応します。複数のクラスを生成元とする説明は適切ではありません。
受験者受験者
では、一つのクラスにインスタンスが一つだけ対応する、という説明も気になります。
講師講師
同じクラスの定義から、複数のインスタンスを生成できます。一つだけという限定が誤りです。
受験者受験者
定義から実体が生成される向きと、生成できる数を確認すれば判断できますね。
講師講師
はい。役割を逆にした説明と、インスタンスの数を一つに限る説明に注意します。

まとめ

クラスは実体に共通する属性や操作を定めます。インスタンスは、そのクラスの定義に基づいて生成される実体です。一つのクラスから複数のインスタンスを生成できるため、定義する側と生成される側の向きに加え、数の限定にも注意します。

解答・解説

正解はイです

この問題のテーマ

オブジェクト指向で、クラスの定義とインスタンスの生成がどのような関係にあるかを問う問題です。

解き方の考え方

まず、クラスを実体の属性や操作を定めるもの、インスタンスをその定義に基づいて生成される実体として捉えます。次に、各選択肢が定義する側と生成される側を正しく述べているか、生成数を不当に限定していないかを確かめます。

選択肢ごとの解説

  1. ×ア  インスタンスはクラスの仕様を定義したものである。
    アの「インスタンスが仕様を定義する」という説明では、定義する側が逆になっています。仕様を定めるのはクラスであり、インスタンスはその定義に基づく実体です。
  2. ○イ  クラスの定義に基づいてインスタンスが生成される。
    イは、クラスの定義を基にインスタンスを生成するという関係を述べています。定義と実体の役割が正しく対応しているため、これが正解です。
  3. ×ウ  一つのインスタンスに対して,複数のクラスが対応する。
    ウは、一つのインスタンスに複数のクラスが生成元として対応すると述べています。この問題で問われている基本的な生成関係では、インスタンスには生成元のクラスが対応します。
  4. ×エ  一つのクラスに対して,インスタンスはただ一つ存在する。
    エは、一つのクラスに対応するインスタンスを一つに限っています。しかし、同じクラスの定義から複数のインスタンスを生成できるため、この限定は誤りです。

POINT

  • クラスは実体に共通する属性や操作を定めます。
  • インスタンスは、クラスの定義に基づいて生成される実体です。
  • 一つのクラスから生成できるインスタンスの数は、一つに限られません。

※出典:平成30年度秋期 基本情報技術者試験 午前 問47