はじめまして。初級プログラマのMOTIです。
中級を目指して勉強中です・・。
何か間違いやアドバイスなどがありましたら教えてください。
では、オブジェクト指向のおさらいをします。
------------------------------------------------------------------------
オブジェクト指向設計は難しく工数がかかりますが
しっかりと分析(システムが何をすべきなのか)を行い
「クラス」、「インスタンス」、「オブジェクト」を正しく理解し
冗長性の少ない設計にすることで
ソフトウェアの開発工数(開発工数、テスト工数)を削減することができる
と言われています。
オブジェクト指向での大事な概念は以下になります。
カプセル化(情報隠蔽)(encapsulation)
インヘリタンス(継承)(inheritance)
ポリモフィズム(多態性)(polymorphism)
・カプセル化はデータと処理を一体化し、アクセス修飾子により可視性を持たせ実現。
これによりオブジェクトの独立性が高くなる。
変更、保守が簡単になる。
[アクセス修飾子の種類と可視性]
なし(同じパッケージ内)
piblic(同じパッケージ内、サブクラス)
protected(同じパッケージ内)
private(クラス内)
・インヘリタンスは、実装の継承、型の継承(型の継承はポリモフィズムに関係)により実現。
これにより、似たクラスを作成するときには
既存のクラスを継承し拡張できるため再利用性が高くなる。
開発時間が短縮される。
[継承]extends
・ポリモフィズムはインヘリタンスやインタフェース、オーバーライドにより実現。
[アップキャスト:スーパークラスの型へサブクラスのインスタンスを入れる]
継承により、振る舞いの違う2つのサブクラスを作った場合、
そのスーパークラスを引数としたメソッドにその2つのサブクラスを渡す事ができる。
[インタフェースのキャスト:どのクラスもどのインタフェースにキャストできる]
実装により、同じインタフェースを実装した振る舞いの違う2つのクラスを作った場合、
そのインタフェースを引数としたメソッドにその2つのクラスを渡すことができる。
上記は、引数の型が同じでもインスタンスがちがうので
同じ呼び出しでも異なる処理を実現できる。
[オーバーライド:スーパークラスのメソッドをサブクラスで上書き]
スーパークラスもしくはインタフェースのメソッドをサブクラスで上書きした場合
上記は、インスタンスが違うので
同じ呼び出しでも異なる処理を実現できる。
[継承]extends
[インタフェース]implements
細かいことは気にせず、ざっくりこんな感じで覚えています。
大事なことは 、この3この概念(カプセル化、インヘリタンス、ポリモフィズム)を胸に
システムの分析を正しく行うこと
オブジェクト指向を理解した設計にすること
コーディングは設計に従い重複したコードを作らないようにすること
なのだと思います。
実際の職場では読みやすくシンプルなコードが好まれますので
きれいごとだと言われてしまいそうですが・・・
オブジェクト指向って知ってる人同士だと話がしやすいです。
・・・勉強しなくてもフレームワークを使っていれば自然と身につくかもしれませんね。
0 件のコメント:
コメントを投稿