看UML视频的时候感觉自己对四种关系区分的很清楚,但是真的到自己动手画图了就不知道如何去确定两者之间到底是什么关系,所以现在好好的比较一下他们之间的区别。
首先看一共有四种关系:
关联——类之间的关系,表示一个类知道、了解另一个类
一般关联
单向:箭头指向被关联的类,关联类中有一个属性是被关联类
双向:没有箭头,在两个类中彼此拥有对方作为自己的属性
教师和学生之间是双重关联,学生和学院是单向关联。
区别:双向关联的联系比较强一点,两个学生和教师两个类彼此都了解对方,而单向的则联系弱些,只有学生了解学院,而学院却不是谅解每个学生。
聚合:表示的是 is a part of 的意思
学生是班级的一员,离开了班级学生依旧可以存在。
组合:比组合关系联系更强一些
胳膊离开了学生就不能够单独的存在。
依赖——表示类、包之间的关系;包或类会引用另一个包或类。
如上学生必须要依赖食物而存在
泛化——和继承是同一个意思,只是继承是从子类的角度来说,而泛化是从父类的角度来说的
可以说动物泛化出狗和猫,狗和猫继承了动物的一些属性和方法
实现——表示类、包、组件实现接口
狗和猫都能够实现“叫”这个接口,只是猫的实现是“喵”狗实现的是“汪”
比较
关联PK依赖
相同点:关联和依赖表示的是类之间的关系,都能使用关联或依赖的类
不同点:关联在自身中回添加一个属性,而在依赖中不会添加
组合PK聚合
相同点:都能够表示一个整体和部分的关系
不同点:组合的关联性较强,部分不能离开整体单独存在;而聚合的关联性较弱,部分可以离开整体单独存在
泛化PK实现
相同点:都可以用到别的类
不同点:泛化子类继承了父类的所有,同时会有自己的特有属性或方法,从而形成有独特性的自己;而接口只是给出个方法,在不同的类中有不同的实现并没有形成独特的自己