UML——类图

UML——类图

  • UML表示
  • 类之间的关系
    • 关联(Association)
    • 泛化(Generalization)
    • 实现(Realization)
    • 依赖(Dependency)
    • 聚合(Aggregation)
    • 组合(Composition)
  • 一点建议

在UML的静态机制中类图是一个重点,不但是设计人员关心的核心,更是实现人员关注的核心。建模工具也主要根据类图来产生代码。类图在UML中占据了一个相当重要的地位。

类图显示了一组类、接口、协作以及他们之间的关系。在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统。类及其关系就构成了类图,类图中还可以包含接口、包等元素,也可以包括对象、链等实例。接口在类图中通过构造型来表示<>。

UML表示

在类图中,类用矩形来表示,分为3个部分:名称部分(Name)、属性部分(Attribute)和操作部分(Operation,也可称作方法)。属性和操作的可见性使用+、#、-分别表示public、protected、private。

UML——类图_第1张图片

类之间的关系

类之间的关系是类图中比较复杂的内容。有关联(Association)、泛化(Generalization)、实现(Realization)、依赖(Dependency)、聚合(Aggregation)、组合(Composition)。

UML——类图_第2张图片
UML——类图_第3张图片

关联(Association)

**关联:**是模型元素之间的一种语义联系,是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。可以给关联加上关联名来描述关联的作用。关联两端的类也可以以某种角色参与关联,角色可以具有多重性,表示可以有多少个对象参与关联。可以通过关联类进一步描述关联的属性、操作以及其他信息。关联类通过一条虚线与关联连接。对于关联可以加上一些约束,以加强关联的含义。如:老师与学生,学生与课程,丈夫与妻子。

关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

**代码:**成员变量。

**箭头指向:**带普通箭头的实心线,指向被拥有者。

关联关系
类可能与它自己有关联(称为自关联),如PlanAnalyst类的实例之间的协作。注意,这里同时使用了关联端名称和关联名称,目的是提供清晰性。

UML——类图_第4张图片

多重性:说明源类的每个实例与目标类实例的连接个数。多重性应用于关联的目标端,除非显式说明,否则关系的多重性就是未指定的。

UML——类图_第5张图片

泛化(Generalization)

泛化:定义了一般元素和特殊元素之间的分类关系,类之间的这种泛化关系也就是继承关系。泛化关系是“a-kind-of(是一种)”关系,定义一般元素和特殊元素之间的分类关系。例如:老虎是动物的一种,既有老虎的特性也有动物的共性。

箭头指向:带三角箭头的实线,箭头指向父类。

UML——类图_第6张图片

实现(Realization)

实现:是一种类与接口的关系,表示类是接口所有特征和行为的实现。

箭头指向:带三角箭头的虚线,箭头指向接口。

UML——类图_第7张图片

依赖(Dependency)

依赖:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。

代码:局部变量、方法的参数或者对静态方法的调用。

箭头指向:带箭头的虚线,指向被使用者。

UML——类图_第8张图片

聚合(Aggregation)

聚合:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

代码:成员变量。

箭头指向:带空心菱形的实心线,菱形指向整体。

UML——类图_第9张图片

组合(Composition)

组合:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

代码:成员变量。

箭头指向:带实心菱形的实线,菱形指向整体。

UML——类图_第10张图片

一点建议

UML类图是强大的工具,是面向对象方法的基础,不要试图在项目的初始阶段使用所有的符号,首先应该从简单概念开始。比如类的关系等等,在需要的时候才使用。在项目的不同开发阶段,应该使用不同的观点来画类图。如果处于分析阶段应该画概念层类图,当开始着手软件设计时,应该画说明层类图,当针对某个特定的技术实现时应该画实现层类图。不要为每个事物都画一个模型,应该把精力放在关键的领域。使用类图的最大危险是过早的陷入实现的细节,为了避免这个问题,应该将重点放在概念层和说明层。

你可能感兴趣的:(开发技术,uml,软件工程)