java对象关系_Java对象间的关系

本文详细介绍了Java中对象之间的四种基本关系:依赖、关联、聚合和组合。依赖关系体现在局部变量、方法参数或静态方法调用中;关联是类之间的“拥有”关系,可以通过成员变量实现;聚合是强关联,代表整体与部分的关系,可能被共享;组合是更强烈的关联,整体负责部分的生命周期,不支持共享。此外,还讨论了聚合与耦合的概念,强调了模块内部的高聚合和模块间低耦合的重要性。
摘要由CSDN通过智能技术生成

1 综述

在Java中对象与对象的关系总体分为四类,分别是:依赖、关联、聚合和组合。

(1)依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义,一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。

(2)关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现

(3)聚合(Aggregation) 关系是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系

(4)组合(Composition) 关系是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的

2 依赖:

个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A

classA{public voidfun_A(){

........

}

}classB{//使用参数方式发生与A的依赖关系

public voidfun(A a){

a.fun_A();

}//使用创建对象的方式与A发生依赖关系

public voidfun(){

A a= newA();

a.fun_A();

}

}

3 关联:

关联是一种“拥有”的关系。表现在代码上,就是一个类包含另一个类的实例,通常表现为被关联类以类属性的形式出现在关联类的类定义中,也可以表现为关联类引用了一个类型为被关联类的全局变量。关联可以使单向的,也可以使双向的。依赖和关联的区别在于依赖是使用,关联是拥有.

classA{public voidfun_A(){

............

}

}classPerson{privateA a ;publicPerson(A a){this.a =a ;

}public voidwork(){

a.fun_A() ;

}

}

4 聚合

聚合是关联关系的一种,它是一种强关联关系(has-a);聚合关系是整体和个体/部分之间的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享;表现在代码层面上就是在构造器初始化时将两个类关联起来。代码如下

classA{

}classB{privateA a ;//与上面关联的代码不同之处在于构造B时必须同时构造B,也就是说B是A的不可缺少的一部分

publicB(A a){this.a =a ;

}

}

5 组合

组合也是关联关系的一种(is-a),但它是比聚合关系更强的关系.组合关系要求聚合关系中代表整体的对象要负责代表个体/部分的对象的整个生命周期;组合关系不能共享;在组合关系中,如果代表整体的对象被销毁或破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏;

classA{

...........

}classB{privateA a;publicB(){

a= newA() ;

}

}

6 聚合与耦合

与上面几个不同,这两对概念主要是强调的设计中类之间的关系。

聚合(Cohesion)是一个模块内部各成分之间相关联程度的度量。首先,聚合是对一个模块内部的度量,这也是许多情况下我们把聚合称之为内聚的原因。第二,这里出现的模块是广义的模块,它可能是子系统,可能是功能模块,也可能是功能模块中的某一个类。从不同的层次看,聚合的程度也会有所不同。第三,模块的成分包括模块的行为和状态。要做到高聚合,那么模块内部的行为必须要与模块的内部状态紧密关联。通俗来讲,一个模块仅完成一个独立的功能,模块内部不存在与该功能无关的操作或状态。

耦合(Couping)是模块之间相关联程度的度量。相对于聚合的内向性,耦合关注的是某一模块和其他模块之间的关联性。我们所追求的低耦合,就是将两个模块之间的关联尽可能的降低,一个模块发生变化对于其他模块的影响尽可能的小。

0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值