2012年11月19日月曜日

OOP|オブジェクト指向のおさらい|java

はじめまして。初級プログラマのMOTIです。
中級を目指して勉強中です・・。
何か間違いやアドバイスなどがありましたら教えてください。


では、オブジェクト指向のおさらいをします。
------------------------------------------------------------------------

オブジェクト指向設計は難しく工数がかかります
しっかりと分析(システムが何をすべきなのか)を行い
「クラス」、「インスタンス」、「オブジェクト」を正しく理解し
冗長性の少ない設計にすることで
ソフトウェアの開発工数(開発工数、テスト工数)を削減することができる
と言われています。


オブジェクト指向での大事な概念は以下になります。
  カプセル化(情報隠蔽)(encapsulation)
  インヘリタンス(継承)(inheritance)
  ポリモフィズム(多態性)(polymorphism)

・カプセル化はデータと処理を一体化し、アクセス修飾子により可視性を持たせ実現。
  これによりオブジェクトの独立性が高くなる。
  変更、保守が簡単になる。
 

  [アクセス修飾子の種類と可視性]
    なし(同じパッケージ内)
 
 
    piblic(同じパッケージ内、サブクラス)
    protected(同じパッケージ内)
    private(クラス内)
 

・インヘリタンスは、実装の継承、型の継承(型の継承はポリモフィズムに関係)により実現。
  これにより、似たクラスを作成するときには
  既存のクラスを継承し拡張できるため再利用性が高くなる。
  
  開発時間が短縮される。

  [継承]extends

・ポリモフィズムはインヘリタンスやインタフェース、オーバーライドにより実現。

 
  [アップキャスト:スーパークラスの型へサブクラスのインスタンスを入れる]
  継承により、振る舞いの違う2つのサブクラスを作った場合、
  そのスーパークラスを引数としたメソッドにその2つのサブクラスを渡す事ができる。
 
  [インタフェースのキャスト:どのクラスもどのインタフェースにキャストできる]
  実装により、同じインタフェースを実装した振る舞いの違う2つのクラスを作った場合、
  そのインタフェースを引数としたメソッドにその2つのクラスを渡すことができる。

   上記は、引数の型が同じでもインスタンスがちがうので
  同じ呼び出しでも異なる処理を実現できる。


  [オーバーライド:スーパークラスのメソッドをサブクラスで上書き]
  
 
  
  スーパークラスもしくはインタフェースのメソッドをサブクラスで上書きした場合

  上記は、インスタンスが違うので
 
 
 
 
  同じ呼び出しでも異なる処理を実現できる。

  [継承]extends
  [インタフェース]implements


細かいことは気にせず、ざっくりこんな感じで覚えています。



大事なことは 、この3この概念(カプセル化、インヘリタンス、ポリモフィズム)を胸に
  システムの分析を正しく行うこと
  オブジェクト指向を理解した設計にすること
  コーディングは設計に従い重複したコードを作らないようにすること
なのだと思います。


実際の職場では読みやすくシンプルなコードが好まれますので
きれいごとだと言われてしまいそうですが・・・
オブジェクト指向って知ってる人同士だと話がしやすいです。
・・・勉強しなくてもフレームワークを使っていれば自然と身につくかもしれませんね。

0 件のコメント:

コメントを投稿









ロリポップ!なら月々105円から

WordPress、MovableTypeなどの簡単インストール、

アクセス解析、ウェブメーラーが標準装備!






プロペシア