【UMLチュートリアル】クラス図の書き方

こちらのサイトではDRUPAL10に関連する記事を掲載しています。

こちらの記事は下記のブログサイトを翻訳しました。

UML Class Diagram Tutorial
A Comprehensive UML Class Diagram tutorial written for everyone who want to learn about Class Diagram. Read this UML guide and learn UML today.

クラスとは何ですか?

クラスはオブジェクトの設計図です。 オブジェクトとクラスは密接に関連しています。 一方について語ることなく、他方について語ることはできません。 そして、オブジェクト指向設計の要点はオブジェクトではなく、クラスです。オブジェクトの作成にはクラスを使用するためです。 したがって、クラスはオブジェクトが何になるかを記述しますが、オブジェクト自体ではありません。

実際、クラスはオブジェクトのタイプを記述しますが、オブジェクトはクラスの使用可能なインスタンスです。 各オブジェクトは同じブループリントのセットから構築されているため、同じコンポーネント (プロパティとメソッド) が含まれています。 標準的な意味は、オブジェクトはクラスおよびオブジェクトのインスタンスである、つまりオブジェクトには状態と動作があるということです。

犬には、色、名前、品種といった状態のほか、振る、吠える、食べるなどの行動があります。 オブジェクトはクラスのインスタンスです。

クラスとは何ですか?

UML クラス表記法

)をカプセル化する概念を表します クラスは、状態 (属性) と動作 ( 操作。 各属性にはタイプがあります。 各 操作にあります は署名がはクラス名のみです 必須の情報UML クラス表記法

クラス名:

  • クラスの名前は最初のパーティションに表示されます。

クラス属性:

  • 属性は 2 番目のパーティションに表示されます。
  • 属性のタイプはコロンの後に表示されます。
  • 属性は、コード内のメンバー変数 (データ メンバー) にマップされます。

クラス操作 (メソッド):

  • 操作は 3 番目のパーティションに示されています。 これらはクラスが提供するサービスです。
  • メソッドの戻り値の型は、メソッド シグネチャの最後のコロンの後に示されます。
  • メソッド パラメータの戻り値の型は、パラメータ名の後のコロンの後に示されます。 操作はコード内のクラスメソッドにマップされます

クラスの操作

クラスの可視性

クラス内の属性と操作名の前の +、-、および # 記号は、属性と操作の可視性を示します。 クラスの可視性

  • + はパブリック属性またはパブリック操作を示します
  • – プライベート属性または操作を示します
  • # は保護された属性または操作を示します

パラメータの方向性

操作 (メソッド) の各パラメーターは、 in、 out 、または inout呼び出し元に対する方向を指定する として表すことができます。 この方向性はパラメータ名の前に示されます。 パラメータの方向性

クラス図の見方

パースペクティブの選択は、開発プロセスがどの程度進んでいるかによって異なります。 作成する際に ドメイン モデルを たとえば、 、概念的な観点を超えて進むことはほとんどありません。 分析モデルは組み合わせたものになります 通常、概念的な観点と仕様の観点を設計モデルのに重点を置いて開始され 開発は通常、仕様の観点実装の観点に発展します。

図はさまざまな観点から解釈できます。

  • Conceptual : ドメイン内の概念を表します。
  • 仕様: ソフトウェア内の抽象データ型 (ADT) のインターフェイスに焦点を当てています。
  • 実装: クラスがインターフェースを実装する方法を説明します。

視点は、提供される詳細の量と、提示する価値のある関係の種類に影響します。 上で述べたように、必須の情報はクラス名のみです。 クラス図の見方

一般的なクラス間の関係の表現方法

UML は美しい画像だけを扱うものではありません。 正しく使用すると、UML は図からコードを実装する方法を正確に伝えます。 正確に解釈されれば、実装されたコードは設計者の意図を正しく反映します。 以下の図に示されているターゲット プログラミング言語に関連して、それぞれの関係が何を意味するのか説明できますか?

これらをまだ認識できなくても、問題ありません。このセクションは、UML クラスの関係を理解するのに役立つことを目的としています。 クラスは、他のクラスとの 1 つ以上の関係に関与する場合があります。 関係は次のいずれかのタイプになります。

クラス間の関係

継承 (または一般化)

一般化とは、より一般的な分類子とより具体的な分類子の間の分類学的関係です。 特定の分類子の各インスタンスは、一般的な分類子の間接的なインスタンスでもあります。 したがって、特定の分類子は、より一般的な分類子の機能を継承します。

  • 「is-a」関係を表します。
  • 抽象クラス名は斜体で表示されます。
  • SubClass1 と SubClass2 は SuperClass の特殊化です。

継承階層の例を次の図に示します。 SubClass1 と SubClass2 は SuperClass から派生します。 関係は、子要素から親要素を指す中空の矢印が付いた実線として表示されます。 継承 (または一般化)

継承の例

次の図は、2 つのスタイルによる継承の例を示しています。 コネクタの描画方法は異なりますが、意味的には同等です。

継承の例 - 形状

関連付け

関連とは、UML クラス図内のクラス間の関係です。 それらはクラス間の実線で表されます。 通常、関連付けには、現実世界の問題領域を反映する動詞または動詞句を使用して名前が付けられます。

より単純な関連付け

  • 2 つのピア クラス間の構造的リンク。
  • Class1 と Class2 の間には関連性があります

単純な関連付けの例を次の図に示します。 <<control>> クラス Class1 と <<boundary>> クラス Class2 を接続する関連付けがあります。 関係は 2 つのクラスを結ぶ実線として表示されます。 単純な関連付け

カーディナリティ

カーディナリティは次のように表現されます。

  • 一対一
  • 1対多の
  • 多対多

カーディナリティ

集約

特殊な種類の関連付け。

  • それは関係の「一部」を表します。
  • クラス 2 はクラス 1 の一部です。
  • Class2 の多くのインスタンス (* で示されている) を Class1 に関連付けることができます。
  • Class1 と Class2 のオブジェクトには別のライフタイムがあります。

集計例を次の図に示します。 この関係は、関連付けの端に塗りつぶされていないひし形が付いた実線として表示され、集計を表すクラスに接続されます。

集計

より強い集約

  • 全体が破壊されると部分も破壊される特殊なタイプの集約。
  • クラス 2 のオブジェクトはクラス 1 とともに存続し、消滅します。
  • Class2は単独では自立できません。

構成例を下図に示します。 関係は、関連付けの端に塗りつぶされたひし形が付いた実線として表示され、全体または複合を表すクラスに接続されます。

構成

依存関係

あるクラスのオブジェクトが、メソッドのコード内で別のクラスのオブジェクトを使用する場合があります。 オブジェクトがどのフィールドにも格納されていない場合、これは依存関係としてモデル化されます。

  • 特殊な種類の関連付け。
  • 一方の定義の変更により他方のクラスも変更される可能性がある場合 (その逆は不可)、2 つのクラスの間に存在します。
  • クラス1はクラス2に依存します

依存関係の例を次の図に示します。 関係は白抜き矢印の付いた破線として表示されます。

依存

次の図は、依存関係の別の例を示しています。 Person クラスには、その人が (おそらく何らかのデータベースをチェックして) 本を読んだ場合に true を返す Book パラメーターを持つ hasRead メソッドがある場合があります。

依存

実装

実現とは、ブループリント クラスと、それぞれの実装レベルの詳細を含むオブジェクトとの間の関係です。 このオブジェクトはブループリント クラスを実現すると言えます。 つまり、インターフェースと実装クラスの関係として理解できます。

たとえば、Owner インターフェイスでは、プロパティの取得とプロパティの破棄のためのメソッドを指定できます。 Person クラスと Corporation クラスは、おそらく非常に異なる方法でこれらのメソッドを実装する必要があります。

実現

クラス図のサンプル

オーダーシステム

クラス図の例: オーダーシステム

GUI

クラス図には、クラスまたは関係に添付されたメモが含まれる場合もあります。

クラス図の例: GUI

このサイトに関するご意見・ご質問はこちらまで

この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました