「ーデザインパターンとともに学ぶーオブジェクト指向のこころ」より
クラス設計では,次の3つの観点が必要.
- 概念:(現実世界)共通なもの
- 仕様:概念的に似通ったオブジェクト郡との通信手段
- 実装:(プログラム)個々で異なるもの
急いでプログラミングしていると,概念レベルの観点まで考えが及んでいないような気がする.
クラスの設計作業は次の2ステップからなる.
- クラスが責務を全うするには,どのようなインターフェースが必要か(共通性分析,仕様を決める)
- クラスがどのようにして仕様を実装できるか(可変性分析,仕様を守る)
共通なものを見つける -> 異なる部分を見つけるという,トップダウンで考える(らしい).