对象之间的耦合性

 

数据耦合

数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.
一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或 外部变量 ) 来交换输入、输出信息的。
 

公共耦合

公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可以是 全程变量 数据结构 ,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享 外部设备 分类为外部耦合).
 

标记耦合

标记耦合指两个模块之间传递的是 数据结构 ,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.
 

控制耦合

控制耦合:模块间传递的信息不但有数据,还包括控制信息,这种块间联系方式称为控制耦合。
例如:一个模块通过传递开关、标志对某一模块的多种功能进行选择,则这两个模块之间的耦合方式是控制耦合。
控制耦合例子
public int y;
Public A(string x)
{   if (x==”true”)
{    y=1;
}
Else
{    y=0;
}
}
Public void B ( )
{  
if (y==1)
{  
F(  );   // F(  )是系统自定义的函数
}
Else
{
G(   );    // G(   )是系统自定义的函数
}
}
模块A&B之间为控制耦合因为两个模块间传递的y值是用作 控制信号 的开关量。改善方法就是把B模块调用的函数直接写入A模块中,然后删除B模块。
控制耦合的缺点:
控制耦合增加了模块之间的复杂性
去除模块间控制耦合的方法:
(1)将被调用模块内的判定上移到调用模块中进行
(2)被调用模块分解成若干单一功能模块
 
 
 

内容耦合

当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。如果发生下列情形,两个模块之间就发生了内容耦合
(1) 一个模块直接访问另一个模块的内部数据;
(2) 一个模块不通过正常入口转到另一模块内部;[1]
(3) 两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
(4) 一个模块有多个入口。
 
 
 

软件工程中

简单地说, 软件工程 中对象之间的 耦合度 就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。
有软硬件之间的耦合,还有 软件 各模块之间的耦合。
耦合性 是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。
耦合可以分为以下几种,它们之间的 耦合度 由高到低排列如下:
(1) 内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。
(2) 公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。
(3) 外部耦合 。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过 参数 表传递该全局变量的信息,则称之为外部耦合。
(4) 控制耦合 。一个模块通过接口向另一个模块传递一个控制 信号 ,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
(5) 标记耦合 。若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
(6) 数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合和最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
(7) 非直接耦合 。两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
总结:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
内聚与耦合
内聚 标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。 内聚 是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。耦合是 软件 结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。
内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。

振动模式的耦合

振动模式的耦合是指两个振动 模态 在某一振动模态下(或在某一 广义坐标 方向上)的振动输入,导致另一振动模态下(或另一广义坐标方向上)的响应。使耦合分离称为 解耦 。解耦的目的是使各个自由度上(即各振动 模态 )的振动相对独立或分离,这样可对 隔振 效果不佳的自由度独立采取措施而不影响其他自由度方向上的有关性能。当各自由度独立后,可能产生 共振 频率 比存在耦合时要小,特别在激振能量大的方向上要保证 解耦
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arisono

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值