UML2.0のクラス図

概要:

クラス図はオブジェクト指向モデリングです。これらは通常、概念モデリング (概念モデリング) システム分類アプリケーションに使用され、モデル モデリングをコードに変換できます。
ここに画像の説明を挿入

  • 先頭はクラス名(名前)
  • 中間部分にはクラスの属性が含まれます
  • 下部にはクラスのメソッドが含まれています

システムの動作をさらに詳しく説明するには、これらのクラス図を状態図または UML ステート マシンで補足できます。

メンバー:

UML は、属性やメソッドなどのクラス メンバーと、それらに関するその他の情報を表すメカニズムを提供します。

クラス メンバー (つまり、プロパティまたはメソッド) の可視性を指定するには、各メンバー名の前に次の記号を付ける必要があります。

+   公共
-   私有
#   保护(即对子类可见)
~   包(即对包内其他成员可见)

関係:

インスタンスレベルの関係
  • 一般化

つまり、継承の逆方向です。これは、クラス (親クラス、親インターフェイスと呼ばれます) が、別の (またはいくつかの) クラス (サブクラス、サブインターフェイスと呼ばれます) の共通の機能を持つことを意味します。サブクラスは親クラスの特殊なケースとみなすことができ、新しい機能を追加できます。実線と中空の三角矢印で示されます。
ここに画像の説明を挿入

実現

インターフェイス インターフェイスを実装するクラス class の機能を指します (複数の場合があります)。Java では、このタイプの関係はキーワードimplement によって明確に識別されます。UML でモデリングする場合、実現関係は、一方のモデル要素 (クライアント) がもう一方のモデル要素 (サプライヤー) によって指定された動作を実装する 2 つのモデル要素間の関係です。中空の三角形の矢印が付いた破線で示されます。
ここに画像の説明を挿入

依存

クラス A が別のクラス B を使用する (「... は ... を使用する」)、依存オブジェクトはツールとしてのみ使用され、それへの参照を保持しないことが簡単に理解できます。そして、この使用関係は偶発的で一時的で非常に弱いものですが、クラス B の変更は A に影響を及ぼし、コード レベルでは、クラス B はメソッド (メソッド) 内のクラス A によってパラメータとして使用されます。あり矢印付きの点線で示されます。クラスが別のクラスの定義に依存していることを示します。依存関係は、クラス間の使用と使用の関係のみを記述します。
ここに画像の説明を挿入

例:

「車」と「車輪」は依存関係が弱まる
ここに画像の説明を挿入

協会

アソシエーション(Association)は家族のつながりを表します。関連には名前を付けることができ、ロール名、権限ポインタ、多重度、可視性、および相互関連や方向性(実線とダブテール矢印)関連などのその他のプロパティで装飾することができます。意味的には、これは 2 つのクラス間、またはクラスとインターフェイス間の強力な依存関係であり、長期的に安定した関係 (「... には ... がある」) です。関連関係とは、あるクラスが別のクラスのプロパティやメソッドを知ることであり、通常は「知る」「理解する」という意味を持ちます。オブジェクトは別のオブジェクトへの参照を長期間保持します。関連付けられた 2 つのオブジェクト間には強制的な制約はありません。2 つのオブジェクトが同意する限り、いつでも関係をキャンセルしたり関連付けたりできます。ライフサイクルの問題はありません。合意。関連付けられたオブジェクトは他のオブジェクトによって関連付けることもできるため、関連付けを共有できます。コード レベルでは、関連クラスはクラス属性の形式で関連クラス内に表示されます。または、関連クラスは、その型が関連クラスであるグローバル変数を参照する場合があります。現在、5 つの異なるタイプの関連付けが定義されています。双方向および一方向の関連付けが最も一般的です。
ここに画像の説明を挿入

例:

人と雑誌は結びつきます
ここに画像の説明を挿入

集計

全体と部分の間の特殊なタイプの関係を示します。これは「弱い」包含、「... が ... を所有する」という関係であり、コンポーネント クラスは集約クラスに依存せずに独立して存在でき、次のものを持つことができます。独自のライフサイクルがあり、パーツは複数の全体オブジェクトに属することができます。全体オブジェクトは複数の全体オブジェクトで共有することもできます (共有可能)。たとえば、池とアヒル(池の中)。別の例として、教授とコースは集約関係です。別の例は、a) 学生と書籍を所有する図書館です。図書館がなくても学生は存在することができ、学生と図書館の関係は集合体です。集約には 3 つ以上のクラスを含めることはできません。グラフィックスは中空の菱形の矢印尾と実線で表されます。
ここに画像の説明を挿入

// Aggregation
class Pond {
    
    
	private List<Duck> ducks;
}

構成

これは、一種の「強い」全体と部分の包含関係 (「 ... は ... の一部です」) です。コンポーネント クラスは複合クラスに依存して存在する必要があります。全体と部分は不可分であり、全体のライフサイクルの終わりは部分のライフサイクルの終わりを意味します。Compositing クラスは Ingredient クラスを完全に所有し、Ingredient クラスの作成と破棄を担当します。たとえば、自動車とキャブレター、会社と会社の部門は構成関係です。図は、実線のひし形の矢印と実線で表されます。
ここに画像の説明を挿入

// Composition
class Car {
    
    
    // Car is the owner of carburetor.
    // Carburetor is created when Car is created,
    // It is destroyed when Car is destroyed.
	private Carburetor carb;
}
関連性、集約、および構成の違い
  • クラスが別のクラスのメソッドのパラメータとして使用される場合、それは関連付け関係になります。
  • 集約関係では、サブクラスのライフサイクルは親クラスのライフサイクルから独立しています。
  • 合成関係では、親クラスが破壊されると、サブクラスも破壊されます。

たとえば、大学には複数の学部 (化学科など) があり、各学部には複数の教授がいます。大学が撤退すれば学部は消滅しますが、教授は存続します。また、教授は別の学部または別の学校で非常勤を務めることができ、学部が 2 つの大学に所属することはできないことにも注意してください。したがって、大学と学部との関係は合成であり、学部と教授との関係は集合である。

ここに画像の説明を挿入

一般的な関係

多重度は、参加するオブジェクトの数を定義するために使用されます。各参加クラスは多重度の値を指定する必要があります。たとえば、クラス A のインスタンスの数がクラス B のインスタンスの数に関連付けられるかなどです。現実の生活では、自動車の運転とオブジェクトの関係は、車の数は複数の関係であり、1 対多または多対多の場合があります。

おすすめ

転載: blog.csdn.net/weixin_48627356/article/details/121366486