UML中类与类之间的关系
UML中单个类由类名、属性和方法组成。从访问属性来看,又分为pulic、protected、private三种。
概述
类与类之间共有6种关系:继承、实现、依赖、关联、聚合和组合。
继承:表示两个类之间的上下级关系。当类A继承自类B时,就说类A是类B的子类,类B是类A的父类或超类。
表现形式:实线+空心三角形,三角形指向父类。
举例:
实现:表示类与接口之间的上下级关系。当类A实现自接口B时,就说类A是接口B的实现类,接口B是类A的接口。C++中接口可用抽象类来表示。
表现形式:虚线+空心三角形,三角形指向接口。
举例:
依赖:表示一个类依赖另一个类,比如驾驶员Driver需要依赖汽车类Car才能行驶。其中Car可以通过构造函数参数,方法参数,方法返回值,方法内部变量的形式存在于Driver类中。
表现形式:虚线+箭头。
举例:张三借别人的车上班
关联:表示一个类A与另一个类B之间的联系,它使类A知道类B的属性和方法。通常类B会以私有成员变量的形式存在于类A中。可以通过(构造函数,getter/setter函数)赋值。
关联形式:有一对一(员工->工牌),一对多(部门->员工),多对多(商店->商品)。
表现形式:实线+箭头。
举例:张三驾驶自己的车上班
聚合:是关联关系的一种,是更强的关联关系。聚合关系是整体和个体的关系。一般关联关系的两个类处于同一个层次上,聚合关系中的两个类处于不同的层次,一个是整体,一个是部分。
表现形式:空心菱形+实线+箭头,箭头指向个体。
举例:汽车与发动机,汽车与轮胎的关系。
组合:是关联关系的一种,是比聚合关系更强的关系。要求普通的聚合关系中代表整体的对象负责代表个体的对象的生命周期。当删除整体对象时也要级联删除个体的对象。
表现形式:实心菱形+实线+箭头,箭头指向个体。
举例:人与五脏六腑的关系,公司和部门的关系
小结
横向:平级关系
1.组合
2.聚合
3.关联
4.依赖纵向:层级关系
1.继承
2.实现
类与类之间的强弱关系:
继承 ≈ 实现 > 组合 > 聚合 > 关联 > 依赖