2010/11/09(火) 第12回 G* ワークショップ
- kimukou2628
- 1748
- 0
- 1
- 0
構造はデータで良しとする。そして振舞いはクラスじゃなくロールで考える。 考えているのは、「それが誰か」ではなく「誰を演じているのか」。 #jggug
2010-11-09 19:30:35#jggug 構造 ・・ クラス : (シンプルな)データ 振る舞い・・ロール : 役割 (△)彼は誰か<>何を演じてる(○)
2010-11-09 19:30:53#jggug データ ・・ロールを演じるための能力を持つ(Capacity) データ=<コンテキスト>=ロール
2010-11-09 19:32:02「構造を表現するのは Data。振る舞いについては Role を考える。Data は Role を演じるための能力 (Capacity) を持つ。実行時にそれらを結びつけるのが Context。」 #jggug
2010-11-09 19:33:35"dataはroleを演じるための能力:capacityを持つ" "dataとroleを紐つけるのがcontext" "role間の相互作用で振る舞いが表される、のでinteraction" #jggug
2010-11-09 19:33:45#jggug 例) 振り込み元=<送金>=振込先 説明) Data =<Context>=Interaction
2010-11-09 19:33:54あるデータは、特定のコンテキストにおいて、特定のロールを演じる。そのコンテキストを外れてしまえば、ロールは関係なくなる。 #jggug
2010-11-09 19:33:58異る境界を持ちながら重なる。コンパイル時には分離し、実行時には、融合する必要がある。Coplien氏はTraitと呼ぶ。ScalaのTraitsに対応するが、Groovyでもmixinでできる(コンパイル時チェックがアレだが) #jggug
2010-11-09 19:35:16DCI-sample: http://code.google.com/p/dci-sample/source/checkout #jggug
2010-11-09 19:38:01給与計算ケーススタディ DCI 版。元ネタは Uncle Bob の『アジャイルソフトウェア開発の奥義』。 #jggug
2010-11-09 19:38:35#jggug データと振る舞いは分けてあって合成して扱う。というのは、モデリングのパラダイムのひとつと考える。構造を安定させ、ふるまいを変化させることができる。
2010-11-09 19:50:11mixin、trait、moduleを差分プログラミングに使う、というのはDCI由来じゃない。"メンタルモデルとの整合性"というのが差分設計にどのように効くのか、が肝なんだと思う。 #jggug
2010-11-09 19:52:14