クラス図
概要
システムの静的な構造を見える化するために、クラス図を利用できます。
このページでは、クラス図を利用するための操作について、次の順で説明します。
- クラス図を配置する
- クラスを定義する
- 関連を定義する
また、ユーザーのモデリングを支援するために、次の機能を提供しています。
これらについても、順に説明します。
- モデルを検証する
- 表示内容を設定する
クラス図を配置する
クラス図を配置するには、以下の手順で行います。
- モデルナビゲータにてパッケージを選択し、 コンテキストメニューの [モデルの追加] > [クラス図] をクリックします。
- 選択したパッケージの子要素にクラス図が配置されます。
クラスを定義する
クラスを追加する
クラスを追加するには、以下の手順で行います。
- 表示されているクラス図にツールボックスから [クラス] をドラッグ&ドロップします。
- 表示されているクラス図の兄弟要素として新規にクラスが追加されます。
クラス図ではツールボックスで表示している以下の要素を配置できます。
アイコン | 名称 |
---|---|
パッケージ | |
クラス | |
インタフェース | |
ノート | |
ラベル | |
シェイプ |
クラスにステレオタイプを追加する
ステレオタイプを追加するには、以下の手順で行います。
- クラスを選択します。
- プロパティインスペクタの[基本情報] > [ステレオタイプ]フィールドの[追加]ボタンをクリックすると、その選択肢が表示されます。
- ステレオタイプを選択して [OK] ボタンを押下すると、クラスにステレオタイプが設定され、クラスシェイプ上部にステレオタイプが表示されます。
ステレオタイプの選択肢は、パッケージモデルの [詳細] ビューで定義できます。
追加したステレオタイプは、次の手順でクラス図から編集できます。
- クラスに表示されたステレオタイプをダブルクリックすると、編集状態になります。
- ステレオタイプを変更して編集を確定させると、クラス図上に反映され、クラスのステレオタイプが変更されます。
クラスを抽象クラスに変更する
クラスを抽象クラスに変更するには、以下の手順で行います。
- クラスを選択します。
- プロパティインスペクタの[特性] > [抽象型か」フィールドのチェックボックスをチェックすると、抽象クラスになり、クラス名が斜体で表示されます。
日本語のクラス名を斜体で表示する場合は、リボンの[シェイプ] > [テキスト] > [フォントの設定]から斜体に対応したフォントに変更してください。
既存のクラスをクラス図上に表示したい場合は、モデルナビゲータ上のクラスをクラス図にドラッグ&ドロップすることで表示できます。
属性を追加する
クラス図に属性を追加するには、以下の手順で行います。
- 表示しているクラスシェイプの属性区画にある[+]ボタンをクリックします。
- 区画に属性が追加されて、編集状態になります。
- 追加しようとする属性を後述のテキスト表記に従って入力し確定すると、属性が追加されます。
クラス図上で属性をテキスト入力すると、属性の表記フォーマットに従ってテキスト解析され、属性の各フィールド値に反映されます。
もちろん、各フィールド値を変更すれば図上のテキストに反映されます。
属性のテキスト表記フォーマットと各フィールド値との対応関係
属性は以下のフォーマット従ってテキスト表示・解析されます。
- フォーマット
<属性> ::= [<可視性>] [<派生属性か>] <属性の名前> [':' <型の名前>] ['[' <多重度下限値>'..'<多重度上限値> ']'] ['=' <初期値>]
- 補足
<可視性>
は以下のいずれかが表示されます。- '+'(Public)、 '-'(Private)、 '#'(Protected)、 '~'(Package/Internal)
<派生属性か>
がtrueの場合は、'/'
が表示されます。<型の名前>
に*
または&
が含まれる場合、該当文字より前の文字列を型名
、該当文字以降の文字列を型修飾子
として扱います。*
や&
から始まる型名を設定するにはインスペクタで設定してください。
- 例
属性の名前:TargetValue
、可視性:Public
、派生属性か:true、型:int
、型修飾子:*
、多重度下限値:0
、多重度上限値:2
、初期値:-1
の場合、以下のテキスト表示になります。
+ /TargetValue : int*[0..2]=-1
- 補足
操作を追加する
クラス図に操作を追加するには、以下の手順で行います。
- 表示しているクラスシェイプの操作区画にある[+]ボタンをクリックします。
- 区画に操作が追加されて、編集状態になります。
- 追加しようとする操作を後述のテキスト表記に従って入力し確定すると、操作が追加されます。
クラス図上で操作をテキスト入力すると、操作の表記フォーマットに従ってテキスト解析され、操作の各フィールド値に反映されます。
もちろん、各フィールド値を変更すれば図上のテキストに反映されます。
操作のテキスト表記フォーマットと各フィールド値との対応関係
操作は以下のフォーマットに従ってテキスト表示・解析されます。
- フォーマット
<操作> ::= [<可視性>] <操作の名前> ['(' [<パラメータの一覧>] ')'] [':' [<戻り値の型>] ['[' <多重度> ']']
- 補足
<可視性>
は以下のいずれかが表示されます。- '+'(Public)、 '-'(Private)、 '#'(Protected)、 '~'(Package/Internal)
<パラメータの一覧>
は以下のフォーマットで表示されます。<パラメータの一覧> ::= <パラメータ> [','<パラメータ>]*
<パラメータ> ::= [<パラメータの方向>] <パラメータの名前> ':' <パラメータの型名> ['['<パラメータの多重度>']'] ['=' <パラメータの初期値>]
<パラメータの型名>
に*
または&
が含まれる場合、該当文字より前の文字列を型名
、該当文字以降の文字列を型修飾子
として扱います。*
や&
から始まる型名を設定するにはインスペクタで設定してください。<パラメータの方向>
は以下のいずれかが表示されます。in
、out
、inout
- 例
操作の名前:Drive
、可視性:Public
パラメータ1の名前:miles
、型:int
、型修飾子:&
、初期値:100
、多重度:1..*
パラメータ2の名前:speed
、 型:int
、方向:out
の場合、以下のテキスト表示になります。
+ Drive(miles : int&[1..*]=100, out speed : int)
- 補足
関連を定義する
関連を定義するには、以下の手順で行います。
- 関連付けるクラスの上にポインタを移動します。
- クラスの四方に表示される[▲]アイコンをドラッグして、関連付けるもう一方のクラスにドロップします。
- 追加可能な関連の一覧が表示されるので追加したい関連を選択すると、選択した関連が追加されます。
クラス図では次の関連を使用できます。
アイコン | 名称 |
---|---|
依存 | |
関連 | |
関連(単方向) | |
所有 | |
集約 | |
継承 | |
実現 |
関連の多重度を編集する
- 関連を選択します。
- グレーアウトされている[*]をダブルクリックすると、編集状態になります。
- 設定したい多重度を入力すると、関連に多重度が設定され、クラス図の関連に多重度が表示されます。
関連の関連端名を編集する
- 関連を選択します。
- グレーアウトされている[-]をダブルクリックすると、編集状態になります。
- 設定したい関連端名を入力すると、関連に関連端名が設定され、クラス図の関連に関連端名が表示されます。
関連にステレオタイプを追加する
ステレオタイプを追加するには、以下の手順で行います。
- 関連を選択します。
- グレーアウトされている[<<stereotype>>]をダブルクリックす ると、編集状態になります。
- 設定したいステレオタイプを入力すると、クラス図の関連にステレオタイプが表示され、関連にステレオタイプが設定されます。
モデルを検証する
クラス図で検証される内容は、次の通りです。
- クラスやインタフェースの継承関係が循環していないか
- インタフェースの継承元にクラスが設定されていないか
- ファイナルクラスに対してサブクラスが設定されていないか
モデルを検証するには、以下の手順で行います。
- リボンから [UML] > [検証] > [整合チェック] を実行します。
- プロジェ クト配下の全てのモデルに対し、不整合な状態の場合は、エラー表示されます。
リボンの [ホーム] > [モデル] > [エラーチェック] ボタンをクリックすると、標準の検証に加え、全てのモデルに対し検証が行われます。
また、クラス図上で新規に継承関係を追加した際、追加された継承関係を基点にクラス間の関連チェックがリアルタイムで行われます。
表示内容を設定する
モデルを変更することなく、関心のある情報のみをクラス図に表示できます。
操作のパラメータの表示内容を設定するには、以下の手順で行います。
- 表示を切り換えたいクラス図を表示します。
- インスペクタの [UML図] タブの [操作] グループのパラメータチェックボックスのチェックを切り換えます。
クラス図では次の要素の表示を切り換えることができます。
カテゴリ | 要素 |
---|---|
共通 | ステレオタイプ |
属性 | 可視性 |
型 | |
多重度 | |
初期値 | |
操作 | 可視性 |
戻り値の型 | |
パラメータ | |
パラメータの型 | |
パラメータの方向 | |
パラメータの初期値 | |
関連 | 可視性 |
制約事項
- 型名のスタイルで斜体を指定できません。型が抽象型の場合、自動的に斜体で表示されます。
- 型名のフォントが斜体に対応していない場合、抽象型かを図上で表現できません。サブエディタやインスペクタで確認してください。
- 対応していないフォントの例: Meiryo (デフォルトのフォントです)
- 属性のスタイルで下線を指定できません。属性が静的属性の場合、自動的に下線が表示されます。
- 操作のスタイルで斜体を指定 できません。操作が抽象操作の場合、自動的に斜体で表示されます。
- 操作のスタイルで下線を指定できません。操作が静的操作の場合、自動的に下線が表示されます。
- 属性や操作で指定する型をテキスト編集により指定する場合は、事前定義しておく必要があります。自動追加はしません。
- 属性や操作で扱う型の名前に属性や操作の構文で使う次の文字が含まれる場合、テキスト編集時に誤った解釈でモデルに反映されてしまう場合があります。
- 「,」(半角カンマ)、「)」(半角丸カッコ閉じ)、「]」(半角角カッコ閉じ)、「=」(半角イコール)、「*」(半角アスタリスク)、「&」(半角アンパサンド)
- インタフェースのロリポップ表示はできません。
- 一度追加したクラス間の関連の種類(依存・所有・集約等)を変更するには、作成しなおす必要があります。
- クラスの属性や操作の要素、コネクタにノートのアンカーを付けることができません。
- パッケージとクラス間の所有の関係をコネクタで表現できません。
- 以下の制約は残りますが、チェック機能により問題を検出できます。
- インタフェースの継承元にクラスを指定できてしまいます。
- 循環継承を定義できてしまいます。
- ファイナルクラスであってもサブクラスを定義できてしまいます。
- 関連クラスは定義できません。
- 内部クラスは表現できません。