Translate

ラベル Class Diagram の投稿を表示しています。 すべての投稿を表示
ラベル Class Diagram の投稿を表示しています。 すべての投稿を表示

2020/06/04

クラスのプロパティ表示から関連表示への変換

Tipsです。

クラスをモデル化する際、ユーザ定義クラスを型とするプロパティを属性区画に追加した後で、関連(Association)として表示したい事があります。

例えば
というクラスがあった場合に、この parts メンバ要素をXクラスとの関連として表示させたい場合です。クラス図上で、ClassXクラスの各種要素と共にXクラスの詳細も表示することで、両者が関係するある特徴を明示したクラス図として表記したい時などです。

この時のModel Explorerの表示は


となっています。
通常、各種関連も Model Explorer 上で表記されているのですが、ClassAクラスに直接 parts プロパティを追加したため、関連を示すモデルが存在しません。

では関連としてのモデル要素をEdgeパネルから作らないといけないかというと、そういう訳ではありません。その関連を自動生成するやり方があります。

まず、クラス図上で対象のプロパティ(parts)を選択し、マウス右クリックから

Utils > Create Association From Property

を選択します。


これを実行すると、何の変化も起こらない様に見えますが、Model Explorer を見ると、ClassAクラスとXクラスの間のpartsに関する関連が生成されています。


一番下の「A_parts_classA」です。

これをクラス図上で Drag&Drop することで、関連が表示されます。


後はXクラスの表示内容を変更したり、関連(A_parts_classA)の見せ方を変更することで、所望の意図を持つクラス図に修正することが可能です。

継承先クラスでの継承元クラス要素の表示

Tipsです。

「区間の名前表示と区間で表示するモデル要素」という記事で、クラス図において、クラスの区画上で表示する要素の選択や、表示する区画自体やそのタイトルの選択方法について説明しました。

関連して、「継承先クラスで継承元クラスの要素の選択表示は行えるか?」の話しです。

答えは「行えます」

上記の元記事にあるBaseクラスを継承してDerivedクラスを規定したとします。


DerivedクラスにBaseクラスの要素を表示するかどうかの操作は元記事と同様に Derived クラスをマウスで選択した後、

Filters → Show/Hide Contents

から行います。

上記操作により以下のダイアログが表示されます。


見ての通り、「(from <Class> Base)」として Base クラスの要素の表示が可能です。

全てをチェックしてOKとすると、クラス表記は、


となります。

なお「Show/Hide Contents」として表示されるダイアログ上で y や b が選択肢として出てきませんが、これはそれらが「private」として定義されているためであり、正しい動作となります。

区間の名前表示と区間で表示するモデル要素

Tipsです。

Model Explorer 上で以下の様に示されている 3つのProperty 「x, y, z」と 3つのOperation 「a, b, c」を持つクラス Base を考えます。


クラス図上で Base クラスは以下の様に表示されると思います。

クラス名「Base」の下にある attributes を表示する「区画」(Compartment)に「x, y, z」が表示され、operations を表示する区画に「a, b, c」が表示されています。

この表示に対し
  • 各区画が何を表示する所かを明示したい
  • 各区画で表示する内容を選択したい
という様な時のツール操作方法です。

まずクラス図上で対象のクラス(ここではBaseクラス)をマウス左クリックで選択し、その後、マウス右クリックで表示されるドロップダウンリスト上で「Filters」を選択します。


すると幾つかのメニューが表示されます。

ここで
  • Show/Hide Contents を選択すると表示する要素の選択
  • Show/Hide Compartments を選択すると表示する区画や区画の名前の選択

が行えます。

まず「Show/Hide Contents」ですが、以下のダイアログが表示されます。


このチェックボックスを選択もしくは選択解除することで表示する要素を選べます。

例えば、attributes としては「xのみ」、operations としては「a, bのみ」を表示したい場合は、そのようにチェックボックの選択を行い、

[OK]ボタンを押すとクラス図での表記が以下の様に変更されます。


また「Show/Hide Compartments」ですが、以下のダイアログが表示されます。


ここで
  • 左側の「Compartments To Display」が区画自体を表示するかどうか
  • 右側の「Display Compartment Title」が区画の名前を表示するかどうか

の選択となります。

まず右側の「Display Compartment Title」を試してみます。現在表示されている3つの区画全てにタイトル表示のチェックを行うと、


クラス表記は以下の様に変わります。
無事に区画のタイトルが表示されています。

次に「Compartments To Display」を試してみます。

まず attributes 区画だけの表示を試してみます。


この時、チェックを外した区画の「Display Compartment Title」のチェックはあってもなくても構いません。これでOKを押すと、

とBaseクラス上で attributes 区画のみが表示されます。

今度は operations 区画だけを表示させてみます。ダイアログ上の選択で、


としてみます。こうするとクラス表記は、
と変わります。

これらをうまく組み合わせて、同じクラスモデルでも表示する内容を選択して、各図で何を示そうとしているのかを明確にすることが可能です。

2020/06/03

関連端の可視性の変更

Tipsです。

Papyrusのクラス図を用いたモデル化の際、Association(CompositeやShared)で2つのクラス間を関連付けた後に「可視性」(Visibility)を変更したい時に、どうすれば良いか悩む時があります。

例えば

とモデル化した後で、Engineクラス側の関連端「engine」の可視性を、今の + (+engine。ようは public)から ー (-engine。ようは private) に変更したい時などです。

Association のエッジを選択して Properties タブを見てみると、関連端に対する「名前」や「多重度」など幾つかの属性は変更出来ますが、可視性(Visibility)を変更できる所はメニューにはありません。

以下の図のような感じです。


このような時に可視性を変更するには、上記図のような Association に対する Properties タブから行うのではなく、Model Explorer 上に見える Car クラスのプロパティとしての「engine」を選択することで行います。

Model Explorer の Car クラスを見ると、


のように Carクラス に engine が見えると思います。

これをマウスで選択し、Properties タブを開くと、


のように Carクラスの Property としての engine の編集が行えるので、ここで「Visibility」を public から private に変更します。


これにより、クラス図上で 「- engine」と変更されます。


このような Tips が Papyrus には色々と存在しているので、また紹介してゆけたらと思います。

ちなみに上記の Propertiesタブ で、可視性を public から private に変更した際、図の左上にあるアイコンが変わっていることにも気づけるかと思います。Model Explorer 上でも



のように変動して private メンバを示すアイコンに変更されています。