ちょっとひどいと思ったオブジェクト指向の解説

http://www.csg.is.titech.ac.jp/~chiba/notes/aop03/index.html

これはひどいオブジェクト指向を誤解しているのでは。`03年とはいえ、、、。

非常に直感的に説明すると、オブジェクト指向ではシステムを全体から部分へ階層的に分割する。システム全体は、いくつかのコンポーネントからなり、コンポーネントは、いくつかのサブコンポーネントからなり、と徐々に細かく分割していった最小単位がオブジェクトである。オブジェクト指向は、このように、全てのシステムが、木構造になるように階層的に分割可能であることを前提にしている。

これはモジュール指向でシステムを機能分割した場合の話である。オブジェクト指向の場合、名詞抽出などによって、システムを複数のオブジェクトの相互作用によって動作するように組み立てる。したがって網構造になり、木ではない。ただし、オブジェクト指向は実際にはクラス指向言語によって実現されることが多いため、実装においてはクラスは木構造の系に収納される。

ある機能を実現するコンポーネントやオブジェクトは、別な機能の実現にはまったく無関係ということがありうるだろうか?むしろそうでない方が普通だろう。現実のシステムの構造は、枝がからみあった木?構造をしているのである(図1)。

図を見るに、それらはレイヤーとすべきである。現実のシステムの構造は、確かに絡み合った木になっている。であるから、それらを整理するためにアーキテクチャがある。アーキテクチャとデザインを混同すべきでない。