在UML中每种图都会有着各种错综复杂的关系,类图的关系可以分为四类如下图所示
依赖关系是四中关系中最弱的关系,而关联关系是一种“强”关系。
在这四类关系中,能用继承描述的时候就一定要用泛化关系,当描述接口和类的实现关系的时候一定要用实现关系
来描述,两个类之间有结构关系的时候一定要用关联关系来描述。综合分析这几种关系他们所表现的强弱关系为:泛化=实现>组合>聚合>关联>依赖
依赖关系
依赖关系是一种使用关系。带箭头的虚线表示,它说明一个事物规格说明的变化可能影响到使用它的另一个事
物。
在下图表示的是一种依赖关系 在课程表的方法中用到了add course 和delete course都使用到了课程(course)是
一种使用的关系所以是依赖关系。
上图课程和排课表之间就是一种依赖关系,课程表可以添加和删除课程,都要使用到课程类为依赖关系 。
依赖关系可以用于类和类之间,也可用于包和包之间,构件和构件之间。依赖关系是普遍存在的关系也是最弱
的关系,实体之间大都都含有依赖关系。若有依赖关系也有关联关系就要用关联来表示。
泛化关系
泛化关系和类中的继承类似比较容易区分,泛化关系描述的是“is a kind of ”(是...的一种的关系),泛化关系是使用从子类指向父类的一个带有实现的箭头来表示的。
实现关系
是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约
Circle 实现了接口Shape,Shape没有具体的定义我们并不知道形状是怎样画的,但是圆我们知道是什么形状我
们也知道怎样实现,用圆来实现Shape接口。
关联关系
关联关系是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接
普通关联关系
普通关系是使用不带箭头的线段表示的而我们在类图中常常可以看到表示关联的直线多出了箭头如下图所示,这是关联中的导航性。
在关联关系中有几种特性用来修饰关联关系,在上面的图中就有角色、多重性、导航性等。
customer(顾客)是order(订单)的所有者 “+Owner”表示角色的名称
多重性使用“..”来表示, 0..n表示0个到无穷多个,0..1表示0个或1个,3表示3个,0..5表示0~5个
关联中还有两种非常重要的形式,分别是聚合关系和组成关系
聚合关系
书是书架的一部分,书架上可以有0或多本书,聚合关系用空心菱形的箭头表示
在Rational Rose 中在视图(View)中选择 As OMT才能出现聚合关系箭头
组合关系
实心菱形箭头
组合和聚合的区别
组合是一部分的关系,对于聚合是整体和部分的关系,引擎可以有0个或多个火车,而笔记只能存在于一个列表
中,这就是他们的区别。
总结:在九中图中类图中都涉及到了关系,但在九中图中并不是每一种图都可以用这四种关系表示。总结了一下这几种关系,觉着懂了不少,还要在实践中多多探索这几种关系的区别。