類別圖

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

 概述 
類別圖是物件導向式的建模。他們一般都被用於概念建模（conceptual modelling）的系統分類的應用程序，並可將模型建模轉譯成程式碼。
 最上面是類別名稱
 中間部分包含類別的屬性
 底部部分包含類別的方法

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

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

指定一個類成員（即任何屬性或方法）的可見性有下列符號，必須擺在各成員的名字之前：
+   公共
-   私有
#   保護（即對子類可見）
~   包（即對包内其他成員可見）

 關係 
 實例層級的關係 
 外部連結 
外部連結（External links）是物件之間的基本關係。
 泛化 
泛化（Generalization），即继承的反方向，指的是一个类（称为父类、父接口）具有另外的一个（或一些）类（称为子类、子接口）的共有功能。子类可视为其父类的特例，并可以增加新功能。用带空心三角形箭头的实线表示。

 实现 
实现（Realization）指的是一个class类实现interface接口（可以是多个）的功能；在Java中此类关系通过关键字implements明确标识。用带空心三角形箭头的虚线表示。
 依赖 
依赖关系（Dependency）可以简单的理解为一个类A使用到了另一个类B，" ... uses a ..."，被依赖的对象只是作为一种工具在使用，而并不持有对它的引用。而这种使用关系是具有偶然性、临时性的、非常弱的，但是B类的变化会影响到A；表现在代码层面，为类B作为参数被类A在某个method（方法）中使用。用带燕尾箭头的虚线表示。表示一个类依赖于另外一个类的定义；依赖关系仅仅描述了类与类之间的一种使用与被使用的关系。
 關聯 
400px|right|thumbnail|人與雜誌是一種關聯
一個關聯（Association）代表一個家族的聯繫。關聯可以命名，可以飾以角色名稱，有權指標，多重性，可視性，以及其他屬性（如相互关联和有方向的（带燕尾箭头的实线表示）关联）。在语义上是两个类之间、或类与接口之间一种强依赖关系，是一种长期的稳定的关系，" ... has a ..." 。关联关系使一个类知道另外一个类的属性和方法；通常含有“知道”、“了解”的含义。某个对象会长期的持有另一个对象的引用，关联的两个对象彼此间没有任何强制性的约束，只要二者同意，可以随时解除关系或是进行关联，它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联，所以关联是可以共享的。 在代码层面上，被关联类以类属性的形式出现在关联类中，也可能是关联类引用了一个类型为被关联类的全局变量。目前定義有五種不同類型的關聯。雙向（Bi-directional）和單向（uni-directional）的關聯是最常見的。

300px|right|thumbnail|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;

};
 关联、組成和聚集-{zh-cn:的;zh-tw:之;}-差異 
当一个类作为另一个类某个方法的参数时，为关联。

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

 類別層級的關係 

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

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

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

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

参考文献

 外部連結 
 Introduction to UML 2 Class Diagrams 
 UML 2 Class Diagram Guidelines 
 IBM Class diagram Introduction 
 OMG UML 2.2 specification documents 

Category:统一建模语言图表