UML 2.0 Diagrams

| UML图 |
| --- |
| 
UML结构图 |
| * 类图
* 组件图
* 复合结构图
* 部署图
* 对象图
* 包图
* 剖面图
 |
| 
UML行为图 |
| * 活动图
* 通信图 (协作图)
* 交互纵览图
* 时序图
* 状态图
* 時間圖
* 用例图
 |
| * 
* 论
* 编
 |

**類別圖**是軟件工程的統一建模語言一種靜態結構圖，該圖描述了系統的類別集合，類別的屬性和類別之間的關係。

概述
--

類別圖是物件導向式的建模。他們一般都被用於概念建模（conceptual modelling）的系統分類的應用程序，並可將模型建模轉譯成程式碼。

一個類別有三個區域
* 最上面是類別名稱
* 中間部分包含類別的屬性
* 底部部分包含類別的方法

為了進一步描述系統的行為，這些類圖可以輔之以狀態圖或UML狀態機。

成員
--

UML提供機制，以代表類的成員，如屬性和方法，對他們的其他信息。

指定一個類成員（即任何屬性或方法）的可見性有下列符號，必須擺在各成員的名字之前：

```
+   公共
-   私有
#   保護（即對子類可見）
~   包（即對包内其他成員可見）

```

關係
--

### 實例層級的關係

#### 外部連結

外部連結（External links）是物件之間的基本關係。

#### 泛化

泛化（Generalization），即继承的反方向，指的是一个类（称为父类、父接口）具有另外的一个（或一些）类（称为子类、子接口）的共有功能。子类可视为其父类的特例，并可以增加新功能。用带空心三角形箭头的实线表示。

#### 实现

实现（Realization）指的是一个class类实现interface接口（可以是多个）的功能；在Java中此类关系通过关键字implements明确标识。用带空心三角形箭头的虚线表示。

#### 依赖

依赖关系（Dependency）可以简单的理解为一个类A使用到了另一个类B，" ... uses a ..."，被依赖的对象只是作为一种工具在使用，而并不持有对它的引用。而这种使用关系是具有偶然性、临时性的、非常弱的，但是B类的变化会影响到A；表现在代码层面，为类B作为参数被类A在某个method（方法）中使用。用带燕尾箭头的虚线表示。表示一个类依赖于另外一个类的定义；依赖关系仅仅描述了类与类之间的一种使用与被使用的关系。

#### 關聯

人與雜誌是一種關聯
一個關聯（Association）代表一個家族的聯繫。關聯可以命名，可以飾以角色名稱，有權指標，多重性，可視性，以及其他屬性（如相互关联和有方向的（带燕尾箭头的实线表示）关联）。在语义上是两个类之间、或类与接口之间一种强依赖关系，是一种长期的稳定的关系，" ... has a ..." 。关联关系使一个类知道另外一个类的属性和方法；通常含有"知道"、"了解"的含义。某个对象会长期的持有另一个对象的引用，关联的两个对象彼此间没有任何强制性的约束，只要二者同意，可以随时解除关系或是进行关联，它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联，所以关联是可以共享的。 在代码层面上，被关联类以类属性的形式出现在关联类中，也可能是关联类引用了一个类型为被关联类的全局变量。目前定義有五種不同類型的關聯。雙向（Bi-directional）和單向（uni-directional）的關聯是最常見的。

Class diagram showing Aggregation between two classes
#### 聚合

聚合（Aggregate）是表示整体与部分的一类特殊的关联關係，是"弱"的包含（" ... owns a ..." ）关系，成分類別可以不依靠聚合類別而单独存在，可以具有各自的生命周期，部分可以属于多个整体对象，也可以为多个整体对象共享（sharable）。例如，池塘与（池塘中的）鸭子。再例如教授與課程就是一種聚合關係。又例如图书馆包含(owns a) 学生和书籍。即使没有图书馆，学生亦可以存在，学生和图书馆之间的关系是聚集。聚集可能不涉及兩個以上的類別。圖形以空心的菱形箭尾与实线来表示。

```
// Aggregation
class Pond
{
private:
 std::vector<Duck\*> ducks;
};

```

#### 組成

组成（Composition）關係，是一类"强"的整体与部分的包含关系（" ... is a part of ..."）。成分類別必須依靠合成類別而存在。整体与部分是不可分的，整体的生命周期结束也就意味着部分的生命周期结束。合成类别完全拥有成分类别，负责创建、销毁成分类别。例如汽车与化油器，又例如公司与公司部门就是一種組成關係。圖形以實心的菱形箭尾与实线表示。

```
// Composition
class Car
{
private:

 // Car is the owner of carburetor.
 // Carburetor is created when Car is created,
 // it is destroyed when Car is destroyed.
 Carburetor carb;

};

```

#### 关联、組成和聚集差異

当一个类作为另一个类某个方法的参数时，为关联。[需要較佳来源]

两者的差别主要描述了子类的生命周期的不同。组合关系中，一旦父类被销毁子类也会随之销毁；聚合关系中，子类的生命周期与父类独立。例如，一个大学包含若干个系（如化学系），每个系由若干名教授。如果大学撤销，这些系也就不复存在了，但这些教授仍会继续存在。还需注意，一名教授可以在不同系甚至不同学校兼职，而一个系不能属于两所大学。所以，大学与系之间是组成关系，而系与教授是聚合关系。

### 類別層級的關係

#### 概括

概括（Generalization），是指類別與類別之間的共通性，通常會具有繼承（inherit）的關係。圖形以實線和空心箭頭來表示。

#### 實現

UML建模時，一個實現（realization）關係是兩個模型元素之間的關係，其中一個模型元素（客戶端）實現的行為，其他模型元素（供應商）指定。圖形以虛線和空心箭頭來表示。

### 一般關係

#### 依賴

 "Car" 與 "Wheel" 是一種弱化的依賴
依賴（Dependency）是一種弱化形式的關係，表示一類別依賴於另外的類別，因為類別在某個時間點使用另一個類別。

#### 多重

關聯多重性（Multiplicity）是用來定義參與物件數量，每個參與類別都必須指定多重性值，例如class A會有多少個instance與class B的多少個instance關連在一起，在現實生活中，一個汽車駕駛與汽車個數就是多重關係，可以是一對多，或是多對多。

参考文献
----

1. ↑ .  [2012-02-20]. （原始内容存档于2016-03-04）.

外部連結
----

* Introduction to UML 2 Class Diagrams （页面存档备份，存于）
* UML 2 Class Diagram Guidelines （页面存档备份，存于）
* IBM Class diagram Introduction （页面存档备份，存于）
* OMG UML 2.2 specification documents （页面存档备份，存于）

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
統一建模語言（UML） |
| --- |
|  |
| 背景 | 

|  |  |
| --- | --- |
| 機構 | 对象管理组织（OMG） · UML Partners（英语：） |
|  |
| 個人 | 葛來迪·布區 · 伊瓦爾·雅各布森 · 詹姆士·蘭寶 |

 |
|  |
| 概念 | 

|  |  |
| --- | --- |
| 面向对象 | 面向对象的程序设计 |
|  |
| 结构 | 執行者（英语：） · 屬性（英语：） · 類 · 元件 · 接口 · 對象 · 包 |
|  |
| 行为 | 活動（英语：） · 事件（英语：） · 訊息 · 方法 · 操作 · 狀態（英语：） · 用例 |
|  |
| 关系 | 聚合 · 關聯 · 組合 · 相依 · 泛化（繼承) |
|  |
| 其他概念 | 構造型 · 多重性 · 角色 |

 |
|  |
| 图 | 

|  |  |
| --- | --- |
| 结构图 | 類別圖 · 元件圖 · 组合结构图 · 部署圖 · 物件圖 · 包圖 · 面图 |
|  |
| 行为图 | 活動圖 · 状态图 · 用例图 · 通信圖 · 交互概述圖 · 时序图 · 時間圖 |

 |
|  |
| 主题 | 關聯式資料庫模型（ERD）比較 · 統一建模語言術語彙表（英语：） · 系統建模語言（SysML） |
|  |
| 工具 | UML工具 · 统一软件开发过程 |

 |