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

オブジェクト指向プログラミングを実現するために,クラスを設計する方法を学習してきた.オブジェクト指向の特徴を有効に活用するためには,クラスの設計において,次の要素をうまく生かすことが必要である.

継承

継承とは,あらかじめ定義されたクラスを引き継いで新しいクラスを定義することである.

このとき,新たに定義するクラスであるサブクラスでは,あらかじめ定義されているクラスであるスーパークラスが持つフィールドやメソッドを引き継ぐことができる.したがって,サブクラスでは新しいクラスに必要とする部分のみを定義すればよい.

これにより,継承するクラスでは,必要とする部分のみ定義すればよいので,スーパークラスで提供されている部分をうまく活用することができるようになる.スーパークラスが十分こなれているようであれば,新たに自分で作り直したりする手間なしに,スーパークラスが持つ機能を利用する.他方,新たに定義するクラスでは,自分が追加する部分のみに責任を持てばよい.

継承することを考えたとき,既存のクラスを活用できる利点だけでなく,スーパークラスでは共通する部分をまとめたり,抽象化するなどして整理する.これにより.それをサブクラスでは共通化することができない部分を分けたり,抽象化された動作を実装するなど,構造を整理することができる.

カプセル化

カプセル化とは,オブジェクトのメンバーを保護することで,オブジェクトの安全性を高めることができる. 

修飾子でアクセス範囲を制限することで勝手に値に触れることを防止することができる.また,値を操作するための手段となるメソッドを用意することで,決められた手段以外のアクセスを防ぐことができる.さらに,操作するためのメソッドにおいて入出力の値を管理することにより,不正な値が入ってくることを防ぐことや,ふさわしくない出力が生じないようにすることができる.

カプセル化により,そのオブジェクトを設計者が想定した通りに機能するようにすることができるようになる.

多態性(ポリモーフィズム)

ポリモーフィズムは,オーバーライドやオーバーロードにより,一つのメソッド状況に応じた振る舞いをすることである.

オーバーロードは,引数のパターン(シグネチャ)が異なる,同じ名称のメソッドを複数定義することができることである.オーバーライドは,継承したクラスで同じ名称,同じ引数のメソッドを再定義することができることである.

クラスを設計する側としては,引数の違いやクラスの違いごとに場合分けして別のメソッドを定義する必要がなくなる.他方,クラスを利用する側としては,場面に応じてメソッドを使い分けるたり,各メソッドを別々に覚えておく必要がなくなる.

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