『Javaのオブジェクト指向がゼッタイにわかる本―最初からそう教えてくれればいいのに!』を読んだメモ

オブジェクト指向はよく分からないしあまり考えずに使い方だけ覚えてたけど、 この本を読んでオブジェクト指向がどう具体的に役に立つのか初めてすこし理解できた気がする。 私みたいにオブジェクト指向の意味をほとんど考えずにクラスの文法だけを覚えてるようならば得るものは大きいと思う一冊だと感じた。

以下はこの本のメモ

オブジェクトとは

  • オブジェクトとは「現実に有るモノ」
  • オブジェクトはデータと振る舞いをまとめたモノ
  • オブジェクト同士はメッセージでやり取りする

モデリング

機能(動詞)、データ(名詞)、役割などで分類して、それらをもとに設計図を作る。

UMLを勉強すべし

カプセル化

publicメソッドは最低限のものだけを作成する。 フィールドはすべてprivateにして、必要に応じてアクセサメソッドを作成する。 カプセル化により外部との依存性が低い疎結合なクラスになるので、 機能の変更や追加に強くなり、また再利用性が高く使い回しが容易になる。

継承

継承により親クラスに類似したクラスの作成が容易にできるけど、 継承すると別クラスとの依存性が高まり再利用性が低くなる。 たくさん継承すると依存性が高くなってしまうので、多くのクラスを継承することはあまりない。 継承の必要性がないならば「委譲」により他のクラスを利用すべき。 継承は基本的に「is-a関係」を満たすように行う。

Liskov Substitution Principleでググる。 基底クラスを継承した派生クラスは基底クラスと同様に扱えるかどうか。

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

同じ名前の複数のメソッドがそれぞれ異なる機能を持てる。 サブクラスはスーパークラスの一種として扱える。 型にスーパークラス・インターフェイスを指定した変数は そのスーパークラスを継承したサブクラスの参照を持つことができる。

同じ名前のメソッドで違う動作をさせることができるため、 機能を追加したい場合には新しいサブクラスを定義して メソッドをオーバーライドをしてやればいいことになる。

このポリモーフィズムを活用することにより、 既存のソースを書き換えずに機能を追加することが容易となり、 再利用性・保守性が高いプログラムとなる。

if などで条件分岐するような部分を ポリモーフィズムで置き換えられる。

Javaのオブジェクト指向がゼッタイにわかる本―最初からそう教えてくれればいいのに! Javaのオブジェクト指向がゼッタイにわかる本―最初からそう教えてくれればいいのに!

Share
関連記事