内聚和耦合的举例c++string类型
内聚类型:
1.偶然内聚
模块的各成分之间没有关联,只是把分散的功能合并在⼀起。
例:A模块中有三条语句(⼀条赋值,⼀条求和,⼀条传参),表⾯上看不出任何联系,但是B、C模块中都⽤到了这三条语句,于是将这三条语句合并成了模块A。模块A中就是偶然内聚。
2.逻辑内聚
逻辑上相关的功能被放在同⼀模块中。
例:A模块实现的是将对应的⼈员信息发送给技术部,⼈事部和财政部,决定发送给哪个部门是输⼊的控制标志决定的。模块A中就是逻辑内聚。
3.时间内聚
模块完成的功能必须在同⼀时间内执⾏,但这些功能只是因为时间因素才有关联。
例:编程开始时,程序员把对所有全局变量的初始化操作放在模块A中。模块A中就是时间内聚。
4.过程内聚
模块内部的处理成分是相关的,⽽且这些处理必须以特定的次序进⾏执⾏。
例:⽤户登陆了某某⽹站,A模块负责依次读取⽤户的⽤户名、邮箱和联系⽅式,这个次序是事先规定的,不能改变。模块A中就是过程内聚。
5.通信内聚
模块的所有成分都操作同⼀数据集或⽣成同⼀数据集。
例:模块A实现将传⼊的Date类型数据转换成String类型,以及将Date类型数据插⼊数据库,这两个操作都是对“Date类型数据”⽽⾔的。模块A中就是通信内聚。
6.顺序内聚
模块的各个成分和同⼀个功能密切相关,⽽且⼀个成分的输出作为另⼀个成分的输⼊。
例:模块A实现将传⼊的Date类型数据转换成String类型,然后再将转换好的String类型数据插⼊数据
库。模块A中就是顺序内聚。
7.功能内聚
模块的所有成分对于完成单⼀的功能都是必须的。
例:模块A实现将新注册的⽤户信息(⽤户名,密码,个性签名)全部转换成String类型并插⼊数据库。模块A中就是功能内聚。
耦合类型:
1.内容耦合
⼀个模块直接修改或操作另⼀个模块的数据,或者直接转⼊另⼀个模块。
例:模块A中定义了变量a,在模块B中直接使⽤了。这种情况下模块A和模块B就是内容耦合。
2.公共耦合
两个以上的模块共同引⽤⼀个全局数据项。
例:定义了⼀个全局变量a,在A、B、C模块中均调⽤了a,这种情况下模块A、模块B、模块C就是公共耦合。
3.控制耦合
⼀个模块在界⾯上传递⼀个信号控制另⼀个模块,接收信号的模块的动作根据信号值进⾏调整。
例:模块A获取⽤户类型(普通⽤户、⾼级⽤户)传递给模块B,模块B根据不同类型的⽤户提供不同的服务。这种情况下模块A和模块B就是控制耦合。
4.标记耦合
模块间通过参数传递复杂的内部数据结构。
例:模块A向模块B传递Object类型的数据。这种情况下模块A和模块B就是标记耦合。
5.数据耦合
模块间通过参数传递基本类型的数据。
例:模块A实现两个数的加法操作,模块B实现两个加数的初始化,模块B将两个加数传给模块A,模块
A进⾏相加。这种情况下模块A和模块B就是数据耦合。
6.⾮直接耦合
模块间没有信息传递。
例:模块A实现输出字符串,模块B实现接收int数据,两者之间没有信息传递。这种情况下模块A和模块B就是⾮直接耦合。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。