Javaのお勉強

JavaOOPなので、そのOOPにおける重要ポイントの
カプセル化
ポリモーフィズム
をしっかりおさえよう☆

カプセル化

私はこう考える。
概念を考える。
カプセル化とは、カプセルすることである。カプセルで何かを閉じ込めることである。
カプセルで閉じる理由は、他の人に容易に見られないようにする為、
汚されないようにする為、
とっいったようなことがあげられると思う。

実際のカプセル化の説明としては
他のクラスに自分のクラスのプロパティーに用意にアクセスさせないようにする。
もう一つ、ソースコードで変更が加えられる部分(もしくは、将来、後々変更が加えられる可能性がある部分)
を、切り離して別関数にしたり、クラスにしたりして分離すること。

の二点が挙げられる。

概念と実際のカブセル化を照らし合わせる。

うん、最初の理由は、他の人に見られないようにする、に当てはまってるね。具体的に言えば、
メンバーをprivateにして、他のクラスから見れないようにして、かつ、setter, getterで特定の方法でのアクセス方法を制限している。これはカプセルを開ける・閉じる行為に照らし合わせられるだろう。

二つ目の変更部分の隠蔽、これはプログラミング的にいえば、変更が起きる部分、もしくわは何度も繰り返しさせる処理は
関数かしましょう。っていうのと同じだと思う。カプセルの例に例えるなら、軍隊の大佐が部下に対しての命令を
カプセルの中に入れる。そして、大佐は毎朝部下にそのカプセルの中身を見てそれを実行するように伝えておく。
カプセルの中身を毎日変更される。が部下のしっておくべきことは、カプセルの中身をみることのみ。このおかげで、大佐は
毎日、違ったな命令のないようを逐一、部下に説明しなくていいのっだ。



ポリモーフィズム
初心者がJavaを“超高速”で学ぶためのコツ
ポリモーフィズムは「多様性」という意味。
wikipediaの説明は以下
ポリモーフィズムあるいはポリモルフィズム(Polymorphism)とは、プログラミング言語の型システムの性質を表すもので、プログラミング言語の各要素(定数、変数、式、オブジェクト、関数、メソッドなど)についてそれらが複数の型に属することを許すという性質を指す。多態性、多相性、多様性とも呼ばれる。

簡単に言ってしまえば、
同じ関数なのに違う振る舞いをする(させる)こと。

あるクラス Personがあって

class Person{
  public string name="steevo"
  public void talk(){ print name; }
  public void talk(string str){ print str; }
}  

という定義であったばあい、同じtalk関数でも違う振る舞いをする。これはひとつのポリモーフィズムといえる。
個の例では、オーバーロードを用いたポリモーフィズムの例といえる。

他にも、classの継承とオーバライドをつかったポリモーフィズムもできる、ってゆうか典型的。

class Person{
  abstract public void talk();
}  
class Male{
  public void talk(){print " i am man"}
}
class Female{
  public void talk(){print " i am woman"}
}

のように、インスタンスで同じ関数だけど、振る舞いがちがう。

さらにjavaは単一継承しかできないのもあって、インターフェースでよくポリモーフィズムを実現している。

別々のクラスだけど、同じ、関数名で違う振る舞いを実装してる。