类与类之间的六种关系
实现关系
定义:类和接口之间的关系(一个类可以实现多个接口,实现所有接口的功能;体现了规范和实现分离的原则)
实现:implements
符号:实现用一条带空心三角箭头的虚线表示,从类指向实现的接口
继承(泛化)关系
定义:类和子类的关系,接口和子接口的关系
实现:extends
符号:一条带空心三角箭头的实线,从子类指向父类,或者子接口指向父接口
依赖关系
定义:一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A(类B作为类A的方法的参数(或者局部变量)存在)
语法:B作为A类方法中的形参、返回值或者方法中的局部变量
符号:依赖关系用由类A指向类B的带箭头虚线表示
关联关系
比依赖关系强,必然的,长期的,强烈的
单向关联
双向关联
种类
一对一(学生和学生证)
一对多(班级和学生)
多对多(学生和课程)
分类
两个类的关联(比如:客户和订单、订单和商品)
一个类和自身关联(比如:领导也是员工)
语法:类B作为成员变量形成存在于类A中
表示方法:关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记(双向关联可以取消两个箭头)
聚合关系
整体和部分的关系(关联关系的一种特例)
整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享,has-a的关系
表示方法:聚合关系以空心菱形加实线箭头表示,空心菱角在整体侧
组合关系(强聚合)
整体和部分的关系(关联关系的一种特例)
它体现的是一种contains-a的关系(关联关系的一种特例),这种关系比聚合更强,也称为强聚合。
整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分
表示方法:组合关系以实心菱形加实线箭头表示,实体菱角在整体侧