オブジェクト指向設計
オブジェクト単位にシステムを設計する。オブジェクト同士がお互いにメッセージをやり取りしながら処理していく
オブジェクト
データ(属性)とそれを操作するメソッド(手続)を一体化したもの
カプセル化
オブジェクト内にあるデータとメソッドを、オブジェクトの外部から隠蔽すること。
また、オブジェクトの独立性を高めることができる。
オブジェクトに対して出来る手段がメッセージを送ること(メッセージパッシング)。
クラスとインスタンス
クラス
データとメソッドを持ったオブジェクトの雛形を定義したもの。設計図のようなもの
インスタンス
クラスを基にして生成されたオブジェクト。
イメージ:たこ焼きをイメージする。出来上がった、たこ焼きがインスタンスで、その器械がクラス。
継承とポリモフィズム
既存のクラスから、新しいクラスを生成することができる。元のクラスをスーパークラス(基底クラス・親クラス)。新しく生成したクラスをサブクラス(派生クラス・子クラス)という。
継承
継承(インヘリタンス)はスーパークラスで定義しているデータやメソッドを、サブクラスに引き継ぐこと。
ポリモフィズム
スーパークラスのメソッドを一部変えて使いときは、サブクラスに同じ名前で内容を変えて再定義する。これをオーバーライドという。
同一のメッセージでも、各インスタンスで特有の処理を行うことができる。ポリモフィズム(多相性・多態性)といわれている。
委譲
あるオブジェクトに依頼されたメッセージの処理を、そのオブジェクトの内部から他のオブジェクトに委ねること。
クラスの階層化
汎化(抽象化) - 特化
汎化(抽象化)は、下位クラスの共通部分を抽出して上位クラスを定義すること。逆を特化という。
「下位クラス is a 上位クラス」の関係
集約 - 分解
集約は、上位クラスが下位クラスの組合せで構成されていること。逆を分解という。
「集約 - 分解」には、「下位クラス is a part of 上位クラス」の関係