Java
JavaGold

コピペプログラマーのJavaGold取得への道のり~1章 カプセル化とポリモーフィズム~


はじめに

 この記事はまだ合格体験記ではありません。これからそうなる予定ですが

 学習の結果がどれくらい染みついているかを実際に外の世界に出してみようと思い、

 記事にした次第です。


カプセル化とは

 私の認識では、getter/setter作ってメンバ変数をprivateにすればいいんだろ、

Eclipseさんよろしく!ぐらいの認識でした。

 Javaでのカプセル化を行う意図は、「フィールドの値に意図しない値が入らないよう、フィールドの値を操作するときは必ず操作用のメソッドを経由して操作を行う。」という方針で

 コードを作成するためです。

 わざわざ直接いじれるものの操作を限定することによるメリットは、以下の2点があります。


1.ソフトウェアの挙動が安定する。

「フィールドに意図をしない値が入らない」の部分に該当します。

 よく書籍などでは、リモコンやエアコン等々で例えられることが多いと思います。

カプセル化を適切に行うと、そのメンバ変数へ格納される値に制限を加えることができます。


2.ソフトウェアの保守性が上がる。

 「必ず操作用のメソッドを経由する」の部分に該当します。

 システムの稼働中において、カプセル化をされているメンバ変数がエラーの原因となった場合、その操作用のメソッドの処理を確認すれば、意図した値のみが格納されているかがわかりやすくなります。


ポリモーフィズム

クラスがis-a関係(継承関係)にある場合に、単一の型で複数の型を扱う事のできる仕組みを言います。このような型関係をポリモーフィックな型というらしいです。

実際にポリモーフィズムの実装でメリットがあるのは、継承関係にあるクラスや実装関係にあるinterfaceをオーバーライドした時です。

 ポリモーフィックな型を呼び出す呼び出し側のメソッドでは、コンパイル時に決定される型を引数に受け取るように記述し、呼び出し側のメソッドを呼び出すときには、任意のポリモーフィックな型を渡してやれば、渡した型に該当するメソッドを判断し呼び出すことができます。


終わりに

追記、修正を今後していく予定です。ポリモーフィズムはまだまだふわっとしていますが、使いこなせていればラムダ式やストリームAPIよりもカッコよく映りそうですね。