类图组成
类图有上中下三部分:上层是类名,中间层是属性(类的成员变量),下层是方法(类的成员函数)。 #1类名的表示方式: 类名写在最上层,抽象类(类中有纯虚函数)类名需要使用斜体显示 #2属性的表示方式:【可见性】【属性名称】:【类型】= { 缺省值,可选 } #3方法的表示方式:【可见性】【方法名称】(【参数名 : 参数类型,……】):【返回值类型】虚函数的表示是使用斜体
如果是纯虚函数则需要在最后给函数指定=0。 #可见性:+ 表示public、# 表示protected、- 表示private、__(下划线)表示static
类与类之间的关系
继承关系 继承也叫作泛化(Generalization),在UML中,泛化关系用带空心三角形的实线来表示。 关联关系 关联(Assocition)表示一个对象与另一个对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等。在UML类图中,用(带接头或不带箭
头的)实线连接有关联关系的类。在C++中这种关联关系在类中体现为:一个类的对象作为另一个类的成员变量。 关联关系有三种,分别是:单向关联、双向关联、自关联。 #单向关联关系 单向关联指的是关联只有一个方向使用的连接线是带单向箭头的实线, #双向关联关系一般使用没有箭头的实线来连接有双向关联关系的两个类,有些UML绘图软件使用的是带双向箭头的实线来表示双向关联关系。 #自关联关系 自关联指的就是当前类中包含一个自身类型的对象成员,这在链表中非常常见,一般使用带箭头的实线指向自己来描述自关联关系
聚合关系 聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体的一部分,但是成员对象可以脱离整体对象独立存在。
在UML中,聚合关系指向整体对象的一端为带空心菱形的直线表示
组合关系 组合(Composition)关系也表示的是一种整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也不存在,整体对象和成员对象之间具有同生共死的关系。 在UML中组合关系用带实心菱形的直线表示,下面举个组合关系的例子: 头(Head)和 嘴巴(Mouth)、鼻子(Nose)、耳朵(Ear)、眼睛(Eye) 依赖关系 依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系,大多数情况下依赖关系体现在某个类的方法使用另一个类的对象作为参数。 在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方
关联关系、聚合关系、组合关系之间的区别
关联和聚合的区别主要在于语义上:关联的两个对象之间一般是平等的,聚合则一般是不平等的。 聚合和组合的区别则在语义和实现上都有差别: 组合的两个对象之间生命周期有很大的关联,被组合的对象在组合对象创建的同时或者创建之后创建在组合对象销毁之前销毁,聚合则无需考虑这些事情。 一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,聚合则不一样,被聚合的对象可以属于多个聚合对象。 最后,再举例子来描述一下这三种关系: 朋友之间属于关联关系,因为这种关系是平等的,关联关系只是用于表示两个对象之间的一种简单的联系而已。 图书馆看书的时候,人和书属于聚合关系。书是可以独立存在的,而且书不仅可以属于自己,也可以属于别人。 人和自己的心脏属于组合关系,因为心脏不能脱离人体而独自存在。 不过,实际应用中,这三种关系的界限划分其实没有那么清楚,有些时候我们会感觉组合和聚合没什么区别,所以,在设计的时候没必要死抠细节,只要能够利用对象之间的关系设计出可行的解决方案即可。
标签:关系,聚合,组合,对象,类图,关联,UML,uml From: https://www.cnblogs.com/ddrm/p/17748540.html