类图及其相应的关系

1. 类图(Class Diagram)是显示出类、接口以及他们之间的静态结构与关系的图。其中最基本的单元是类或接口。
类图不但可以表示类(或者接口)之间的关系,也可以表示对象之间的关系。

下面是一个典型的类图:

类图1

(2)属性列表

属性可以是public、protected、private package。用的是PowerDesigner 还可能使用+、-、#、* 表示:+代表public、-代表private、#代表protected、*代表package(java默认)

(3)方法列表

方法可以是public、protected、private package。 显示的方式和属性相同

2.类图中的关系

UML类图中的关系分为四种:泛化关系、依赖关系、关联关系、实现关系;关联关系又可以细化为聚合和组合。

1. 泛化(Generalization)

(1)Generalization:泛化、一般化

Generalization表示的是类与类之间的继承关系、接口与接口之间的继承关系、类与接口之间的实现关系。如果体现到Java语言中,那就是反应extends和implements关键字。其典型类图如下所示:

关系泛化1

(2)Association:关联关系

关联关系描述的是类与类之间的连接,他表示一个类知道另一个类的属性和方法。关联关系可以是单向的或者双向的。在Java语言中,单向的关联关系是通过以实例变量的方式持有被关联对象的引用来实现的。一般来说是不建议使用双向的关联关系的。下面举例介绍单向的关联关系。

关系关联

上面的类图表现的是骑手和马之间的关系。Rider中有一个实例变量类型是Horse。

上面表示的是骑手与马之间的1对n关系。

(3)Aggregation:聚合关系

聚合关系是关联关系的一部分,是非常强的关联关系。聚合关系表现的更多的是整体与部分的关系。例如汽车和车门、发动机之间的关系。如图所示:

聚合关联

(4)Composition:组合关系

组合关系同样也是关联关系中的一种,这种关系是比聚合关系更加强的关系。我们前面提到,聚合关系表现的是整体与部分之间的关系,组合关系是在聚合关系的基础上,表示不可分割的整体与部分之间的关系。也就是说表示整体的对象需要负责表示部分的对象的生命周期。

“代表整体的对象负责保持代表部分的对象的存活,在一些情况下负责将代表部分的对象湮灭掉。代表整体的对象某些时候可以将代表部分的对象传递给另外一个对象,并由它负责代表部分的对象的生命周期。换言之,代表部分的对象同一时刻只能与一个对象构成组合关系。并且由后者排他的负责其生命周期。”——《Java与模式》

我们以人和手臂的关系举例,组合关系的类图如下:

组合关联

(5)Dependency:依赖关系
依赖关系表示一个类依赖于另一个类的定义。依赖关系是单方向的。人吃苹果,那么人依赖苹果。类图如下:

依赖关系

一般来说,被依赖的对象往往是以局部变量、方法参数的形式存在于来对象中,与关联关系不同,它不会以成员变量的形式存在于以来对象中。这一点值得注意。另外,每一个依赖都有一个名称。上面这个依赖关系的名称就是eats。

原文地址:https://www.cnblogs.com/tjxwg/p/3953244.html