オブジェクト指向のこころ(2)
UML
Unified Modeling Languageですね。
分析工程
- システムとやり取りを行う
実体
を洗い出す。(???) - プログラムのロジックフローではなく、
問題領域
(ドメイン領域とかの同義語?)のフローを考える。
なんかこの辺は前の章で言ってた機能分解をやめようってのと似てるように見える。
オブジェクトの相互関係を洗い出す
洗い出す
クラスに落とし込む
まだ実装には入らずインターフェースの実装をする。
クラス間の関係の種類
is-a
: 継承で表されるやつhas-a
- あるオブジェクトが別のオブジェクトの一部、構成要素となっている場合(e.g. 車とエンジン)
コンポジション
と呼ぶ。 - 独立した別のオブジェクトを持っている場合(e.g. 空港と飛行機)
集約(aggregation)
と呼ぶ。
- あるオブジェクトが別のオブジェクトの一部、構成要素となっている場合(e.g. 車とエンジン)
uses-a
- e.g. 車はガソリンスタンドが必要(依存)
- 他のクラスを生成している(
ファクトリ
)
usesが依存って言葉遣い的にピンとこないな。構成要素って方を依存と呼ばないのはそれが可換ということを表しているからか? 相互作用図もよく分からん。「オブジェクトの寿命」とかキーワードっぽいものは出てるけど図のどういう要素がなんの指標になるかとかが全く見えてこない。
オブジェクト単位で
状態遷移を考える
配置図
この本では解説を行っていません。配置ってなんや。
おまけ
和訳の技術書、頼むから固有の使い回しをする単語は原文も載せてくれ、全然英語文献を調べられない。。