博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UML类图
阅读量:3560 次
发布时间:2019-05-20

本文共 1501 字,大约阅读时间需要 5 分钟。

类与类之间的关系

类与类之间的关系可以根据关系的强度依次分为以下五种:

泛化(Generalization)【继承、接口】-------组合(Composition)---------聚合(Aggregation)--------关联关系(Association)---------依赖关系(Dependency)

继承:  extends

接口:   implements

合成(组合):  整体和部分有统一的生命周期,共生死,"contains-a"关系

A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。

聚合:  指的是整体和部分的关系,"has-a"关系,关系强度和组合相比,较弱

A类的对象在创建时不会立即创建B类的对象,而是等待一个外界的对象传给它

传给它的这个对象不是A类创建的。

关联:  

依赖: 

依赖关系的三种表现形式:

1.类是public,可被别的类调用

2.类中某个方法的局部变量

3.类中某个方法的参数或返回值。

被类的一个方法所持有,生命周期随着方法执行结束而结束。在依赖关系中,必须使用这三种方法之一。

依赖关系的三种表现形式:

1.Computer类是public的,Person类可以调用它。

2.Computer类是Person类中某个方法的局部变量,则Person类可以调用它。代码如下:

Person有一个Programing方法,Computer类作为该方法的变量来使用。

注意Computer类的生命周期,当Programing方法被调用的时候,才被实例化。

持有Computer类的是Person类的一个方法,而不是Person类,这点是最重要的。

3.Computer类作为Person类中某个方法的参数或返回值。

Computer类被Person类的一个方法所持有,生命周期随着方法执行结束而结束。

在依赖关系中,必须使用这三种方法之一。

区别分析:

组合与聚合:   第一个是聚合,第二个是组合

1.构造函数不同

  • 聚合类的构造函数中包含另一个类的实例作为参数

因为构造函数中传递另一个类的实例,因此大雁类可以脱离雁群类独立存在。

  • 组合类的构造函数包含另一个类的实例化

因为在构造函数中进行实例化,因此两者紧密耦合在一起,同生同灭,翅膀类不能脱离大雁类存在。

2.信息的封装性不同

在聚合关系中,客户端可以同时了解GooseGroup类和Goose类,因为他们是独立的。

在组合关系中,客户端只认识大雁类,根本不知道翅膀类的存在,因为翅膀类被严密地封装在大雁类中。

关联和聚合

(1)表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

(2)关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的。

(3)关联是一种结构化的关系,指一种对象和另一种对象有联系。

(4)关联和聚合是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。

关联和依赖

(1)关联关系中,体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。

(2)依赖关系中,可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。

你可能感兴趣的文章
机器学习算法之LightGBM
查看>>
XGBoost算法
查看>>
学习SVM,这篇文章就够了!(附详细代码)
查看>>
机器学习算法GBDT
查看>>
行列式的几何意义
查看>>
柯西-施瓦茨不等式的证明
查看>>
向量点积定义的证明
查看>>
概率论与数理统计--独立和不相关
查看>>
卡兰特数(n个元素依次进栈,能得到几种不同的出栈序列)
查看>>
Antimalware Service Executable 高内存的处理办法,亲测有效
查看>>
Win10 NVIDIA Container占用CPU高的处理方法
查看>>
雅可比矩阵
查看>>
十大经典排序算法(动图演示)
查看>>
一致性Hash原理与实现
查看>>
路径规划算法总结
查看>>
A*算法详解(讲的一级棒 )
查看>>
终身规划A*算法(LPA*):Lifelong Planning A*
查看>>
路径规划算法D*学习总结
查看>>
外部排序
查看>>
面试被问高并发流量控制,我脸都绿了。。。
查看>>