(4条消息) 设计模式(二)——UML类图介绍_冯Jungle的个人博客-CSDN博客_qt类关系图
UML类图常用关系
在UML类图中,常有以下几种关系:泛化(Generalization)、实现(Realization)、关联(Association)、聚合(Aggregation)、组合(Composition)和依赖(Dependency)。按照关系的强弱顺序:泛化≥实现>关联>聚合>组合>依赖。
UML类的表示
如图,类由一个矩形框表示,矩形框分为3层:
- 第一层:类的名称;如果该类是抽象类,则使用斜体;
- 第二层:类的属性,即成员变量,[可见性]名称:类型[=默认值];
- 第三层:类的方法,即成员函数,[可见性]名称([参数列表])[:返回类型]。
成员变量和成员方法前面有权限修饰符:
- “-”:private——私有
- “+”:public——公有
- “#”:protected——保护性
2.类之间的关系
2.1.泛化(Generalization)
- 含义:类的继承关系。
- 表示:用空心三角和实线,空心三角指向父类。
- 举例:狗和猫都是一种动物。
2.2.实现(Realization)
- 含义:类与接口的关系,表示类是接口所有特征和行为的实现。
- 表示:用空心三角和虚线,空心三角指向接口。
- 举例:狗和猫实现了动物的“eat()”和"run()"的接口。
2.3.关联(Association)
关联是一种拥有关系(has),一个类可以调用另一个类的公有的属性和方法。在类中以成员变量的方式表示。比如老师有自己的学生,知道学生的姓名学号成绩;学生有自己的老师,也知道老师的姓名和所教的科目。关联分为单向关联、双向关联和自关联。
2.3.1.单向关联
- 含义:某个属性
- 表示:带箭头的直线表示。
- 举例:老师(Teacher类)有(has)自己的地址(Address类)
2.3.2.双向关联
- 含义:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
- 表示:用一条直线连接两个类,也可以用双向箭头。
- 举例:老师(Teacher类)有自己的学生(Student类),学生也有自己的老师。
2.3.3.自关联
- 含义:自己引用自己
- 表示:带箭头的直线,指向自己。
- 举例:二叉树结构体(刷题时经常碰见吧)
2.3.4.多重性关联
- 含义:对象之间存在多种多重性关联关系,如下表:
- 表示:带箭头的直线,指向有关系的对象,可以在关联直线上用一个数字或数字范围表示。
- 举例:一个窗体界面对象有多个按钮对象
2.4.聚合(Aggregation)
- 含义:整体与部分的关系,部分离开整体后可以单独存在。常用于类的成员变量。
- 表示:带空心菱形和箭头的直线(或没有箭头),菱形挨着整体,箭头指向部分。
- 举例:汽车和轮胎,轮胎是汽车的一部分,但轮胎也可以单独存在。
2.5.组合(Composition)
- 含义:整体与部分的关系,部分离开整体后不可以单独存在,代表整体的对象负责代表部分的对象的生命周期。常用于类的成员变量。
- 表示:带实心菱形和箭头的直线(或没有箭头),菱形挨着整体,箭头指向部分。
- 举例:公司和部门,部门是公司的一部分,但部门不可以单独存在。
2.6.依赖(Dependency)
- 含义:是一种使用的关系,即一个类的实现需要另一个类的协助,常用于类方法的局部变量、方法参数等。
- 表示:带箭头的虚线,箭头指向协助的类(下面例子中箭头指向Food类)。
- 举例:Animal的eat()方法的参数是Food
2.7.注意事项
注意:关联、聚合和组合、依赖的区别
- 关联代表类与类的关系;
- 聚合和组合代表整体与部分的关系;
- 依赖是一种弱的关系,表示一个类的方法的实现需要用到另一个类,但二者之间并没有明显的关系。