対象試験と出題頻度

オブジェクト(Object)は、基本情報技術者・応用情報技術者で出題されるテーマです。

オブジェクト指向言語の基本概念を問う問題で必ず登場し、「クラス」「インスタンス」との関係を正確に区別できるかがポイントになります。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)必ず覚えておくべき

用語の定義

情報処理試験を勉強していると、「オブジェクトって結局何?クラスやインスタンスとどう違うの?」と混乱しがちです。

オブジェクト(Object)とは、一言で言うと

 「データ(属性)と処理(メソッド)をひとまとめにした”モノ”」

のことです。

イメージとしては、「テレビのリモコン」です。

リモコンには「現在のチャンネル番号」「音量」といったデータと、「チャンネルを変える」「音量を上げる」といった操作がひとつの筐体に収まっています。データと操作がセットで1つにまとまっている。これがオブジェクトの考え方です。

📊 オブジェクトの基本情報

項目 内容
英語名 Object(=「もの」「対象」)
構成要素 属性(データ/フィールド)+ メソッド(操作/振る舞い)
関連用語 クラス、インスタンス、カプセル化、継承、多相性(ポリモーフィズム)

解説

手続き型言語では「データの定義」と「そのデータを操作する関数」が別々に存在していました。プログラムの規模が大きくなると、どの関数がどのデータを扱っているか追いきれず、修正時の影響範囲が読めなくなる問題が生じます。

この問題を解決するために、「関連するデータと操作をひとまとめにして扱おう」という発想が生まれました。それがオブジェクトです。

クラス・インスタンスとの関係

ここだけは確実に押さえてください。オブジェクト、クラス、インスタンスの3つは明確に役割が異なります。

📊 クラス → インスタンス → オブジェクトの関係図

クラス

設計図・型紙
(属性と操作を定義)

インスタンス化

new演算子などで
実体を生成

オブジェクト
(=インスタンス)

具体的なデータを
持った実体

※ 試験ではインスタンスとオブジェクトをほぼ同義として扱うケースが多い

クラスが「たい焼きの型」だとすると、その型で焼いた1個1個のたい焼きがインスタンス(=オブジェクト)です。

型そのものは食べられませんが、型から作った実体は「あんこ入り」「クリーム入り」とそれぞれ固有のデータを持ちます。

▶ コードで見るクラスとオブジェクトの関係(クリックで展開)

Javaを例にすると、以下のような関係になります。

// クラスの定義(設計図)
class Dog {
    String name;      // 属性(データ)
    int age;           // 属性(データ)

    void bark() {      // メソッド(操作)
        System.out.println(name + "がワンと鳴いた");
    }
}

// インスタンス化(オブジェクトの生成)
Dog myDog = new Dog();
myDog.name = "ポチ";   // 具体的なデータを持つ
myDog.age = 3;
myDog.bark();           // → ポチがワンと鳴いた

Dogクラス(設計図)から new で生成した myDog がオブジェクト(インスタンス)です。「ポチ」「3歳」という具体的なデータを保持しています。

オブジェクト指向の三大要素

オブジェクトを中心に据えた設計思想を「オブジェクト指向」と呼び、以下の三大要素で成り立っています。

📊 オブジェクト指向の三大要素

要素 意味 日常の例え
カプセル化 データとメソッドをまとめ、内部の実装を外部から隠蔽する 自動販売機:ボタンを押せばジュースが出る。内部の仕組みを知る必要はない
継承 既存のクラスの属性・メソッドを引き継いで新しいクラスを定義する 「動物」クラスの特徴を「犬」クラスが引き継ぎ、差分だけ追加する
多相性
(ポリモーフィズム)
同じ命令でも、受け取る側の種類によって異なる動作をする 「鳴け」と命令すると犬は「ワン」、猫は「ニャー」と応じる

これらの要素はすべて「オブジェクトをどう設計・利用するか」を支える概念です。個々の詳細は別記事で扱いますが、概要だけは頭に入れておいてください。

▶ メッセージパッシングとは?(クリックで展開)

オブジェクト同士が連携するとき、あるオブジェクトから別のオブジェクトのメソッドを呼び出す仕組みを「メッセージパッシング」と呼びます。

先ほどのコード例で myDog.bark() と書いた部分がまさにメッセージパッシングです。「myDogオブジェクトにbarkというメッセージを送っている」と読みます。

試験では「オブジェクト間の通信手段=メッセージパッシング」として選択肢に登場する場合があります。

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 オブジェクトの核心を3行で

・属性(データ)とメソッド(操作)をひとまとめにした実体
・クラスが設計図、そこから生成された実体がインスタンス(≒オブジェクト)
・カプセル化・継承・多相性の三大要素がオブジェクト指向の土台


試験ではこう出る!

オブジェクトの概念は、科目Aの知識問題と科目Bのプログラム読解問題の両方で繰り返し出題されています。

出題パターンは大きく3つに分かれます。

📊 過去問での出題実績(クリックして表示)
試験回 出題内容 問われたポイント
FE R7年度
科目A 問12
異なるクラスのオブジェクトを同一インタフェースで操作したとき、クラスに応じた異なる動作を可能にする仕組みを問う問題。 ・正解は「多相性(ポリモーフィズム)」
・委譲・継承・コンポジションがひっかけ
FE サンプル
科目A 問38
データとメソッドを一つにまとめ、実装の詳細を外部から隠蔽する仕組みを問う問題。 ・正解は「カプセル化」
・インスタンス、クラスタ化がひっかけ
AP H28秋
午前 問47
クラスに関する記述として適切なものを選ぶ問題。 ・「共通する性質を定義したものがクラス」が正解
・インスタンス変数とクラス変数の混同がひっかけ

📝 IPA試験での出題パターン

パターン1:「〇〇の仕組みの名前を選べ」
オブジェクト指向の三大要素(カプセル化・継承・多相性)の説明文を示し、該当する用語を選ばせる形式。FE サンプル科目A 問38やFE R7年度 科目A 問12がこの典型。

 

パターン2:「クラスに関する適切な記述を選べ」
AP H28秋 午前 問47のように、クラス・インスタンス・継承に関する記述の正誤を判定させる形式。「インスタンス変数は共有データ」「スーパークラスがサブクラスを継承する」といった語句の入れ替えトラップに注意。

 

パターン3:科目Bのプログラム読解
擬似言語でクラス定義・インスタンス生成・メソッド呼び出しを含むコードが出題され、実行結果を問う形式。概念の理解だけでなく、コードを追う力が必要になる。

 

試験ではここまででOKです。「属性+メソッド=オブジェクト」「クラス=設計図、インスタンス=実体」「三大要素の名前と意味」を正確に対応づけられれば得点できます。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. オブジェクト指向プログラミングにおける「オブジェクト」の説明として、最も適切なものはどれでしょうか?

  • A. データ(属性)と処理(メソッド)をひとまとめにした実体であり、クラスの定義に基づいて生成される。
  • B. 既存のクラスの属性やメソッドを引き継ぎ、差分だけを追加して新しいクラスを定義する仕組みである。
  • C. 同じメッセージを送っても受け取り側の種類によって異なる動作をする性質のことである。

正解と解説を見る

正解:A

解説:
オブジェクトは、属性(データ)とメソッド(操作)をひとまとめにした実体であり、クラスを設計図としてインスタンス化(生成)することで利用します。

選択肢Bは「継承(インヘリタンス)」の説明です。スーパークラスの特性をサブクラスが引き継ぐ仕組みであり、オブジェクトそのものの定義ではありません。選択肢Cは「多相性(ポリモーフィズム)」の説明です。同一のインタフェースでクラスごとに異なる振る舞いをする性質を指し、オブジェクトの構成要素に関する記述ではありません。


よくある質問(FAQ)

Q. 「オブジェクト」と「インスタンス」は完全に同じ意味ですか?

厳密には微妙に異なります。「オブジェクト」はデータと操作をまとめた実体全般を指す広い概念です。「インスタンス」は特定のクラスから生成された実体を強調する場合に使います。ただし、IPA試験の範囲ではほぼ同義として扱われるため、区別が問われることはありません。「インスタンス≒オブジェクト」と割り切って問題ありません。

Q. オブジェクト指向でない言語にはオブジェクトという概念はないのですか?

C言語のような手続き型言語には「オブジェクト」というキーワードは出てきません。ただし、構造体(struct)を使えばデータをまとめることは可能です。オブジェクト指向言語との違いは、構造体にはメソッドを紐づけてカプセル化や継承を行う仕組みが標準で備わっていない点です。

Q. 実務ではオブジェクト指向をどのくらい意識しますか?

Java、C#、Pythonなど主要な開発言語はすべてオブジェクト指向の仕組みを持っているため、実務では日常的にクラス定義やインスタンス生成を行います。特に大規模開発では、カプセル化による影響範囲の局所化や、継承による共通処理の再利用が設計品質を左右します。試験知識がそのまま実務の基礎になる分野です。