オブジェクト指向って何? ~身の回りのもので例えてみよう~
オブジェクト指向とは、プログラミングの考え方の一つで、「モノ(オブジェクト)」 を中心にプログラムを組み立てていく方法です。
身のの回りのもので例えてみましょう。例えば、「犬」というモノについて考えてみます。
犬には、以下のような 特徴(データ) がありますよね。
- 名前:ポチ
- 種類:柴犬
- 年齢:3歳
- 色:茶色
そして、犬は以下のような 行動(機能) をします。
- 吠える
- 走る
- 食べる
- 寝る
オブジェクト指向では、この「犬」というモノを一つの オブジェクト として捉え、その特徴(データ)と行動(機能)をまとめて扱います。
図で表すと、こんなイメージです。
+-----------------+ +-----------------+
| 犬 | | 猫 |
+-----------------+ +-----------------+
| 名前:ポチ | | 名前:タマ |
| 種類:柴犬 | | 種類:ペルシャ |
| 年齢:3歳 | | 年齢:5歳 |
| 色:茶色 | | 色:白 |
+-----------------+ +-----------------+
| 吠える() | | 鳴く() |
| 走る() | | 走る() |
| 食べる() | | 食べる() |
| 寝る() | | 寝る() |
+-----------------+ +-----------------+
このように、それぞれの「モノ」が持つデータと機能がセットになっているイメージです。
オブジェクト指向のメリット
オブジェクト指向を使うと、プログラムがより整理され、以下のようないいことがあります。
- 理解しやすい: 現実世界のモノに近い考え方なので、プログラムの構造が分かりやすくなります。
- 再利用しやすい: 作成したオブジェクトは、他のプログラムでも利用できる場合があります。例えば、「動物」というオブジェクトを作っておけば、「犬」や「猫」といったオブジェクトで共通する部分を再利用できます。
- 変更に強い: オブジェクト内部の変更が、他の部分に影響を与えにくい構造になります。
オブジェクト指向の主な要素
オブジェクト指向を理解するために、いくつかの重要な要素があります。
- クラス (Class): オブジェクトの設計図のようなものです。「犬クラス」という設計図があれば、そこから「ポチ」や「ハチ」といった具体的な犬のオブジェクトをいくつも作ることができます。図で表すと、こんなイメージです。

2. オブジェクト (Object): クラスという設計図を元に実際に作られた「モノ」のことです。上記の例では、「ポチ」や「ハチ」がオブジェクトにあたります。オブジェクトは、クラスで定義された特徴(データ)と機能を持っています。
3. カプセル化 (Encapsulation): オブジェクトが持つデータと機能を一つにまとめ、外部から直接データを触られないように保護する考え方です。これにより、オブジェクトの内部構造が隠蔽され、安全性が高まります。イメージ: オブジェクトは、データと機能を内側に閉じ込めた箱のようなものです。外部からは、決められた方法(機能)を通してのみ、データにアクセスできます。
4. 継承 (Inheritance): あるクラスの持つ特徴や機能を、別の新しいクラスが引き継ぐ仕組みです。例えば、「動物クラス」を作り、そこから「犬クラス」や「猫クラス」が「動物クラス」の基本的な特徴(歩く、呼吸するなど)を受け継ぎつつ、それぞれの固有の特徴(犬なら吠える、猫なら鳴くなど)を持つことができます。図で表すと、こんなイメージです。

5. ポリモーフィズム (Polymorphism): 同じ名前の機能でも、オブジェクトの種類によって異なる動作をさせる仕組みです。例えば、「動物クラス」に「鳴く」という機能があった場合、「犬オブジェクト」は「ワンワン」と鳴き、「猫オブジェクト」は「ニャーニャー」と鳴く、といった具合です。イメージ: 「鳴く」という指示に対して、犬は犬の鳴き方で、猫は猫の鳴き方で応答する、というように、同じ指示でも異なる振る舞いをします。
まとめ
オブジェクト指向は、プログラムを「モノ」とその特徴・機能として捉えることで、より構造的で理解しやすく、再利用性の高いプログラムを作成するための考え方です。
最初は少し難しく感じるかもしれませんが、実際にプログラミングをしながら、これらの概念に触れていくことで、徐々に理解が深まっていくと思います。
この解説が、オブジェクト指向の理解の第一歩となれば幸いです。