UML2.0のノートです。UML速習リファレンス(ISBN4-7973-2546-1)をベースに、
仕様書(UML Superstructure 2.0 Draft Adopted Specification)で確認してます。
ちなみに、ここのブログは日記らしいものにする気は全くありません。
追記したら、日付直しちゃうし。
クラス内での表記
左寄せで書く。
最初の文字は小文字。(日本語では関係ない)
必要のない属性は表記しなくてよい。
全ての属性を省略することも可能(枠も省略できる)。
属性の表記法
[visibility] [/] name [:type] [multiplicity] [=default] [{property-string}]
可視性 (visibility)
+ public
- private
# protected
~ package
パッケージでは、所属するパッケージ内でのみ見える。あとは、C++等と同じ。
/ 派生を示す
name 属性名
type 属性の型
多重度 (multiplicity)
BNFでの文法
multiplicity ::= ['{' '}']
multiplicity_range ::= [ lower '..' ] upper
lower ::= integer | valu_specification
upper ::= unlimited_natural | '*' | value_specification
::= ordered | unordered
::= unique | nonunique
以上は、仕様書からの引用です。
uniqueness_designator についての指定が無いのは多分誤りでしょう。
本当は、
multiplicity ::= ['{' '}']
desiginator ::= (order_designator [',' uniqueness_designator]) |
(uniqueness_designator [',' order_designator])
という感じです。
多重度は、非負の整数。
範囲の上限には、正の無限大(*)も使える。
多重度では、エレメントのunique, orderedの指定もできる。
orderedでは、エレメントには並びがある(順序付け)。無い場合は、unordered。
uniqueでは、エレメントの値がユニークである。そうでない場合は、nonunique。
デフォルトは、unordered, unique。
濃度が0は許されない。
範囲指定では、副作用のある式は使えず、エクスプレッションは定数でなければならない。
エレメントで使われるときは、[]が必要。(たとえば、クラスの属性)
シンボルで使われるときは、[]は不要。(たとえば、関連の端点)