在面向程序设计中,类与类之间的关系主要有关联关系、依赖关系、泛化关系、接口与实现关系共四种关系。下面将简要进行概述:
一、关联关系
关联关系是类与类中较为常见的关系,其中又包含了以下六种子关联关系:
(一)双向关系:
默认情况下,关联是双向的,例如,顾客与商品、父母与子女。双向关联关系用实线表示。
(二)单向关联关系
表示一个类与另一个类单方面关联关系,例如居民拥有地址。单向关联用带箭头的实线表示。
(三)自关联关系
代表该类与自身有关联关系,一个节点类的成员又是节点对象。用指向该类的带箭头的实线表示。
(四)多重性关联关系
指一个类的对象与另一个类的对象有多重关系,常有一对多、多对一、一对一、多对多等关联关系。例如,一个界面有多个按钮。
(五)聚合关系
助记方法:“聚集”,类似物以类聚。因此关联性较低,即使某一部份不存在或者销毁,并不影响其他单元。因此,使用“空心菱形+箭头的实线”表示(空心可记为关联性低,不走心),箭头指向小的聚合个体。例如,汽车组装中的各个零件:
(六)组合关系共六种关系。
助记:“组成”,那就意味着缺一不可,关联性极高。因此使用“实心菱形+箭头的实线”表示(实心可记为关联性高,走心),例如头和嘴巴:
二、依赖关系
依赖关系(Dependency)是一种使用关系,大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。常用“箭头+虚线”表示,由依赖的一方指向被依赖的一方。例如,驾驶员开车,在Driver类中的drive()方法将利用Car类型的对象car作为一个参数传递,以便在drive()方法中能够调用car的move()方法,因此Driver类以来Car类。
三、泛化关系
泛化关系(Generalization)也称作继承关系,用于表示父类(也称基类或超类)与子类(也称派生类)之间的关系。用“实线+空心箭头”表示,例如Student与Teacher类均可继承自Person类。
四、接口与实现关系
在接口中,一般没有属性,并且所有的操作都是抽象表示的,即只有操作声明,没有操作的实现方法。实现方法由使用接口的类进行定义。例如,交通工具都会移动,故有move()方法,首先提出声明;但是轮船、汽车的move()方法又各不相同,因此根据他们的各自的特性再进行具体的定义(实现接口)。
原文地址:https://www.cnblogs.com/somedayLi/p/9709186.html