为内聚和耦合举例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for (j=0; j<10; j++) b[j]=j; add3(b[10]); } void add3(int a[10]) { int s=0; s=a[3]+1; printf("%d\n", s); } /*主函数 main 和子函数 sum 之间为特征耦合关系*/
5) 控制耦合: /* 根据输入的年龄是否满十八岁判断是否到达法定饮酒年龄 */ #include <stdio.h> void main() {
2、为每种类型的模块内聚举一个具体的例子 1) 偶然类聚: Word 窗口的工具菜单,在本菜单中,各工具间基本没什么联系。该菜单具有偶然内聚。 2) 逻辑内聚: 一个函数能打印季度开支报告、月份开支报告和日开支报告,具体打印哪一个,将由传入的 控制标志决定,该函数具有逻辑内聚性。 3) 时间内聚: 操作系统的开机初始化模块,包含的动作没什么大的关系,但必须在开机后的一段时间内都 完成。整个开机初始化模块具有时间内聚。 4) 过程内聚: 一个模块,为某员工计算工龄工资:打开员工信息文件取出员工记录;按一定的算法计算工 龄;按一定的算法计算工龄工资。 该模块中的三个相对独立的子功能必须以特定次序执行,整个模块具有过程内聚。 5) 通信内聚:一个模块,接收一个远程传来的信息文件,保存,同时马上打印该文件。 该模块针对同一个文件操作,打印和存盘操作没有前后顺序关系,整个模块具有通信内聚。 6) 顺序内聚:某干部退休,模块计算他的离/退休工资:打开干部信息文件;读出文件中他 的职务/级别等信息,通过一定算法判断他是否具备离休资格,结论写入文件;再读出文件 中他的目前工资、工作年限、是否离休等信息,通过一定算法计算他的离/退休工资,再结 果写入文件。 该模块操作同一个文件,必须先判断出他是否离休,再计算离/退休工资。整个模块具有顺 序内聚。
printf("%s\n","您未到达法定饮酒年龄!"); }
/*主函数 main 和子函数 WineOrNot 之间为控制耦合关系*/
6) 外部耦合: #include <stdio.h> int a, b; void main( ) { pin( ); b=a+1; prt( ); } void pin( ) {
7) 功能内聚: int fac(int n) {
int f; if (n==0, n==1) f=1; else f=fac(n-1)*n; return(f); } /*函数 fac,计算 n!,本模块功能单一,具备功能内聚*/
2) 数据耦合: /*上例中,主函数 main 和子函数 fac 之间为数据耦合关系*/
3) 标记耦合: #include <stdio.h> void main( ) {int s, j, b[10];
for (j=0; j<10; j++) s=sum(b[10]); printf("%d\n", s); } int sum(int a[10]) {
int Age = 0; T=0ห้องสมุดไป่ตู้ printf("%s","请输入您的年龄:"); scanf("%d", &Age); if (age > 18)
T = 1; else
T = 0; YesOrNot(T); } void YesOrNot(int s) { if (s == 1)
printf("%s\n", "您已到达法定饮酒年龄!"); else
第5章 作 业
1、为每种类型的模块耦合举一个具体的例子
1) 非直接耦合: #include <stdio.h> void main( ) {
int a, b; printf ("print an integer number: "); scanf("%d", &a); if (a<0) printf("data error! "); else { b=fac(a); prt(b); } } int fac(int n) { int f; if (n==0, n==1) f=1; else f=fac(n-1)*n; return(f); } void prt(int x) { printf("%d\n", x); } /*函数 fac 和 prt 之间为非直接耦合关系*/
b[j]=j;
int ss=0, i; for (i=0; i<10; i++) ss=ss+a[i]; return(ss) } /*主函数 main 和子函数 sum 之间为标记耦合关系*/
4) 特征耦合: #include <stdio.h> void main( ) {int j, b[10];
printf ("print an integer number: "); scanf("%d", &a); } void prt( ) { printf("%d\n", b); } /*三个函数之间都存在外部耦合关系*/
7) 公共环境耦合:两个程序共享一个文件 8) 现代程序设计语言已经从语法上杜绝了内容耦合
5) 控制耦合: /* 根据输入的年龄是否满十八岁判断是否到达法定饮酒年龄 */ #include <stdio.h> void main() {
2、为每种类型的模块内聚举一个具体的例子 1) 偶然类聚: Word 窗口的工具菜单,在本菜单中,各工具间基本没什么联系。该菜单具有偶然内聚。 2) 逻辑内聚: 一个函数能打印季度开支报告、月份开支报告和日开支报告,具体打印哪一个,将由传入的 控制标志决定,该函数具有逻辑内聚性。 3) 时间内聚: 操作系统的开机初始化模块,包含的动作没什么大的关系,但必须在开机后的一段时间内都 完成。整个开机初始化模块具有时间内聚。 4) 过程内聚: 一个模块,为某员工计算工龄工资:打开员工信息文件取出员工记录;按一定的算法计算工 龄;按一定的算法计算工龄工资。 该模块中的三个相对独立的子功能必须以特定次序执行,整个模块具有过程内聚。 5) 通信内聚:一个模块,接收一个远程传来的信息文件,保存,同时马上打印该文件。 该模块针对同一个文件操作,打印和存盘操作没有前后顺序关系,整个模块具有通信内聚。 6) 顺序内聚:某干部退休,模块计算他的离/退休工资:打开干部信息文件;读出文件中他 的职务/级别等信息,通过一定算法判断他是否具备离休资格,结论写入文件;再读出文件 中他的目前工资、工作年限、是否离休等信息,通过一定算法计算他的离/退休工资,再结 果写入文件。 该模块操作同一个文件,必须先判断出他是否离休,再计算离/退休工资。整个模块具有顺 序内聚。
printf("%s\n","您未到达法定饮酒年龄!"); }
/*主函数 main 和子函数 WineOrNot 之间为控制耦合关系*/
6) 外部耦合: #include <stdio.h> int a, b; void main( ) { pin( ); b=a+1; prt( ); } void pin( ) {
7) 功能内聚: int fac(int n) {
int f; if (n==0, n==1) f=1; else f=fac(n-1)*n; return(f); } /*函数 fac,计算 n!,本模块功能单一,具备功能内聚*/
2) 数据耦合: /*上例中,主函数 main 和子函数 fac 之间为数据耦合关系*/
3) 标记耦合: #include <stdio.h> void main( ) {int s, j, b[10];
for (j=0; j<10; j++) s=sum(b[10]); printf("%d\n", s); } int sum(int a[10]) {
int Age = 0; T=0ห้องสมุดไป่ตู้ printf("%s","请输入您的年龄:"); scanf("%d", &Age); if (age > 18)
T = 1; else
T = 0; YesOrNot(T); } void YesOrNot(int s) { if (s == 1)
printf("%s\n", "您已到达法定饮酒年龄!"); else
第5章 作 业
1、为每种类型的模块耦合举一个具体的例子
1) 非直接耦合: #include <stdio.h> void main( ) {
int a, b; printf ("print an integer number: "); scanf("%d", &a); if (a<0) printf("data error! "); else { b=fac(a); prt(b); } } int fac(int n) { int f; if (n==0, n==1) f=1; else f=fac(n-1)*n; return(f); } void prt(int x) { printf("%d\n", x); } /*函数 fac 和 prt 之间为非直接耦合关系*/
b[j]=j;
int ss=0, i; for (i=0; i<10; i++) ss=ss+a[i]; return(ss) } /*主函数 main 和子函数 sum 之间为标记耦合关系*/
4) 特征耦合: #include <stdio.h> void main( ) {int j, b[10];
printf ("print an integer number: "); scanf("%d", &a); } void prt( ) { printf("%d\n", b); } /*三个函数之间都存在外部耦合关系*/
7) 公共环境耦合:两个程序共享一个文件 8) 现代程序设计语言已经从语法上杜绝了内容耦合