オブジェクト指向プログラミング、つまり OOP は、オブジェクトを中心にコードを整理する考え方です。オブジェクトは、関連するデータとそのデータを扱うメソッドをひとまとめにするので、銀行口座、ショッピングカート、ゲームのキャラクターのようなものを、プログラムの中でより直接的に表現できます。
OOP の中心にあるのは、クラスとオブジェクトという 2 つの用語です。クラスは、あるものが何を持ち、何ができるかを定義します。オブジェクトは、そのクラスから作られた実際の 1 つのインスタンスです。
オブジェクト指向プログラミングとは何か
クラスを設計図、オブジェクトをその設計図から作られた実物だと考えてみてください。BankAccount クラスは、残高と、deposit や withdraw のようなメソッドを定義できます。Alice の口座と Bob の口座は、同じルールに従う別々の 2 つのオブジェクトですが、それぞれ異なる残高を持ちます。
このため、OOP では 状態 と 振る舞い をひとまとめにすると言われます。状態とは、オブジェクトが保持するデータのことです。振る舞いとは、そのオブジェクトが提供する操作のことです。
OOP がコードを追いやすくする理由
OOP は、プログラムの中に独自のルールを持つはっきりした対象があるときに役立ちます。たとえば残高が口座に属するなら、残高を変更するコードも通常はその口座に属するべきです。そうすると、どこにどんな責任があるのかがわかりやすくなります。
ただし、どんなプログラムでも何でもかんでもクラスを使うべき、という意味ではありません。OOP は、状態と振る舞いをまとめることで設計がより明確になるときに有効です。問題が主に単純なデータ処理であれば、普通の関数のほうが読みやすいこともあります。
BankAccount クラスを使った OOP の例
次の小さな例は、基本的な考え方を示しています。