UML类图的几种关系
泛化(Generalization) |
举例:
如下图所示,员工是父类,工程师和经理是子类,工程师和经理都继承了员工父类的属性和行为。
类似的还有:动物(父类)-猫(子类);汽车(父类)-小轿车(子类)
图形表示:用带三角箭头的实线表示,箭头指向父类
继承分为单重继承和多重继承
单重继承:一个子类有且只有一个父类(如下图所示:活期账户和储蓄账户只继承了银行账户这一个父类)
多重继承::一个类有两个或两个以上的父类(如下图所示:汽车这个父类下面有陆路车和水上车两个子类,他们下面又有一个子类水陆两用车,水陆两用车既继承了陆地车辆的特征,也继承了水上车的特征,这就是多重继承)
实现(Realization) |
图形表示:带三角箭头的虚线,箭头指向接口
关联 (Association) |
关联既可以是双向的,也可以是单向的,单向的关联有一个箭头,双向的关联可以有两个箭头也可以没有箭头
多向关联:一名老师拥有多名学生,一名学生也可以有多名老师,所以老师与学生的关系是多向关联关系,可以带箭头也可以不带箭头
单向关联:一个学生拥有多门课程,但是课程是抽象概念,不拥有学生,所以课程和学生之间是单向关联
自关联:老师与老师之间的关联称为自关联
关联又分为两种
聚合 (Aggregation):松耦合, 整体-部分关系,用空心菱形表示
解释:书架没了,书也可以独立存在,他们之间没有生命依赖关系,没有强生命力的制约,不是说先有书架再有书
组合 (Composition):整体-部分关系,组合关系用实心菱形表示
解释:这是一种强耦合关系,先有书,才能有页,没有书,页也就不存在了
依赖 (Dependency) |
图形表示:依赖关系用虚线箭头表示,箭头指向被依赖一方
各种关系的强弱顺序:泛化=实现>组合>聚合>关联>依赖