C面向对象程序设计张冰.ppt
《C面向对象程序设计张冰.ppt》由会员分享,可在线阅读,更多相关《C面向对象程序设计张冰.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章第一章 程序设计与C+语言1 1面向过程的程序设计面向过程的程序设计结构化程序设计基本思想自顶向下逐步求精模块化设计结构化编码2 2结构化程序设计举例结构化程序设计举例问题:验证哥德巴赫猜想任意一个大于2的偶数都可以分解成两个素数之和。自顶向下、逐步求精1.首先将问题分解成判断每个大于2的偶数n能否分解成两个素数之和2.对上述问题进一步求精,问题的求解方法变成为选一个小于n的素数x,判断n-x是否为素数3.问题简化为怎样判断一个数是素数4.问题进一步简化为怎样判断一个数是否为另一个数所整除5.到此,问题的求解过程已经完全清楚模块化设计、结构化编码步骤1和步骤2可以用一个函数模块prove
2、Goldbach实现,模块中采用双重循环结构,外层循环n从4开始,每次加2。内层循环x从2开始,每次加1直到n/2。函数模块的功能是判断x和n-x是否都是素数。步骤3用函数模块isPrime实现,模块内用循环结构步骤4用函数模块isDividable实现,模块内用选择结构主函数模块main直接调用proveGoldbach模块,proveGoldbach模块调用isPrime模块,isPrime模块调用isDividable模块mainproveGoldbachisPrimeisDividable3 3内聚与耦合内聚与耦合衡量结构化程序设计的好坏有两个指标:1.内聚度:指同一个模块中各个步骤之
3、间的关联程度2.耦合度:表示被调用函数与调用函数之间的接口复杂程度质量高的程序应该内聚度要高,耦合度要低#include /筛法求素数#define MAX_NUM 1000 void main()unsigned char sieveMAX_NUM+1;long i,j,k=0;for(i=2;i=MAX_NUM;i+)/将全部数放进筛子 sievei=1;for(i=2;i=MAX_NUM;i+)if(sievei=1)/如果i在筛子里,也即i是素数 k+;printf(“%ld,“,i);if(k%15=0)printf(“n”);k=0;for(j=i*i;j=MAX_NUM;j+=i
4、)/将素数i的倍数从筛子中取出 sievej=0;printf(“n”);存在的问题:信息隐藏性不好.主函数既包括问题的具体解决过程,叉涉及具体的数据和对数据进行处理的算法解决方法:用函数封装具体的数据和对数据处理的方法4 4内聚与耦合内聚与耦合(续续)#include#define MAX_NUM 1000void findPrimeAndPrint()unsigned char sieveMAX_NUM+1;long i,j,k=0;for(i=2;i=MAX_NUM;i+)sievei=1;for(i=2;i=MAX_NUM;i+)if(sievei=1)k+;printf(“%ld,“
5、,i);if(k%15=0)printf(“n”);k=0;for(j=i*i;j=MAX_NUM;j+=i)sievej=0;printf(“n”);void main()findPrimeAndPrint();改进一:缺点:findPrimeAndPrint()函数内聚度较低。既包含求素数的功能,又要打印素数#include#define MAX_NUM 1000unsigned char sieveMAX_NUM+1;void findPrime()long i,j;for(i=2;i=MAX_NUM;i+)sievei=1;for(i=2;i=MAX_NUM;i+)if(sievei=
6、1)for(j=i*i;j=MAX_NUM;j+=i)sievej=0;void printPrime()long i,k=0;for(i=2;i=MAX_NUM;i+)if(sievei=1)k+;printf(“%ld,“,i);if(k%15=0)printf(“n”);k=0;printf(“n”);void main()findPrime();printPrime();改进二:findPrimeAndPrint()函数分解成findPrime()和printPrime()两个高内聚的函数,但由于sieve数组成为全局变量,这两个函数的耦合度增强了5 5结构化程序设计的缺点结构化程序设
7、计的缺点程序设计以功能为中心(而不是以数据为中心)、按步骤来进行。程序由一组相互协作的函数组成数据与处理数据的函数之间是分离的很难同时做到高内聚低耦合大型软件的编写比较复杂,软件开发和维护的费用比较高软件危机问题6 6随堂练习随堂练习1.不是结构化程序设计的控制结构。A.顺序 B.内聚和耦合 C.循环 D.选择2.结构化程序设计最本质的缺陷在于。A.程序设计以功能为中心 B.内聚度较低 C.耦合度较高 D.标识符命名容易冲突7 7面向对象程序设计面向对象程序设计基本原理:1.将数据和对数据进行操作(输入、访问、修改、输出等)的函数绑定封装在一个称为类的数据类型中。2.程序设计以数据为中心,程序
8、由一组相互协作的对象组成。基本概念:对象:客观世界中任何一个事物都可以看成一个对象,对象可大可小,例如学校是一个对象,一个班级也是一个对象,一个学生也是一个对象。任何一个对象都应当具有这两个要素:1.属性 2.行为 对象数据函数8 8面向对象程序设计举例面向对象程序设计举例优点:1.采用动态数组实现内存的按需分配2.主函数不涉及问题具体的解决方法以及问题所涉及的数据的组织形式和处理算法3.数据及对数据处理的函数聚集在类这样一个数据类型中,数据受到了保护4.用类较好地实现了结构化程序设计中高内聚低耦合的思想#include using namespace std;class CSievepriv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计
限制150内