六种类关系

类之间有六种主要的关系类型:继承、实现/实现、组合、聚合、关联和依赖。六种关系的箭头如下:

然后我们来了解类关系的具体内容。

UML class diagram relationships

六种关系

在六类关系中,组合、聚合、关联三类关系的代码结构与使用属性存储另一个类的引用相同。因此,必须通过内容之间的关系来区分它们。

遗产

继承也称为泛化,用于描述父类和子类之间的关系。父类也称为基类,子类也称为派生类。
在继承关系中,子类继承父类的所有功能,父类拥有所有的属性、方法和子类。除了与父类相同的信息外,子类还包含其他信息。
例如:公共汽车、出租车、汽车都是汽车,它们都有名字,都可以在路上。

实现/实施

实现(Implementation)主要用于指定接口与实现类之间的关系
接口(包括抽象类)是方法的集合。在实现关系中,一个类实现一个接口,类中的方法实现接口声明的所有方法。

例如:汽车和船舶都是交通工具,而交通工具只是移动工具的抽象概念,而船舶和交通工具实现了特定的移动功能。

Class Diagram template: Class Diagram Realization Example (Created by Visual Paradigm Online's Class Diagram maker)

组成关系

构图:整体与局部的关系,但整体与局部不可分割

组合关系表示类的整体和部分之间的关​​系,整体和部分具有一致的生命周期。一旦整体对象不存在,部分对象也就不存在了,它们都会在同一个生命中死去。例如,一个人是由一个头和一个身体组成的。两者密不可分,并存。

聚合关系

聚合:整体与部分的关系,整体与部分可以分离。
聚合关系也代表了类的整体和部分的关系,成员对象是整体对象的一部分,但成员对象可以独立于整体对象而存在。

例如,公交车司机和工作服和帽子是整体关系的一部分,但它们可以分开。工作服和帽子可以穿在其他司机身上。公交车司机也可以穿其他工作服和帽子。

关联关系

关联:表示一个类的属性持有对另一个类的一个(或多个实例)的引用
关联是类与类之间最常用的关系,表示一种对象与另一种对象之间存在联系。组合和聚合也属于关联关系,但隶属关系类之间的关系比其他两个弱。
关联有四种:双向关联单向关联自关联多号关联
例如:汽车和司机,一辆车对应一个特定的司机,一个司机可以开多辆汽车。
在 UML 图中,双向关联可以有两个箭头没有箭头,单向关联或自关联有一个箭头
在多重关系中,您可以直接在关联行中添加一个数字,以表示相应类中的对象数量。
  • 1..1: 只有一个
  • 0..*: 零个或多个
  • 1..*:一个或多个
  • 0..1: 没有或只有一个
  • m..n: 至少 m,最多 n (m<=n)

依赖项

依赖:假设A类的变化导致B类的变化,那么说B类依赖于A类。
在大多数情况下,依赖关系反映在使用另一个类的对象作为参数的类的方法中

依赖关系是一种“使用”关系。一个特定事物的变化可能会影响其他使用它的事物,并在需要指示一个事物使用另一个事物时使用依赖关系。例如:汽车依赖汽油。如果没有汽油,汽车将无法行驶。

类图——订单系统
下面的类图对来自零售目录的客户订单进行建模。中心类是Order。与之相关的是进行购买和付款的客户付款是以下四种之一:现金支票信用卡或电汇。订单包含OrderDetails(行项目),每个项目都有关联的Item
類圖模板:UML 類圖示例:銷售訂單系統(由 Visual Paradigm Online 的類圖製作者創建)

编辑此模板

类图示例:GUI

类图也可能附有类或关系的注释。

類圖模板:類圖 GUI 示例(由 Visual Paradigm Online 的類圖製作者創建)

编辑此模板

具有用户定义约束的类图

類圖模板:類圖 - 類和包約束(由 Visual Paradigm Online 的類圖製作者創建)

编辑此模板

六种关系中,组合、聚合、关联的代码结构是相同的,可以从关系的强弱来理解。从强到弱的顺序是:继承→实现→组合→聚合→关联→依赖。下面是一个完整的UML图。