オブジェクト指向の解説(基本情報技術者シラバス用語)

目次

オブジェクト指向とは

オブジェクト指向(オブジェクトしこう)とは、ソフトウェア開発における設計思想(考え方)の一つです。プログラムを単なる命令の並びとして捉えるのではなく、データとそれを操作する処理をひとまとめにした「オブジェクト(モノ)」として定義し、そのオブジェクト同士が互いにメッセージをやり取りしながら全体を動かしていくというアプローチです。現実世界に存在する「車」や「人間」「注文」といったモノや概念をプログラム上に再現するため、システム全体の構造が理解しやすくなり、大規模なソフトウェアでも部品の再利用や修正が容易になるという特徴があります。

具体例

例えば、RPG(ロールプレイングゲーム)を作る際、登場するキャラクターを「オブジェクト」として設計します。キャラクターには「HP」や「攻撃力」といったデータ(属性)と、「攻撃する」「回復する」といった行動(メソッド)が紐付けられ、それぞれが独立したオブジェクトとして行動します。

もう少し詳しく

オブジェクト指向が登場する以前は、プログラムの処理手順(ロジック)とデータは別々に管理されていました。しかし、システムが大規模化するにつれて、「どの関数がどのデータを書き換えているのか分からない」といった問題が頻発し、プログラムの保守や改修が極めて困難になりました。これを解決するために生まれたのがオブジェクト指向です。データ(属性:プロパティやフィールドとも呼ばれます)と、そのデータ専用の処理(メソッド)を「クラス」という一つの設計図の中にまとめ、「オブジェクト」というカプセルにして管理します。オブジェクト指向プログラミング(OOP)には、システムを効率よく構築するための三大要素と呼ばれる重要な概念があります。データの不正な書き換えを防ぐ「カプセル化」、既存の設計図を拡張して新しい設計図を作る「継承」、そして同じ命令でも受け取るオブジェクトによって異なる振る舞いをさせる「ポリモーフィズム(多態性)」です。これらを活用することで、変更に強く、複数人での開発にも適した柔軟なシステムを設計することができます。Java、C#、Python、Rubyなど、現代の主要なプログラミング言語の多くがオブジェクト指向をサポートしています。

試験でのポイント

情報処理技術者試験において、オブジェクト指向に関する問題は午前試験・午後試験(科目B)の両方で頻出する最重要テーマの一つです。試験では、オブジェクト指向の三大要素である「カプセル化(隠蔽)」「継承(インヘリタンス)」「多様性(ポリモーフィズム)」のそれぞれの意味と役割を正確に理解し、区別できることが求められます。例えば、「親クラスの性質を子クラスが引き継ぐこと」という説明が出れば「継承」、「内部のデータ構造を隠蔽し、外部から直接操作できないようにすること」であれば「カプセル化」と即座に結びつけられるようにしておきましょう。また、オブジェクトの設計図である「クラス」と、そこから生成された実体である「インスタンス」の違いを問う問題も定番です。UML(統一モデリング言語)を用いたクラス図を読み解き、クラス間の関係(集約、汎化など)を把握する問題もよく出題されるため、関連する図法にも慣れておく必要があります。

関連する用語

クラス、インスタンス、カプセル化、継承、ポリモーフィズム

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ