C面向对象程序设计张冰实用教案

上传人:人*** 文档编号:569182344 上传时间:2024-07-28 格式:PPT 页数:20 大小:560KB
返回 下载 相关 举报
C面向对象程序设计张冰实用教案_第1页
第1页 / 共20页
C面向对象程序设计张冰实用教案_第2页
第2页 / 共20页
C面向对象程序设计张冰实用教案_第3页
第3页 / 共20页
C面向对象程序设计张冰实用教案_第4页
第4页 / 共20页
C面向对象程序设计张冰实用教案_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C面向对象程序设计张冰实用教案》由会员分享,可在线阅读,更多相关《C面向对象程序设计张冰实用教案(20页珍藏版)》请在金锄头文库上搜索。

1、1结构化程序设计(shj)举例问题:验证哥德巴赫猜想任意一个大于2的偶数都可以分解成两个素数之和。自顶向下、逐步求精1. 首先将问题分解成判断每个大于2的偶数n能否分解成两个素数之和2. 对上述问题进一步求精,问题的求解方法变成为选一个小于n的素数x,判断n-x是否为素数3. 问题简化为怎样判断一个数是素数4. 问题进一步简化为怎样判断一个数是否为另一个数所整除5. 到此,问题的求解过程已经完全(wnqun)清楚模块化设计、结构化编码步骤1和步骤2可以用一个函数模块proveGoldbach实现,模块中采用双重循环结构,外层循环n从4开始,每次加2。内层循环x从2开始,每次加1直到n/2。函数

2、模块的功能是判断x和n-x是否都是素数。步骤3用函数模块isPrime实现,模块内用循环结构步骤4用函数模块isDividable实现,模块内用选择结构主函数模块main直接调用proveGoldbach模块,proveGoldbach模块调用isPrime模块,isPrime模块调用isDividable模块mainproveGoldbachisPrimeisDividable第1页/共19页第一页,共20页。2内聚与耦合衡量结构化程序设计的好坏有两个指标:1.内聚度:指同一个模块中各个步骤之间的关联程度(chngd)2.耦合度:表示被调用函数与调用函数之间的接口复杂程度(chngd)质量高

3、的程序应该内聚度要高,耦合度要低#include /筛法求素数(s sh)#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是素数(s sh) k+; printf(“%ld, “, i); if (k % 15 = 0) printf(“n”); k = 0; for (j=i*i

4、; j = MAX_NUM; j += i) /将素数(s sh)i的倍数从筛子中取出 sievej = 0; printf(“n”); 存在的问题: 信息隐藏性不好.主函数既包括问题的具体(jt)解决过程,叉涉及具体(jt)的数据和对数据进行处理的算法解决方法: 用函数封装具体(jt)的数据和对数据处理的方法第2页/共19页第二页,共20页。3内聚与耦合(续)#include #define MAX_NUM 1000void findPrimeAndPrint()unsigned char sieveMAX_NUM+1; long i, j, k=0; for (i=2; i = MAX_N

5、UM; i+) sievei = 1; for (i=2; i = MAX_NUM; i+) if (sievei = 1) k+; printf(“%ld, “, 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();改进(gijn)一: 缺点: findPrimeAndPrint()函数内聚度较低。既包含求素数的功能,又要打印素数#include #define MAX_NUM 1000

6、unsigned 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 = 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) pr

7、intf(“n”); k = 0; printf(“n”);void main() findPrime(); printPrime();改进二: findPrimeAndPrint()函数分解成findPrime()和printPrime()两个(lin )高内聚的函数,但由于sieve数组成为全局变量,这两个(lin )函数的耦合度增强了第3页/共19页第三页,共20页。4结构化程序设计(shj)的缺点程序设计以功能(gngnng)为中心(而不是以数据为中心)、按步骤来进行。程序由一组相互协作的函数组成数据与处理数据的函数之间是分离的很难同时做到高内聚低耦合大型软件的编写比较复杂,软件开发和

8、维护的费用比较高软件危机问题第4页/共19页第四页,共20页。5随堂练习(linx)1.不是结构化程序设计(chnxshj)的控制结构。A.顺序B.内聚和耦合C.循环D.选择2.结构化程序设计(chnxshj)最本质的缺陷在于。A.程序设计(chnxshj)以功能为中心B.内聚度较低C.耦合度较高D.标识符命名容易冲突第5页/共19页第五页,共20页。6面向对象程序设计(chnxshj)基本原理:1.将数据(shj)和对数据(shj)进行操作(输入、访问、修改、输出等)的函数绑定封装在一个称为类的数据(shj)类型中。2.程序设计以数据(shj)为中心,程序由一组相互协作的对象组成。基本概念:

9、 对象:客观世界中任何一个事物都可以看成一个对象,对象可大可小,例如学校是一个对象,一个班级也是一个对象,一个学生也是一个对象。 任何一个对象都应当具有这两个要素: 1. 属性 2. 行为 对象(duxing)数据函数第6页/共19页第六页,共20页。7面向对象程序设计(chnxshj)举例优点: 1. 采用动态数组实现内存的按需分配2. 主函数不涉及问题具体(jt)的解决方法以及问题所涉及的数据的组织形式和处理算法3. 数据及对数据处理的函数聚集在类这样一个数据类型中,数据受到了保护4. 用类较好地实现了结构化程序设计中高内聚低耦合的思想#include using namespace st

10、d;class CSieveprivate: char *p_sieve; unsigned long num;public: CSieve(unsigned long n); void findPrime(); void printPrime(); CSieve() delete p_sieve; ;void CSieve:findPrime() long i, j; for (i=2; i = num; i+) p_sievei = 1; for (i=2; i = num; i+) if (p_sievei = 1) for (j=i*i; j = num; j += i) p_siev

11、ej = 0; void CSieve:CSieve(unsigned long n) p_sieve = new charn+1; num = n;void CSieve:printPrime() long i, k=0; for (i=2; i = MAX_NUM; i+) if (sievei = 1) k+; cout i “, “; if (k % 15 = 0) cout endl; k = 0; cout endl;void main()CSieve number(1000); number.findPrime(); number.printPrime();第7页/共19页第七页

12、,共20页。8抽象性信息隐藏与数据封装构成了面向对象程序设计的基础。信息隐藏处理某个数据的所有相关函数都集中在一起。数据封装数据在类这个封装体的外部不可能被访问。继承性提供类复合的实现机制,有助于实现代码的重用。继承性是面向对象程序设计的关键。多态性提供类对象接口与其具体实现相分离的手段多态性是面向对象程序设计的补充。函数重载用不同的接口访问同名的函数。运算符重载扩充(kuchng)运算符的功能。接口重用用同样的接口访问功能不同的函数。面向对象程序设计基本(jbn)思想第8页/共19页第八页,共20页。9每个部门有自己的数据和处理数据的方法人事档案财务报表销售数据每个部门的数据不对外公开部分之

13、间通过(tnggu)发送消息获取对方的数据抽象性举例(jl)第9页/共19页第九页,共20页。10继承性体现在产品的更新换代多态性体现在不同类型的手机采用不同的界面来实现(shxin)同一个功能继承性和多态性举例(jl)第10页/共19页第十页,共20页。11随堂练习(linx)1.数据与处理数据的函数被封装在一起,体现了面向对象程序设计的。A.抽象性B.继承性C.多态性D.数据相关性2.新产品在老产品的基础上的功能升级是特性的具体应用。A.数据封装B.信息隐藏C.继承与派生D.函数重载3.面向对象程序设计与结构化程序设计的最根本不同之处在于。A.运用了自顶向下,化抽象为具体的方法B.程序的编

14、码强调模块化原则C.从描述问题所涉及(shj)的物体的属性和行为着手D.从问题的解决过程着手第11页/共19页第十一页,共20页。12C语言的特点(tdin)优点:C语言简洁、紧凑,使用方便、灵活具有丰富的运算符和数据类型支持结构化的块结构和流控制提供了直接访问内存地址的机制,能进行位操作可移植性好缺点:C语言数据类型检查机制相对较弱数组下标越界问题初始化问题语言简洁紧凑,但同时某些特定符号可因为上下文不同分别代表不同的含义,容易混淆C语言没有支持代码重用的语言结构程序(chngx)员很难控制用C语言编写的程序(chngx)的规模和复杂性C语言不支持面向对象的程序(chngx)设计方法第12页

15、/共19页第十二页,共20页。13C+语言(yyn)的特点优点:增加了类这一复合数据类型。数据被限定在类的范围内,使其在类的外部为不可见(不能访问)。类将关系密切的一组函数与其共同处理的数据聚集在一起,能够显示某个函数与其他(qt)函数之间的逻辑关系和紧密程度。 C+程序由对象组成。采用C+语言进行程序设计便于描述现实世界各种对象的客观规律,与人类习惯的思维方法相一致。C+提供了类复合和类派生的实现机制,使得程序员可以实现现实世界中复杂的对象(由简单对象组合而成),以及便于软件的重复利用。C+通过构造函数和析构函数隐含地对对象进行初始化和释放对象占用的系统资源C+支持函数的重载,运算符重载。C

16、+提供虚函数来实现接口重用。C+采用模板,使程序设计标准化、通用化缺点:C+语言比较复杂C+语言必须与面向对象程序设计方法相结合,才能体现C+语言提供的面向对象的特征和功能。第13页/共19页第十三页,共20页。14一种(yzhn)编程风格一行(yxng)代码只写一条语句。尽可能在定义变量的同时对其初始化(就近原则)。程序的分界符和应独占一行(yxng)并且位于同一列,同时与引用它们的语句左对齐。通过在程序的每一行(yxng)开头键入不同次数的TAB键进行缩进,以体现程序的层次结构。标识符的命名尽量做到见其名知其义,且不同类型和不同属性的标识符遵循下述不同的命名法则:局部变量名用小写,变量名单

17、词之间用下划线连接如果局部变量为指针变量,则变量名以小写p开头如果局部变量为引用变量,则变量名以小写r开头全局变量名各单词的第一个字母用大写,变量名单词之间用下划线连接如果全局变量为指针变量,则变量名以大写P开头常量标识符全部大写函数名第一个单词小写,之后各单词的第一个字母大写,单词之间不用下划线连接结构名以大写S开头,之后各单词的第一个字母大写,单词之间不用下划线连接联合名以大写U开头,之后各单词的第一个字母大写,单词之间不用下划线连接枚举名以大写E开头,之后各单词的第一个字母大写,单词之间不用下划线连接类名以大写C开头,之后各单词的第一个字母大写,单词之间不用下划线连接第14页/共19页第

18、十四页,共20页。15结构化程序设计(shj)的C+程序框架预处理程序命令预处理程序命令以“#”开头,供编译程序的预处理器处理预处理程序命令有三类:宏定义命令 #define文件包含命令#include条件编译命令#ifdef#endif全局变量的定义和说明在函数外部定义的变量变量的定义指出变量的数据类型和存储类型,并为该变量分配(fnpi)相应的存储空间变量的说明是为了建立变量名与变量类型之间的对应关系,变量在说明时并不分配(fnpi)内存变量的定义是唯一的,而变量的说明可以重复出现多次用户自定义函数用户自己编写的实现特定应用程序功能的函数主函数main程序的入口,是程序最抽象最高层的功能的

19、具体实现一个程序有且仅有一个主函数第15页/共19页第十五页,共20页。16面向对象程序设计(chnxshj)的C+程序框架类的说明(.h文件)类的实现(.cpp文件)预处理程序(chngx)命令全局变量的定义和说明类成员函数的定义用户自定义函数主函数main第16页/共19页第十六页,共20页。17采用面向对象方法(fngf)(fngf)的微软 MFC MFC程序框架应用程序类主窗口框架(kun ji)类文档类视图类全局应用程序对象第17页/共19页第十七页,共20页。18随堂练习(linx)1.C+与C语言最根本的不同之处在于(ziy)。A.能够实现变量自动初始化B.使用了类C.支持软件重

20、用D. 支持接口重用2.C+程序的结构采用了.h头文件和.cpp源程序文件的组织形式,其目的是。A.简化程序的结构B.精简程序的代码C.便于软件重用D.使接口与实现分离3.形成良好统一的编码风格的意义在于(ziy)。A.提高程序开发效率B.便于移植C.便于理解和查错D.提高程序运行速度第18页/共19页第十八页,共20页。19感谢您的欣赏(xnshng)!第19页/共19页第十九页,共20页。内容(nirng)总结1。问题:验证哥德巴赫猜想任意一个大于2的偶数都可以分解成两个素数之和。1. 首先将问题分解成判断(pndun)每个大于2的偶数n能否分解成两个素数之和。内层循环x从2开始,每次加1直到n/2。质量高的程序应该内聚度要高,耦合度要低。既包含求素数的功能,又要打印素数。程序设计以功能为中心(而不是以数据为中心)、按步骤来进行。3. 数据及对数据处理的函数聚集在类这样一个数据类型中,数据受到了保护。感谢您的欣赏第二十页,共20页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号