类与类的关系(依赖,组合,聚合)

发布于 2020-06-03  324 次阅读


程序的优化设计要高内聚低耦合,即:本类的行为尽量在本类中完成,不依赖第三方类,类与类的联系程度尽量最低,最好达到可拆卸

在java中类与类的关系也是设计模式的重要基础,java软件的开发分为OOA,OOD,OOP以及测试和维护

OOA:面向对象分析(了解需求)

OOD:面向对象设计(设计类和类中属性行为,以及类与类的关系,画UML图表示)

OOP:面向对象编程(实际编码)

java类的三大关系:依赖(泛化,关联),聚合,组合

依赖:类与类存在引用,一个类用到了另一个类,注:但依赖关系是整体与整体关系,如小明向小王借铅笔这是依赖关系,而电脑和鼠标却不是依赖关系因为虽然存在引用,但并不是平等事物的关系,鼠标没有电脑不能单独使用,而小明没有小王也能够正常生活(排除其他因素)

聚合:类与类存在可分割的引用,一个类引用了另一个类,但另一个类可以不具体实现,听起来和依赖差不多,但并不相同,他们定义的方向不一样,注:聚合是整体与部分的关系,部分脱离整体也可以单独实现的,如上面的电脑和鼠标,电脑没有鼠标也能用

组合:类与类存在不可分割的引用,一个类引用了另一个类,但另一个类必须要被实现,组合也是整体和部分的关系,但部分不能脱离整体,在整体中必须被实现,如整体没有了部分将不再完整 ,如:汽车和轮胎,没有轮胎的汽车是没啥用的,所以轮胎必须再汽车中得到实现,

依赖的特例:

关联:定义和依赖相似,分为单向关联和双向关联

单向关联:A类和B类,A类引用了B类但B类没有引用A类,例:小明向小王借了支铅笔,小王没有借小明东西

双向关联:A类和B类向互引用,例:小王同时也向小明借了个女朋友

泛化(继承):不多说

依赖和聚合,组合的区别:

依赖关注的是整体和整体的关系,整体与整体指的是平级的类,聚合与组合关注的是整体与部分的关系,聚合是整                                                   体和部分的可拆分,组合是不可拆分

高内聚:在Java设计中,本类行为尽量在本类中实现,不依赖,聚合,组合其他类

低耦合:一般在Java类的耦合程度 组合>聚合>依赖,代码尽量减少耦合程度,一般要实现代码的可插拔,用聚合和组合,注:前面说的或许会矛盾,虽然依赖的耦合性最低,但并不能实现代码灵活扩展性,聚合的插拔性好,

高内聚和低耦合只是一个最平衡的思想

UML的类图使用

UML工具(staruml)下载地址:http://staruml.io/download/releases/StarUML%20Setup%203.2.2.exe

UML(统一建模语言):uml是软件设计的一个主要的工具

UML的常用图:用例图

类图

时序图

部署图

活动图等等

我们主要说类图:在uml类图中,依赖,聚合,关联由不同指向箭头表示

不同连线代表不同关系,本图是个垃圾图,之后不想写了

 

 

 

 

 

 

 

 


路漫漫其修远兮,吾将上下而求索