标题: 关于藕合和内聚的问题
性别:未知-离线 陈珺

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 军师将军
好贴 5
功绩 26
帖子 927
编号 3820
注册 2003-12-27
来自 福建福州


发表于 2005-2-17 15:50 资料 个人空间 短消息 只看该作者
偶然内聚
逻辑内聚
时间内聚
过程内聚
通讯内聚
顺序内聚
功能内聚
内容藕合
公共藕合
控制藕合
标记藕合
数据藕合
非直接藕合
看了书上的定义很是抽象,能不能给个具体的例子呢?谢谢


顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5800
编号 622
注册 2004-7-7


发表于 2005-2-17 21:18 资料 文集 短消息 只看该作者
先随便说几句,有空再补充

0. 耦合和内聚什么意思应该知道了吧,就不说了,反正要追求高内聚低耦合(而不是高内聚无耦合,耦合和内聚是一定存在的,有高低之分而已)
耦合内聚也跟功能的划分有关,如果一味追求高内聚可能造成功能过度细分,甚至一个加法运算都封装为一个模块。需要根据具体的问题以及经验来划分功能。没有必要每写一个模块都要去分析这个模块符合哪种程度的定义。而且有些时候低内聚高耦合也是必须的,比如初始化函数,无论怎么写总会在某个地方造成至少时间内聚。

1. 偶然内聚
此内聚只有偶然性缺乏必然性,比如将打开文件和计算两个数的和两个功能放在一个模块里,没有任何道理,只是作者想这么写就这么写了。
2. 逻辑内聚
模块内各功能在逻辑上存在一定关系,比如读文件读键盘读串口的功能放在一起。
3. 时间内聚
只是因为模块内各功能在时间上需要一起执行而放在一起,比如在初始化时读数据初始化打印机初始化数组各功能。
4. 过程内聚
基本同3,个人理解是3中各功能顺序无关而本层次内聚各功能需按一定顺序执行。
5. 通讯内聚
功能间需要通讯而聚合在一起,通常是两个功能需要操作同一个数据,比如读写缓冲区的两个功能放在一起。
6. 顺序内聚
基本同4,并且前一个的输出是后一个的输入。比如一个多遍压缩算法。
7. 功能内聚
模块中所有成分都是完成一个特定功能所必须的。


顶部
性别:未知-离线 金圭子

白衣伯爵中大夫

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14
组别 白衣卿相
级别 征西将军
好贴 4
功绩 265
帖子 4926
编号 27961
注册 2004-12-16


发表于 2005-2-18 10:30 资料 文集 短消息 只看该作者
耦合和内聚是什么………………………………     -_\\

(纯粹灌水,无需回答,我自己想知道会去搜索引擎的)
顶部
性别:未知-离线 秋风落叶

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 99
编号 32857
注册 2005-2-16


发表于 2005-2-18 11:01 资料 主页 短消息 只看该作者
呵呵。一般称为“经验内聚”(也是纯净水)
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5800
编号 622
注册 2004-7-7


发表于 2005-2-18 13:19 资料 文集 短消息 只看该作者


QUOTE:
原帖由秋风落叶于2005-02-18, 11:01:32发表
呵呵。一般称为“经验内聚”(也是纯净水)

经验内聚是什么?  真没听说过。
顶部
性别:女-离线 湘水楚云

寿阳公主

Rank: 12Rank: 12Rank: 12
组别 翰林学士
级别 右将军
功绩 303
帖子 1092
编号 7987
注册 2004-5-30


路过学习下~

顺便问问,这是哪门课的DD?~~
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5800
编号 622
注册 2004-7-7


发表于 2005-2-18 13:33 资料 文集 短消息 只看该作者
版上难得来个MM啊,欢迎欢迎,常来看看啊。

这个是软件工程的东西吧,呵呵,记不清了。
顶部
性别:未知-离线 秋风落叶

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 99
编号 32857
注册 2005-2-16


发表于 2005-2-18 17:18 资料 主页 短消息 只看该作者


QUOTE:
原帖由Maxwell于2005-02-18, 13:19:32发表
经验内聚是什么?  真没听说过。

呵呵,是一句玩笑。
具体的设计,现在虽然理论很多,实践上多数是逆的,即把内聚归于上面的一类到几类。
从面向对象的角度来说,同一个对象,在时空上产生不同程序员的不同类,含有经验成分,玩笑的说法是经验内聚,我认为应该是“需求内聚”(这个词自编的,有点幼稚)。
Maxwell基础知识很扎实,我这方面也忘的差不多了,要去补课了。
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5800
编号 622
注册 2004-7-7


发表于 2005-2-18 18:05 资料 文集 短消息 只看该作者
在设计时不能预先定义某一模块要做到某一级的耦合内聚,耦合内聚更像是作为评价和改进模块时的一种度量吧。
顶部
性别:未知-离线 秋风落叶

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 99
编号 32857
注册 2005-2-16


发表于 2005-2-18 18:23 资料 主页 短消息 只看该作者


QUOTE:
原帖由Maxwell于2005-02-18, 18:05:28发表
在设计时不能预先定义某一模块要做到某一级的耦合内聚,耦合内聚更像是作为评价和改进模块时的一种度量吧。

正解。
但实践上很少有人真的这么度量(也许有,我没遇到过,可能是孤陋寡闻吧),只是把结果归类,与其说有指导意义,不如说有理论价值。这也是所谓“经验”说法的缘由。
顶部
性别:未知-离线 陈珺

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 军师将军
好贴 5
功绩 26
帖子 927
编号 3820
注册 2003-12-27
来自 福建福州


发表于 2005-2-18 22:10 资料 个人空间 短消息 只看该作者


觉得这些定义比较抽象,需要一个具体的程序实例来理解.
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5800
编号 622
注册 2004-7-7


发表于 2005-2-18 22:24 资料 文集 短消息 只看该作者
举例作用不大吧,如果你理解了,我描述的那些例子就够了,如果不理解,看到例子也无法应用到其他的模块中。

或者把我举的例子写成程序就可以了。
顶部

正在浏览此帖的会员 - 共 2 人在线




当前时区 GMT+8, 现在时间是 2025-2-10 19:48
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.011882 second(s), 8 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP