伊藤花粉症真っ最中@AISです。
ありがとうございます。
もう1つ質問させて下さい。
Makoto Minagawa wrote:
> 扱っているモデルのレベルによって解釈が異なる場合がありますし、UMLは今
>
>のところ実装言語へのマッピング方法まで規定していないので、「必ずそうなり
>ます」とは言えません。が、設計レベル以降でJavaのような実装言語を想定する
>なら、たいていの場合ロール名はそのままインスタンス変数名にマッピングされ
>て実装されることが多いです。
>
>
>
これは概念レベル・設計レベル・実装レベルというような区分けと理解して良い
ですか?
実装時にはオブジェクトプールやコントローラ等の登場人物が出てきますが、
多重継承が出来るか否か等の言語による差異が出るので、レベルを分けて扱う
必要性があるという事かな?と思っております。
「本質が見えなくなる」ので。
> はい。だいたいこのような感じになると思います。が、この関係(結婚してい
>る)が双方向関連である場合、上記のコードだと片方向しか参照関係が確立しな
>いのでもう少し工夫が必要になりますね。このような場合、二つのオブジェクト
>間で双方向の参照関係が同時に成り立つ(もしくは同時に切断される)ようなコー
>ドを書く必要があります。Javaでの簡単なサンプルは上記の井上の記事の一部に
>含まれていますし、そのようなコーディング・イディオムをもう少し一般化した
>テクニックである「ダブル・ディスパッチ」の解説が弊社の以下のページにあり
>ます(この記事も少し古いですが)
>
ダブルディスパッチは「Javaの哲学」で知りました。
私のように手続き型で暮らしてきた人間からすると目から鱗でした。
取り出してきて加工・条件判断するという考えになりがちですが、
そうしてしまうとクラス間の依存性が強くなって分離しにくくなり、
結果的に保守性・再利用性が落ちるという事が本質かなと理解しています。
深夜にご回答ありがとうございました。