第6章_数据抽象-类.ppt

第6章_数据抽象-类.ppt

ID:62163128

大小:3.63 MB

页数:92页

时间:2020-02-26

第6章_数据抽象-类.ppt_第1页
第6章_数据抽象-类.ppt_第2页
第6章_数据抽象-类.ppt_第3页
第6章_数据抽象-类.ppt_第4页
第6章_数据抽象-类.ppt_第5页
资源描述:

《第6章_数据抽象-类.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第六章数据抽象--类基于数据抽象的程序设计类和对象对象的初始化和消亡前处理常(const)成员静态(static)成员友元(friend)类作为模块本章内容数据抽象是指把数据及其操作作为一个整体(对象)来进行描述,即,数据描述中包含了能对其实施的操作。数据的使用者只需要知道对数据所能实施的操作,以及这些操作之间的关系,而不必知道数据的具体表示。数据抽象是面向对象程序设计的基础数据抽象栈是一种由若干个具有线性次序的元素所构成的复合数据。对栈只能实施两种操作:进栈(增加一个元素)和退栈(删除一个元素),并且这两个操作必须在栈的同一端(称为栈顶,top)进行。后进先出(LastInFi

2、rstOut,简称LIFO)是栈的一个重要性质。例:“栈”数据的表示与操作top栈:#includeusingnamespacestd;//定义栈数据类型constintSTACK_SIZE=100;structStack{inttop;intbuffer[STACK_SIZE];};voidinit(Stack&s){s.top=-1;}非数据抽象的“栈”数据的表示与操作boolpush(Stack&s,inti){if(s.top==STACK_SIZE-1){cout<<“Stackisoverflow.”;returnfalse;}else{s.t

3、op++;s.buffer[s.top]=i;returntrue;}}boolpop(Stack&s,int&i){if(s.top==-1){cout<<“Stackisempty.”;returnfalse;}else{i=s.buffer[s.top];s.top--;returntrue;}}//使用栈类型数据Stackst;intx;init(st);//对st进行初始化。push(st,12);//把12放进栈。pop(st,x);//把栈顶元素退栈并存入变量x。或,Stackst;intx;//对st进行初始化。st.top=-1;//把12放进栈。st.to

4、p++;st.buffer[st.top]=12;//把栈顶元素退栈并存入变量x。x=st.buffer[st.top];st.top--;#includeusingnamespacestd;//定义栈数据类型constintSTACK_SIZE=100;classStack{inttop;intbuffer[STACK_SIZE];public:Stack(){top=-1;}boolpush(inti);boolpop(int&i);}数据抽象的“栈”数据的表示与操作boolStack::push(inti){if(top==STACK_SIZE-1){c

5、out<<“Stackisoverflow.”;returnfalse;}else{top++;buffer[top]=i;returntrue;}}boolStack::pop(int&i){if(top==-1){cout<<“Stackisempty.”;returnfalse;}else{i=buffer[top];top--;returntrue;}}//使用栈类型数据Stackst;//自动地去调用st.Stack()对st进行初始化。intx;st.push(12);//把12放进栈st。st.pop(x);//把栈顶元素退栈并存入变量x。st.top=-1

6、;//Errorst.top++;//Errorst.buffer[st.top]=12;//Error在方案(1)中,数据的表示对数据的使用者是公开的,对栈的操作可以通过所提供的函数来实现,也可以直接在栈的数据表示上进行;而在方案(2)中,只能通过提供的函数来操作栈。在方案(1)中,数据和对数据的操作相互独立,数据是作为参数传给对数据进行操作的函数;而在方案(2)中,数据和对数据的操作构成了一个整体,数据操作是数据定义的一部分。方案(1)需要显式地对栈进行初始化,方案(2)则是隐式地(自动)进行初始化。两种解决方案的几点不同把程序构造成由若干对象组成,每个对象由一些数据以及对这

7、些数据所能实施的操作构成;对数据的操作是通过向包含数据的对象发送消息(调用对象的操作)来实现;对象的特征(数据与操作)由相应的类来描述;一个类所描述的对象特征可以从其它的类获得(继承)。什么是面向对象程序设计提高软件开发效率和保证软件质量的几个基本的程序设计手段抽象封装模块化软件复用可维护性解题方式与问题空间的对应为什么要面向对象?以功能为中心,强调过程(功能)抽象。数据与操作分离。实现了操作的封装,但数据是公开的,数据缺乏保护。模块边界模糊。功能往往针对某个程序而设计,这使得程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。