オプション区画


追加情報

これまで解説した、属性区画や操作区画のような
何らかの情報を表現する、複数行に渡る文字列で構成された区画を総称して
一般に並び区画と呼び、拡張可能な定義になっています

属性区画や操作区画を見てきたので、すでに理解していると思いますが
並び区画では、クラスの特性を表現するための文字列を一行にひとつ表示します
1行で表示できないほど長い場合は、ツールに依存します

UML では原則として並び区画を追加することを容認しています
つまり、ユーザー定義のオプション区画を追加できるのです
ここには、このクラスの役割などを説明する文書を挿入したりできますし
プログラミング言語固有の分類子特性を記述しても良いでしょう

《Control》
Button
+text : string
+DoClick() : void
Click : ActionEvent
MouseDown : MouseEvent
MouseUp : MouseEvent

例えば、これは簡単に GUI におけるボタンを表現したクラスですが
ボタンに何らかのアクションが発生した時に呼び出すべきポインタを
言語に依存しないイベントという独自概念の理論上の用法を想定した場合
上記のように、新しい区画を定義して表現するという手法が考えられます

しかし、この場合、設計者以外の人が追加された区画を見ても
この区画がどのような意味を持っているのか、認識しづらい傾向があります
そこで、UML では区画名を区画に表示する記法を定義しています

区画名は、太字で区画の上部中央に配置します
因みに、属性区画は attributes、操作区画は operations という区画名です

《Control》
Button
attributes
+text : string
operations
+DoClick() : void
event
Click : ActionEvent
MouseDown : MouseEvent
MouseUp : MouseEvent

上のクラスは、区画名を表示した例です
一般的には、区画名を表示できるかどうかは、かなりツールに依存します
しかし、UML はシステムを抽象化して設計できることに魅力があるのであって
何らかの言語に依存したクラス図に価値はないと、私は考えています

設計者は、可能な限りシステムをよく分析し、用法ごとに項目を抽象化し
言語に依存しない設計図を積極的に記述することによって
移植や言語の改定などに強いシステムを建築することができるようになるでしょう


グループプロパティ

項目の順序はユーザーが変更可能でなければならないとされていますが
ツールが、英文字やステレオタイプ、可視性順などでソートしても良いとされます

また、プロパティ文字列が、ひとつの並びの要素となっても良いと定められています
つまり、次のプロパティ文字列までが何らかの意味を持つ要素となるのです
これをグループプロパティと呼びます

これは C++ 言語のアクセス修飾子の書き方に酷似しています

Bitmap
《Property》
-width : int
-height : int
《Constructor》
+Bitmap(in fineName : String)
+Bitmap(inout width : int , inout height : int)
《Accesser》
+GetWidth() : int
+GetHeight() : int

このように、並び要素の集まりにステレオタイプを適用できます


省略

設計図を描くとき、特に公開する必要のない情報も存在します
そこで、属性や操作において、実装では属性や操作がほかにも存在するが
何らかの理由から非表示にしていることを表すために省略を使うことができます
省略は、省略記号 ... を区画の最下部に記述します

Bitmap
《Property》
-width : int
-height : int
...
《Constructor》
+Bitmap(in fineName : String)
+Bitmap(inout width : int , inout height : int)
...

このクラスの属性と操作では、最終要素に ... を指定しています
そのため、開発者は要素はまだ存在するが、表示していないことを認識できます



前のページへ戻る次のページへ