Java -オブジェクト指向-
オブジェクトとクラス
クラスを元にコンピュータのメモリ内にオブジェクトを生成します。
これをインスタンスといいます。
クラス間の関係
クラス間には、関連、集約、コンポジット、汎化、依存など様々な関係があります。
is-a関係(汎化)
2つクラスの一方がスーパークラス、もう一方がスーパークラスの属性や操作を継承したサブクラスの関係にある時これをis-a関係または、汎化の関係にあるといいます。
is-a関係をJava言語でコード化する場合は、継承を表すextendsキーワードを用いて定義します。
has-a関係(集約)
一方のクラスが他方のクラスの所有する関係をhas-a関係または、集約の関係にあるといいます。
オブジェクト指向の特徴
1.継承
あるクラス定義された属性や操作を、他のクラスでさらに拡張して利用できる機能のことです。
これにより、ソースコードが大幅に削減でき、クラスの再利用性が高まります。
2.カプセル化と情報隠蔽
データをクラス内部に置き、そのデータの読み書きを行う操作と一体化することをカプセル化 といいます。
外部からのデータアクセスの制限により、データの整合性を保つことができ、より一層保守性が向上します。
カプセル化されたデータに外部からアクセスする場合は、公開されたメソッドから行います。
データや内部で利用する操作を非公開にすることを情報隠蔽といいます。
3.疎結合と高い凝集度
オブジェクト指向では、クラスと別のクラスの結合の度合いは、できるだけ弱くします(疎結合)
また、1つのクラスには特定の目的に絞ります。目的が絞られている場合、そのクラスは高い凝集度を持つといいます。
これらのことにより個々のクラスの独立性が高まり、再利用しやすくなります。
4.ポリモフィズムの実現
クラスと他のクラスが継承関係にある場合、オーバーライドを利用すると同じ操作名で異なる処理を実行する ことができます。
このことをポリモフィズムといいます。
ポリモフィズムもコードの削減や再利用化につながります。