モジュール、オブジェクト指向、ポリモフィズム
上記の書籍を参考にしてモジュール、オブジェクト指向、ポリモフィズムに関連する知識をまとめていきます。オブジェクト指向に関しては過去にも記事にしていますが、別の言い方で捉え直していきます。
構造化設計
大きな機能から段階的に詳細化していく設計手法のことです。
コンポーネント
ある機能の実現のために部品化されたプログラムのことです。
モジュール
プログラムを構成する最小単位であり、独立性が高くなるように設計するものです。モジュール強度は「1つの」モジュール内に含まれる機能間の関連性の度合いであり、「強いほど」独立性が高くなります。モジュール結合度は、「複数の」モジュール間の結合の度合いであり、「弱いほど」独立性が高くなります。
オブジェクト指向
オブジェクトとはデータ(属性)とそれを操作するメソッド(手続き)を一体化したもののことです。オブジェクト内のデータとメソッドを、外部から隠蔽することを「カプセル化」と言います。オブジェクトの中身を知らなくても、メッセージを送ることで必要な操作ができます。
クラスとインスタンス
オブジェクトの雛形を定義したものが「クラス」であり、それを基に生成されたオブジェクトが「インスタンス」です。
ポリモフィズム
既存のクラスを基にして、新しいクラスを生成できます。基となるクラスをスーパークラス(基底クラス)、新しく生成したクラスをサブクラス(派生クラス)と言います。基のクラスのデータやメソッドを派生クラスに引き継ぐことを「継承」(インヘリタンス)と言います。
基のクラスのメソッドを「一部変えて使いたい時」は、派生クラスに同じ名前で内容を変えて「再定義」する「オーバーライド」を行います。これを「ポリモフィズム」(多相性・多態性)と言います。
「委譲」は、あるオブジェクトに依頼されたメッセージの処理を、そのオブジェクトの内部から他のオブジェクトに委ねることです。
クラスの階層化
下位クラスの共通部分を抽出して上位クラスを定義することを「汎化」と言い、その逆を「特化」と言います。
また上位クラスが下位クラスの組み合わせで構成されていることを「集約」と言い、その逆を「分解」と言います。