オブジェクト指向そのものの考察を始める前に、前提知識として「ソフトウェア開発プロセスの観点」を理解しておきたいと思います。マーチン・ファウラーさんが書籍「UMLモデリングのエッセンス」提唱しているもので、ソフトウェア開発プロセスには3つの観点があると紹介しています。
* 概念(conceptual)
o 調査対象領域における概念を表現。
o 実装とは関係なく導き出される。
o 「私は何に対して責任があるのか?」
* 仕様(specification)
o ソフトウェアを考慮。
o 実装ではなく、インターフェイスの考慮 。
o 「私はどのように使用されるのか?」Z
* 実装(implementation)
o ソースコード自体を考慮。
+ 上の2つを考えた後。
o 「私はどのように自身の責任を全うするのか?」
この観点の使い分けが非常に重要です。概念レベルでコミュニケーションを取とると、お互いの詳細は知らなくて良いことになります。設計はまずここで考えることになります。すなわちソフトウェア以下は考慮しません。すると設計アウトプットにおいて、使用者に概念をそのままにして実装を変更できるため、結果的に使用者に対して(発生しやすい変更である)実装変更から守ることになります。
オブジェクトと観点のマッピング
なぜこの「ソフトウェア開発プロセスの観点」の理解が必要かというと、この観点がオブジェクト指向設計によくマッチするからです。以下にオブジェクトと観点のマッピングを示します。
* 概念レベル
o オブジェクトは責任の集合
* 仕様レベル
o オブジェクトはその他のオブジェクトや自ら起動することが出来るメソッドの集合
* 実装レベル
o オブジェクトはコードとデータ、それらの相互演算処理
そしてこの観点の使い分けがわかると、既存の開発手法から「オブジェクト指向(の本質)」にパラダイムシフトし易くなります。
最終更新:2009年06月12日 04:18