konboi_kunの日記

日々、感じたことをまとめる場として利用する

クラス図について... その2

 

UML モデリングのエッセンス 第3版 (Object Oriented SELECTION)

UML モデリングのエッセンス 第3版 (Object Oriented SELECTION)

 

 

5章読んでいて、使っている表現と使っていない表現があったので、復習を兼ねてまとめ。

 

■クラスに追加するとわかりやすくなる(具体的な書き方は上の書籍参照)

・キーワード:このクラスはインターフェースクラスだよといったことを明示する

・リスポンシビリティ:クラスの責務を明示する

・staticな操作、属性  :CやC++のstaticみたいなやつは明示しようという話

 ほんとにクラスの要素ある必要あるの?とか検証に使えそう

・派生プロパティ       :他のプロパティに依存する(計算できたりする)プロパティ

 

■クラス関連の書き方

・集約:よくいうのはhas-a関係で所有権のある場合に使う。といっても、has-a関係

 でも関連で書かれていることはよくあります。

    あまり深く考えずに、関連より強い関係のときに使うぐらいでいいと思う。

 書いた人がいれば聞くのが一番だと思うが、かなりの確率で、特に意味はない

 という答えになると思います。

コンポジションコンポジションクラス(所有する側)が消えるとき、所有されて

 いるクラスも消えてしまうような、とても強い関係の場合に使う。

 

 ■クラス図自体の書き方

・インターフェース:すべての操作が抽象操作で、直接インスタンス化できない。

・抽象クラス:1つ以上の抽象操作(実装がない操作)をもつクラス。

 直接インスタンス化できない。

 

2つの差異は、インターフェースはクラスの機能(振る舞い)を示すもので、抽象クラスはクラスの意味を示すもの。(間違ってたらごめんなさい)

 

インターフェースクラスは特に重要で、クライアントクラスがインターフェースに依存するようにして、実装に依存しないようにすることで、実装の変更がクライアントに及ばないようにする。(詳しくは依存関係逆転の法則をみてください)