UML-----类之间的关系
关联
关联关系表示
普通关联
两个类之间有结构关系 通过一条直线表示
works in 是关联名 role name 是角色名
1.名称(Association name):用以描述该关系的性质。
2.角色(role):当一个类处于关联的某一端是,该类就在这个关系中扮演了一个特定的角色;角色是管理那种靠近他的一端的类对另外端的类呈现的职责。
3.多重性(Multiplicity):关联角色的多重性是说明一个关联实例中有多少个相互连接的对象。
Exactly One | 1 |
Zero or More | 0...* |
Zero or More | * |
One or More | 1...* |
Zero or One | 0...1 |
Specified Range(规定范围) | 2..4 |
Multiple,Disjoint Ranges | 2,4...6 |
单向关联
学生使用单放机,在学生的类中产生一个属性,属性的类型是单放机
双向关联
两个类中都会有对方的属性
一个类和多个类关联
自身关联
一个类与自己建立的关系。 employee可以是workers也可以是chef,他们是responsible责任关系
聚合 aggregation
描述的是整体与部分之间是松耦合的关系,用空心菱形表示。
书架和书,一个书架上面有很多很多书 一本书可以放到一个书架上,但是,一个书架可以放0或多个书,当书架没有时,书可以独立存在, 两者没有明确的声明约束。
组合 composition
描述的是整体与部分之间是紧耦合的关系,用实心菱形表示。
用实心描述,主要描述他们的生命期,只有有了人,才能有胳膊,头,他们是一种附属关系。整体存在,个体才能存在是组合。
依赖
依赖关系表示
是一种使用关系,说明一个事物规格说明的变化可能影响到使用它的另一个事物,类依赖于箭头指向的那一类。一般中类A要用到类B,我们就要说类A依赖于类B。
课程调度依赖于课程, 一般说依赖关系指的是使用的关系。在这里说的是,课程调度要使用到课程类,如何使用呢,就是在课程调度的方法add的参数中有course,所以courseschedule要用到course 。
泛化
泛化关系表示
描述的是类与类之间的继承。
继承有两类
单重继承
一个子类有且只有一个父类,不能有两个或两个以上的父类
双重继承
一个类有两个或两个以上的父类
父类是交通工具(Vehicle),细分为路上交通工具(LandVehicle),水上交通工具(WaterVehicle),对于这两个交通工具来说他们都是单重继承,只有一个父类交通工具。但是对于水陆两用车(AmphibiousVehicle)来说,他有两个父亲,属于多重继承,因此存在二异性(交通工具有速度v因此路上交通工具有一个v,水上交通工具有一个v。那么水陆两用车在继承父类时,继承到了两个v,在运行时两个v可能存在冲突)。java中一个类只能继承一个父类,不能多重继承,若是想只能添加一个接口。c语言中则需要一个关键字才能多重继承
实现
实现关系表示
是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。