オブジェクト指向とは何か?
この記事はなんとなく更新するかもしれないし、しないかもしれない。個人的なまとめだ。おそらく、今日を過ぎたら更新しないだろう。
オブジェクト指向かそうでないかは、スペクトル的だ。
オブジェクト指向は、はっきりとオブジェクト指向か、そうでないかを明確に区別できるものではない。なにかと比較して、オブジェクト指向的と言うことが言える。たとえば、Aは100%ではないが、90%オブジェクト指向で、Bは60%オブジェクト指向であって、AはBよりもオブジェクト指向だと言える。
オブジェクト指向、開発プロセス全体を含んでいる。
オブジェクト指向プログラミングというのは、開発プロセス全体を含んでいる。方法論、分析、設計、言語、ツール全体として、オブジェクト指向でプログラミングするということである。言語機能があり、それを使えば、オブジェクト指向であるかといえば、そうでは無いのだ。
クラスは、モジュールとしての役割と型としての役割がある。
クラスは、モジュールの単位である。つまり、システムの構成要素である。モジュール同士を繋ぎ合せ、組織し、システムの全体を構築する。また、モジュールとして、プログラムをテストしたり、モジュールを入れ変えたりすることができる。
また、クラスには型としての型としての役割がある。型によって、プログラムが正しい実行がある程度保証される。型によるチェックによって、オブジェクトが受けとったメッセージが処理できるかどうかをチェックできる。