C面向对象程序设计张冰.ppt

上传人:za****8 文档编号:13189352 上传时间:2020-06-06 格式:PPT 页数:20 大小:368KB
返回 下载 相关 举报
C面向对象程序设计张冰.ppt_第1页
第1页 / 共20页
C面向对象程序设计张冰.ppt_第2页
第2页 / 共20页
C面向对象程序设计张冰.ppt_第3页
第3页 / 共20页
点击查看更多>>
资源描述
1,第一章,程序设计与C+语言,2,面向过程的程序设计,结构化程序设计基本思想自顶向下逐步求精模块化设计结构化编码,3,结构化程序设计举例,问题:验证哥德巴赫猜想任意一个大于2的偶数都可以分解成两个素数之和。自顶向下、逐步求精1.首先将问题分解成判断每个大于2的偶数n能否分解成两个素数之和2.对上述问题进一步求精,问题的求解方法变成为选一个小于n的素数x,判断n-x是否为素数3.问题简化为怎样判断一个数是素数4.问题进一步简化为怎样判断一个数是否为另一个数所整除5.到此,问题的求解过程已经完全清楚模块化设计、结构化编码步骤1和步骤2可以用一个函数模块proveGoldbach实现,模块中采用双重循环结构,外层循环n从4开始,每次加2。内层循环x从2开始,每次加1直到n/2。函数模块的功能是判断x和n-x是否都是素数。步骤3用函数模块isPrime实现,模块内用循环结构步骤4用函数模块isDividable实现,模块内用选择结构主函数模块main直接调用proveGoldbach模块,proveGoldbach模块调用isPrime模块,isPrime模块调用isDividable模块,main,proveGoldbach,isPrime,isDividable,4,内聚与耦合,衡量结构化程序设计的好坏有两个指标:1.内聚度:指同一个模块中各个步骤之间的关联程度2.耦合度:表示被调用函数与调用函数之间的接口复杂程度质量高的程序应该内聚度要高,耦合度要低,#include/筛法求素数#defineMAX_NUM1000voidmain()unsignedcharsieveMAX_NUM+1;longi,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)/将素数i的倍数从筛子中取出sievej=0;printf(“n”);,存在的问题:信息隐藏性不好.主函数既包括问题的具体解决过程,叉涉及具体的数据和对数据进行处理的算法解决方法:用函数封装具体的数据和对数据处理的方法,5,内聚与耦合(续),#include#defineMAX_NUM1000voidfindPrimeAndPrint()unsignedcharsieveMAX_NUM+1;longi,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,“,i);if(k%15=0)printf(“n”);k=0;for(j=i*i;j=MAX_NUM;j+=i)sievej=0;printf(“n”);voidmain()findPrimeAndPrint();,改进一:缺点:findPrimeAndPrint()函数内聚度较低。既包含求素数的功能,又要打印素数,#include#defineMAX_NUM1000unsignedcharsieveMAX_NUM+1;voidfindPrime()longi,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;voidprintPrime()longi,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”);voidmain()findPrime();printPrime();,改进二:findPrimeAndPrint()函数分解成findPrime()和printPrime()两个高内聚的函数,但由于sieve数组成为全局变量,这两个函数的耦合度增强了,6,结构化程序设计的缺点,程序设计以功能为中心(而不是以数据为中心)、按步骤来进行。程序由一组相互协作的函数组成数据与处理数据的函数之间是分离的很难同时做到高内聚低耦合大型软件的编写比较复杂,软件开发和维护的费用比较高软件危机问题,7,随堂练习,1.不是结构化程序设计的控制结构。A.顺序B.内聚和耦合C.循环D.选择2.结构化程序设计最本质的缺陷在于。A.程序设计以功能为中心B.内聚度较低C.耦合度较高D.标识符命名容易冲突,8,面向对象程序设计,基本原理:1.将数据和对数据进行操作(输入、访问、修改、输出等)的函数绑定封装在一个称为类的数据类型中。2.程序设计以数据为中心,程序由一组相互协作的对象组成。基本概念:对象:客观世界中任何一个事物都可以看成一个对象,对象可大可小,例如学校是一个对象,一个班级也是一个对象,一个学生也是一个对象。任何一个对象都应当具有这两个要素:1.属性2.行为,对象,数据,函数,9,面向对象程序设计举例,优点:1.采用动态数组实现内存的按需分配2.主函数不涉及问题具体的解决方法以及问题所涉及的数据的组织形式和处理算法3.数据及对数据处理的函数聚集在类这样一个数据类型中,数据受到了保护4.用类较好地实现了结构化程序设计中高内聚低耦合的思想,#includeusingnamespacestd;classCSieveprivate:char*p_sieve;unsignedlongnum;public:CSieve(unsignedlongn);voidfindPrime();voidprintPrime();CSieve()deletep_sieve;voidCSieve:findPrime()longi,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_sievej=0;,voidCSieve:CSieve(unsignedlongn)p_sieve=newcharn+1;num=n;voidCSieve:printPrime()longi,k=0;for(i=2;i=MAX_NUM;i+)if(sievei=1)k+;couti“,“;if(k%15=0)coutendl;k=0;coutendl;voidmain()CSievenumber(1000);number.findPrime();number.printPrime();,10,抽象性信息隐藏与数据封装构成了面向对象程序设计的基础。信息隐藏处理某个数据的所有相关函数都集中在一起。数据封装数据在类这个封装体的外部不可能被访问。继承性提供类复合的实现机制,有助于实现代码的重用。继承性是面向对象程序设计的关键。多态性提供类对象接口与其具体实现相分离的手段多态性是面向对象程序设计的补充。函数重载用不同的接口访问同名的函数。运算符重载扩充运算符的功能。接口重用用同样的接口访问功能不同的函数。,面向对象程序设计基本思想,11,每个部门有自己的数据和处理数据的方法人事档案财务报表销售数据每个部门的数据不对外公开部分之间通过发送消息获取对方的数据,抽象性举例,12,继承性体现在产品的更新换代多态性体现在不同类型的手机采用不同的界面来实现同一个功能,继承性和多态性举例,13,随堂练习,1.数据与处理数据的函数被封装在一起,体现了面向对象程序设计的。A.抽象性B.继承性C.多态性D.数据相关性2.新产品在老产品的基础上的功能升级是特性的具体应用。A.数据封装B.信息隐藏C.继承与派生D.函数重载3.面向对象程序设计与结构化程序设计的最根本不同之处在于。A.运用了自顶向下,化抽象为具体的方法B.程序的编码强调模块化原则C.从描述问题所涉及的物体的属性和行为着手D.从问题的解决过程着手,14,C语言的特点,优点:C语言简洁、紧凑,使用方便、灵活具有丰富的运算符和数据类型支持结构化的块结构和流控制提供了直接访问内存地址的机制,能进行位操作可移植性好缺点:C语言数据类型检查机制相对较弱数组下标越界问题初始化问题语言简洁紧凑,但同时某些特定符号可因为上下文不同分别代表不同的含义,容易混淆C语言没有支持代码重用的语言结构程序员很难控制用C语言编写的程序的规模和复杂性C语言不支持面向对象的程序设计方法,15,C+语言的特点,优点:增加了类这一复合数据类型。数据被限定在类的范围内,使其在类的外部为不可见(不能访问)。类将关系密切的一组函数与其共同处理的数据聚集在一起,能够显示某个函数与其他函数之间的逻辑关系和紧密程度。C+程序由对象组成。采用C+语言进行程序设计便于描述现实世界各种对象的客观规律,与人类习惯的思维方法相一致。C+提供了类复合和类派生的实现机制,使得程序员可以实现现实世界中复杂的对象(由简单对象组合而成),以及便于软件的重复利用。C+通过构造函数和析构函数隐含地对对象进行初始化和释放对象占用的系统资源C+支持函数的重载,运算符重载。C+提供虚函数来实现接口重用。C+采用模板,使程序设计标准化、通用化缺点:C+语言比较复杂C+语言必须与面向对象程序设计方法相结合,才能体现C+语言提供的面向对象的特征和功能。,16,一种编程风格,一行代码只写一条语句。尽可能在定义变量的同时对其初始化(就近原则)。程序的分界符和应独占一行并且位于同一列,同时与引用它们的语句左对齐。通过在程序的每一行开头键入不同次数的TAB键进行缩进,以体现程序的层次结构。标识符的命名尽量做到见其名知其义,且不同类型和不同属性的标识符遵循下述不同的命名法则:局部变量名用小写,变量名单词之间用下划线连接如果局部变量为指针变量,则变量名以小写p开头如果局部变量为引用变量,则变量名以小写r开头全局变量名各单词的第一个字母用大写,变量名单词之间用下划线连接如果全局变量为指针变量,则变量名以大写P开头常量标识符全部大写函数名第一个单词小写,之后各单词的第一个字母大写,单词之间不用下划线连接结构名以大写S开头,之后各单词的第一个字母大写,单词之间不用下划线连接联合名以大写U开头,之后各单词的第一个字母大写,单词之间不用下划线连接枚举名以大写E开头,之后各单词的第一个字母大写,单词之间不用下划线连接类名以大写C开头,之后各单词的第一个字母大写,单词之间不用下划线连接,17,结构化程序设计的C+程序框架,预处理程序命令预处理程序命令以“#”开头,供编译程序的预处理器处理预处理程序命令有三类:宏定义命令#define文件包含命令#include条件编译命令#ifdef#endif全局变量的定义和说明在函数外部定义的变量变量的定义指出变量的数据类型和存储类型,并为该变量分配相应的存储空间变量的说明是为了建立变量名与变量类型之间的对应关系,变量在说明时并不分配内存变量的定义是唯一的,而变量的说明可以重复出现多次用户自定义函数用户自己编写的实现特定应用程序功能的函数主函数main程序的入口,是程序最抽象最高层的功能的具体实现一个程序有且仅有一个主函数,18,面向对象程序设计的C+程序框架,类的说明(.h文件)类的实现(.cpp文件)预处理程序命令全局变量的定义和说明类成员函数的定义用户自定义函数主函数main,19,采用面向对象方法的微软MFC程序框架,应用程序类主窗口框架类文档类视图类全局应用程序对象,20,随堂练习,1.C+与C语言最根本的不同之处在于。A.能够实现变量自动初始化B.使用了类C.支持软件重用D.支持接口重用2.C+程序的结构采用了.h头文件和.cpp源程序文件的组织形式,其目的是。A.简化程序的结构B.精简程序的代码C.便于软件重用D.使接口与实现分离3.形成良好统一的编码风格的意义在于。A.提高程序开发效率B.便于移植C.便于理解和查错D.提高程序运行速度,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!