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语言中则需要一个关键字才能多重继承

 

实现

实现关系表示

 

是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。