内部設計
■ オブジェクト指向。Object Oriented。 データとそれを操作する手続きを オブジェクトというひとまとまりの単位として一体化し、 このオブジェクトを組み合わせる形でプログラムを記述する考え方。 データを単に静的なものではなく、 データを操作するプロセスをも個々のデータに固有の手続きとして定義する。 データ中心アプローチ(DOA)の概念をさらに進め、これを具現化したもの。 ■ オブジェクト。 オブジェクト指向で扱うオブジェクトとは、 単なる静的データそのものではなく、 データ(属性)とそのデータに対する手続き(メソッド)を1つにまとめたものである。 オブジェクト指向では、 このようにデータとメソッドを一体化することをカプセル化という。 カプセル化により、オブジェクトの実装の詳細を、外部から隠蔽することができる。 オブジェクトに対する唯一のアクセス手段はメッセージである。 外部機能は、オブジェクトにメッセージを送信してメソッドを起動することで、 間接的にデータを操作することができる。 ■ クラスとインスタンス。 いくつかの類似オブジェクトの共通する性質を抜き出して、 その属性や手続きを一般化・抽象化して新たに定義したものを、クラスという。 オブジェクト指向では、このクラスを利用してオブジェクトを定義する。 一方で、このクラスの使用宣言をした上で生成される、 具体的な値を持つ個々のオブジェクト(実体)をインスタンスという。 ■ is-a関係。 クラスは階層構造を持つことができる。 クラスの階層構造において、 あるクラスから見て上位のクラスをスーパークラスといい、 下位のクラスをサブクラスという。 上位クラスの性質を分解して下位クラスを定義することを特化、 複数の下位クラスまとめて上位クラスを定義することを汎化という。 両者の関係を、汎化-特化関係という。 あるいは、is-a関係と呼ばれることもある。 下位クラスis-a上位クラス という関係があるためである。 ■ インヘリタンス。Inheritance。 既存クラスの下位に類似する新たなクラスを定義するとき、 上位クラスが定義した属性やメソッドを下位クラスが継承したうえで、 相違点だけを記述することをインヘリタンス(継承)という。 ■ part-of関係。 複数のオブジェクトを組み合わせてつくられたオブジェクトを、複合オブジェクトと呼ぶ。 複合オブジェクトとは、自身を構成するオブジェクトの1つでも欠けた場合、 オブジェクトとして成立しないものをいう。 このとき両者の関係を、集約-分解関係、またはpart-of関係と呼ぶ。 下位オブジェクトis-a-part-of上位オブジェクトの関係があるためである。 part-of関係は、has-a関係と呼ばれることもある。 上位オブジェクトhas-a下位オブジェクトの関係があるためである。 ■ ポリモルフィズム。 同一のメッセージを複数のオブジェクトに送っても、 それを受け取るオブジェクトにより動作が異なることを、 ポリモルフィズム(多相性・多様性)という。 これにより、送り側のオブジェクトは、 受取り側のオブジェクト構造に関係なく単にメッセージを送るだけでよく、 オブジェクト間のインターフェースを単純化できる。 また、受取り側のオブジェクト数が増減したり、あるいは仕様が変更されても、 送り側オブジェクトには何ら影響はなく、独立性が保たれる。 以上。 2004/03/10 pm