面向过程面向对象精选PPT讲稿.ppt
《面向过程面向对象精选PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《面向过程面向对象精选PPT讲稿.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于面向过程面向对象第一页,讲稿共四十二页哦主要内容程序设计方法 结构化程序设计方法与面向对象程序设计方法各自特点、区别和相互联系面向对象的基本概念类、对象、封装、消息、继承、多态面向对象分析与设计(OOA、OOD)面向对象程序设计和C+语言第一章 从过程抽象到数据抽象第二页,讲稿共四十二页哦第一章 从过程抽象到数据抽象1.1 从:面向过程的程序设计从:面向过程的程序设计 到:面向对象的程序设计到:面向对象的程序设计第三页,讲稿共四十二页哦程序设计方法的发展程序设计=算法+数据结构+程序设计方法+语言工具和环境随着计算机软、硬件技术的不断发展,出现了许许多多的程序设计语言,程序设计方法也得到不
2、断发展。程序设计方法经历了一个由低级到高级,由复杂到简单的过程。目前,主要有两种程序设计方法:面向过程程序设计面向对象程序设计第四页,讲稿共四十二页哦 使用传统程序设计语言(如:C、FORTRAN)进行程序设计时,必须详细、准确地描述解题过程。因为程序设计工作主要围绕程序设计工作主要围绕设计解题过程设计解题过程来进行的来进行的,所以传统的程序设计方法称为面向过程的程序设计。1.1.1 面向过程程序设计第五页,讲稿共四十二页哦1.面向过程程序设计开发思想采用自顶向下、分而治之的方法进行模块分解与功能抽象,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的函数(在此泛指例程、函数、
3、过程),解决问题的焦点集中于函数,便于开发和维护。函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。结构化程序使用三种结构:顺序结构、分支结构和循环结构。第六页,讲稿共四十二页哦2)面向过程程序设计的特点面向过程的开发侧重于构建解决问题的处理流:1)自顶向下,逐步求精。将较复杂任务分解为简单任务。2)模块化。根据任务需完成的功能,将应用程序划分为相对独立的若干模块。模块之间关系简单、相对独立。数据结构根据处理流的要求开发。数据结构贯穿于算法过程,提供算法过程所要求操作的信息。数据结构的设计就是选择数据存储方式(如确定问题中的信息是用数组存储还是用普通的变量存储或其他更加复杂的数据结构
4、)。算法设计就是在选定的存储结构上设计一个好的算法。不同的数据结构的设计将导致差异很大的算法。系统的状态是一组全局变量。这组全局变量保存系统的状态值,把状态值从一个过程传送到另一个过程。功能抽象数据抽象数据抽象模块分解第七页,讲稿共四十二页哦【7.1.1 集合的实现与使用集合的实现与使用】设有如下的要求:向整数集合的某一子集添加若干元素,从该集合中删除某些元素,判断指定元素是否在该集合中。1.功能抽象,模块分解:自顶向下,逐步求精构建解决问题的处理流整数集合操作-(集合的建立-集合的处理-集合的输出)集合的处理-(添加元素,删除元素,搜索元素)添加元素-(添加新元素elem到集合pset。若元
5、素elem不在集合pset中,elem加到pset尾部,集合的元素个数count加1;否则,元素elem已在pset中。).2.数据结构设计:根据处理流的要求开发在程序中用整数数组set表示整数集合:集合(数组)最多含MAXLENGTH个元素,集合当前有count个元素。数据定义如下:int setMAXLENGTH;unsigned count;3)面向过程设计程序的实例第八页,讲稿共四十二页哦3.算法设计:在选定的存储结构上对每一个模块设计一个好的算法。好算法的标准:正确性;可读性;健壮性:当输入非法数据时,算法应做出适当反映或处理;执行算法所耗费的时间(时间复杂度)好;执行算法所耗费的存
6、储空间(空间复杂度)好。描述算法的方法有很多:流程图自然语言伪码描述4.程序设计:用选定的程序设计语言将算法进行代码化。第九页,讲稿共四十二页哦(1)void Add(int elem,int*pset,unsigned&count)这个函数的功能是:添加新元素elem到集合pset。若元素elem不在集合pset中,elem加到pset尾部,集合的元素个数count加1;否则,元素elem已在pset中,结束。函数定义如下:void Add(int elem,int*pset,unsigned&count)if(countMAXLENGTH)if(!Isin(elem,pset,count)
7、*(pset+(count)+)=elem;第十页,讲稿共四十二页哦(2)Remove(int elem,int*pset,unsigned&count)这个函数的功能是:从集合pset中删除元素elem。若元素elem在集合pset中且位于pseti,则将pset中最后一个元素psetcount-1替换pseti,集合的元素个数count减1;否则,给出元素不在集合中的提示信息。函数定义如下:void Remove(int elem,int*pset,unsigned&count)for(unsigned i=0;icount&*(pset+i)!=elem;i+);if(icount)*(
8、pset+i)=*(pset+(count-)-1);/集合无顺序,最后一 个移到删除之处elsecout待删除元素elem不在集合中。endl;第十一页,讲稿共四十二页哦(3)Isin(int elem,int*pset,unsigned count)这个函数的功能是:判断元素elem是否在集合pset中。从头至尾检查集合pset中的元素,若有元素elem,返回1;否则,返回0。函数定义如下:int Isin(int elem,int*pset,unsigned count)for(unsigned i=0;icount&*(pset+i)!=elem;i+);return(icount);
9、第十二页,讲稿共四十二页哦2完整的源程序#include using namespace std;#define MAXLENGTH 100void Add(int elem,int*pset,unsigned&count);void Remove(int elem,int*pset,unsigned&count);int Isin(int elem,int*pset,unsigned count);int main()int setMAXLENGTH;/集合 unsigned count=0;/集合中当前元素个数 int element,choice;while(1)cout 操作选择:en
10、dl;cout1-添加元素 endl;cout2-删除元素 endl;cout3-判断元素 endl;cout0-退出 endl;coutchoice;第十三页,讲稿共四十二页哦switch(choice)case 1:coutelement;Add(element,set,count);break;case 2:coutelement;Remove(element,set,count);break;case 3:coutelement;if(Isin(element,set,count)cout元素element在集合中。endl;else cout元素element不在集合中。endl;i
11、f(choice=0)break;return 0;第十四页,讲稿共四十二页哦int Isin(int elem,int*pset,unsigned count)for(unsigned i=0;icount&*(pset+i)!=elem;i+);return icount;void Add(int elem,int*pset,unsigned&count)if(countMAXLENGTH)if(!Isin(elem,pset,count)*(pset+(count)+)=elem;void Remove(int elem,int*pset,unsigned&count)for(unsig
12、ned i=0;icount&*(pset+i)!=elem;i+);if(icount)*(pset+i)=*(pset+(count-)-1);else cout待删除元素elem不在集合中。endl;第十五页,讲稿共四十二页哦针对上面程序的实现,讨论如下两个问题:(1)需求变化,程序改动是否容易?例如,若要将集合的数据表示改为用链表存储:不要不要count,集合的三个函数的实现及它们的使用都得改动。也就是整个程序都得改动,修改不是局部化的。问题根源:数据结构贯穿于整个算法过程。(2)集合和代码能否重用?只能重用函数,其它的难以重用。问题根源:具体的整数集合实现(数据结构)和集合的使用(数
13、据管理)混在一起。实际上,通常需要被重用的是集合,故应该把集合的实现与集合的使用分开,达做到修改局部化和可重用。改进方案:7.1.2 将集合的实现与使用分开将集合的实现与使用分开整数集合的实现可以很容易地被重用,而且是模块级的重用。整数集合的实现可以很容易地被重用,而且是模块级的重用。7.1.3 将集合用链表实现将集合用链表实现当将整数集合的实现从一维数组改写成链表时,应用程序当将整数集合的实现从一维数组改写成链表时,应用程序AppSet.cpp可以保可以保持不变。持不变。面向过程程序设计讨论面向过程程序设计讨论第十六页,讲稿共四十二页哦不管如何改进,程序或多或少存在着一些问题:不管如何改进,
14、程序或多或少存在着一些问题:主要问题主要问题1:是只能做到信息隐藏,而不能做到信息保护。例1、2、3,集合的使用者还是能够访问集合实现的数据表示,于是会有如下两种危险:(1)集合的使用者有意或无意地改写数据内容,比如在应用程序AppSet.cpp直接改写s.count的值,从而导致集合内容的破坏。(2)集合的使用者写出的代码 依赖集合实现的数据表示,这样一旦集合的实现方式改变,应用程序就会出问题。如例2应用程序中有s.datai=5;,例3集合改用链表实现,应用程序就会出错。这个问题在面向过程的程序设计语言中不能解决,需要在语言中增加新的信息保护机制。面向对象用类成员的存取权限限制来解决这样的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 过程 对象 精选 PPT 讲稿
限制150内