オブジェクト指向とは「モノ」を中心に考える設計思想
オブジェクト指向とは、プログラムを組み立てる際の、考え方・設計のスタイルの1つです。データと、そのデータに関する処理を、「オブジェクト(モノ)」という1つのまとまりとして捉え、その組み合わせでプログラム全体を作り上げていく、という考え方をします。
「車」を例に考えてみる
オブジェクト指向は、現実世界の「モノ」に例えるとイメージしやすくなります。「車」というオブジェクトを考えてみましょう。
- 車には「色」「速度」「燃料の残量」といった**データ(情報)**があります
- 車には「走る」「止まる」「給油する」といった**振る舞い(できること)**があります
オブジェクト指向のプログラミングでは、この「データ」と「振る舞い」をセットにして、「車」という1つのオブジェクトとして定義します。そして、実際のプログラムの中では、この「車」という設計図(専門的には「クラス」と呼びます)をもとに、「赤い車」「青い車」といった、具体的な個々の車(オブジェクト、専門的には「インスタンス」と呼びます)を必要なだけ作り出して使うことができます。
なぜこの考え方が広まったのか
オブジェクト指向が広まる前は、プログラムに必要な「データ」と「処理」がバラバラに書かれていることが多く、プログラムが複雑になるほど、どこで何が起きているか把握しにくくなるという問題がありました。データと処理をオブジェクトという単位でまとめることで、以下のようなメリットが得られます。
- 1つのオブジェクトの中で完結しているため、プログラム全体を見通しやすくなる
- 一度作ったオブジェクトの設計図(クラス)を、別の場所でも再利用しやすくなる
- 修正が必要な時、影響範囲を特定しやすくなる
覚えておきたい3つの基本用語
オブジェクト指向を学ぶ際、次の3つの用語がよく登場します。
- カプセル化:オブジェクトの内部のデータを、外部から直接いじれないように保護し、決められた方法(振る舞い)を通じてだけ操作できるようにする考え方。車で言えば、エンジンの内部構造を直接触らせず、アクセルペダルという決められた操作だけで加速できるようにするイメージです
- 継承:あるクラスの特徴を引き継いで、新しいクラスを作る仕組み。「車」というクラスを土台に、「スポーツカー」という、より specific な特徴を追加したクラスを作ることができます
- ポリモーフィズム(多態性):同じ指示でも、オブジェクトの種類によって異なる振る舞いをする仕組み。「走る」という同じ指示でも、車と自転車ではその実現方法が異なる、というイメージです
これらは最初は難しく感じられますが、「車」のような身近な例に立ち返りながら学ぶと、少しずつ理解が深まっていきます。
現代の多くの言語で採用されている
Java、Python、JavaScriptなど、現在広く使われている多くのプログラミング言語が、このオブジェクト指向の考え方を取り入れています。そのため、1つの言語でオブジェクト指向の基本を理解しておくと、他の言語を学ぶ際にも応用が効きやすくなります。
実際にコードを書きながら確認し、初心者がつまずきやすいと感じたポイントを中心にまとめました。
押さえておきたいポイント
オブジェクト指向は、「データ」と「処理」を、現実世界の「モノ」のようにひとまとまりにして考える設計思想です。最初は掴みにくい概念ですが、身近な「モノ」に例えて考えると理解が進みます。クラス・インスタンス・カプセル化といった用語も、少しずつ紐づけて覚えていきましょう。