高级语言C++程序设计 (第二版) 刘景、周玉龙編
高级语言C++程序设计 (第二版) 刘景、周玉龙编
第七章类与对象 类:是现实世界中客观事物的抽象,通常将众多的具有相同属性的 事物归纳、组合成为某个类。 c十+中的类:把数据及对象的操作和处理封装在一个程序模块中, 形成一个整体。(包括数据成员:用于表示属性;成员函数:用 于对数据的处理。) 使用类的优点:(P201 程序设计本身更有条理。 程序的可读性更好。 程序设计的过程真正像是机器部件的组装。 程序可由多个程序员设计变得方便和自然。 由于程序的零部件化,使得程序的可重用性变成切实可行的事情 通过类与对象而实现的面向对象程序设计的三大特征:(P202) 封装性 继承性 多态性
第七章 类与对象 类:是现实世界中客观事物的抽象,通常将众多的具有相同属性的 事物归纳、组合成为某个类。 C++中的类:把数据及对象的操作和处理封装在一个程序模块中, 形成一个整体。(包括数据成员:用于表示属性;成员函数:用 于对数据的处理。) 使用类的优点: (P.201.) ➢ 程序设计本身更有条理。 ➢ 程序的可读性更好。 ➢ 程序设计的过程真正像是机器部件的组装。 ➢ 程序可由多个程序员设计变得方便和自然。 ➢ 由于程序的零部件化,使得程序的可重用性变成切实可行的事情。 通过类与对象而实现的面向对象程序设计的三大特征: (P.202.) ➢ 封装性 ➢ 继承性 ➢ 多态性
第七章类与对象 71设计一个栈类 栈( stack):运算受限的线性表,其运算特点是后进先出。 (LIFO) 两个数据成员: float data[maxsize] int top; 三个成员函数对应着) void push( float a)H//将一个数据“压入”栈顶。 float pop(void)//将栈顶的数据“弹出”返回 bool empty(void)//判断当前栈是否为空(栈)。 //program 7-1. cpp //inlcude const int maxsize=6
第七章 类与对象 ◼ 7.1 设计一个栈类 ➢ 栈(stack):运算受限的线性表,其运算特点是后进先出。 (LIFO) ➢ 两个数据成员: ➢ float data[maxsize]; ➢ int top; ➢ 三个成员函数(对应着): ➢ void push(float a);//将一个数据“压入”栈顶。 ➢ float pop(void);//将栈顶的数据“弹出”返回。 ➢ bool empty(void);//判断当前栈是否为空(栈)。 //program 7-1.cpp //inlcude const int maxsize=6;
第七章类与对象 class stack float data[maxsize]; int top; public: stacki(vod);//构造函数 ~ stack(void)//析构函数 bool empty void); void push float a; float pop(void) Si stack:: stack(void top=OF cout<<“ stack initialize”<<end
第七章 类与对象 class stack { float data[maxsize]; int top; public: stack(void); //构造函数 ~stack(void);//析构函数 bool empty(void); void push(float a); float pop(void); }; stack::stack(void){ top=0; cout<<“stack initialize.”<<endl; }
第七章类与对象 stack:: Stack ( void cout<<“ stack destroyed”<<endl bool stack:empty ( void return top==OF void satck: push(float art if(top==maxsize cout<<“ Stack overflow!”<<end returni dataltop]=ai top+十
第七章 类与对象 stack::~stack(void) { cout<<“stack destroyed”<<endl; } bool stack::empty(void){ return top==0; } void satck::push(float a){ if(top==maxsize){ cout<<“Stack overflow!”<<endl; return; } data[top]=a; top++; }
第七章类与对象 float stack: pop(void if(top==0 cout<<“ An empty stack”<<endl return o p return data[]i void main(t stack s1,s2: for(int i=1; i<=maxsize; i++) s1. push (2*i; or(i=1; i<=maxsize; i++) cout<<s1popO<<““F
第七章 类与对象 float stack::pop(void) { if(top==0){ cout<<“An empty stack!”<<endl; return 0; } top--; return data[top]; } void main(){ stack s1,s2; for(int i=1;i<=maxsize;i++) s1.push(2*i); for(i=1;i<=maxsize;i++) cout<<s1.pop()<<“ “;
第七章类与对象 void main dt stack s1, s2 for(int i=1; i<=maxsize;i++ s1 push(2*i; for(i=lii<=maxsizeji++ cout<<s1pop(<<““ for(i=1;i<=maxsize;i++) s1. push (2.5*i for(i=1; i<=maxsize; i ++) s2. push(s1 popO)i cout<<enda do cout<<s2popO<<““ while((s2 empty o) cout<<end;y
第七章 类与对象 void main(){ stack s1,s2; for(int i=1;i<=maxsize;i++) s1.push(2*i); for(i=1;i<=maxsize;i++) cout<<s1.pop()<<“ “; for(i=1;i<=maxsize;i++) s1.push(2.5*i); for(i=1;i<=maxsize;i++) s2.push(s1.pop()); cout<<endl; do cout<<s2.pop()<<“ “; while(!(s2.empty())); cout<<endl;}
第七章类与对象 72类和对象的说明 个类说明的常用格式为: class private: public. ; 类成员分为:数据成员和成员函数。 注:类的成员函数定义,既可以放在类定义体内,也可以放在类 定义体外。如果放在外面,要用“:”来限定。(放在类 体外定义时,类体内必须有其函数原型。) 类对象的声明方式:(类对象也称:类变量或类的实例) 类名>…<对象名n
第七章 类与对象 ◼ 7.2 类和对象的说明 ➢ 一个类说明的常用格式为: class { private: ; public: ; }; ➢ 类成员分为:数据成员和成员函数。 ➢ 注:类的成员函数定义,既可以放在类定义体内,也可以放在类 定义体外。如果放在外面,要用“::”来限定。(放在类 体外定义时,类体内必须有其函数原型。) ➢ 类对象的声明方式:(类对象也称:类变量或类的实例) , …
第七章类与对象 对象成员(数据成员和成员函数)的访问方式: 说明:若在该类的说明中含有带参数的构造函数,则在说明对象 的同时,要给出具体的实参初始化对象。 (实参表1)(实参表n) 注:可以说明类对象的数组以及指向对象的指针;同类型的对象 之间可以相互赋值;对象可作为函数的参数;函数的返回值可以 是类对象;类的成员可以是对象成员 示例程序: //program 7-2. cpp include iostream .h> class pointt private: float xcoordycoordi public
第七章 类与对象 ➢ 对象成员(数据成员和成员函数)的访问方式: . ➢ 说明:若在该类的说明中含有带参数的构造函数,则在说明对象 的同时,要给出具体的实参初始化对象。 (实参表1), …,(实参表n) ➢ 注:可以说明类对象的数组以及指向对象的指针;同类型的对象 之间可以相互赋值;对象可作为函数的参数;函数的返回值可以 是类对象;类的成员可以是对象成员。 ➢ 示例程序: //program 7-2.cpp #include class point{ private: float xcoord,ycoord; public:
第七章类与对象 public: float getxotreturn xcoord;iy //注意:函数体中的retu语句也可以改写为 //“ return(*this) xcoord”或“ return this> xcoord” float gety o; void setx float xxcoord=x;] void sety float y; ovid display oicout < xcoord="<<xcoord<<endiy void display oicout<<ycoord=?<<ycoord<<endiy Si float point: gety return ycoord;y void point: sety float ytycoord=yil void minot point obj1 *p,objarr[6] obj setx (123.5)
第七章 类与对象 public: float getx(){return xcoord;} //注意:函数体中的return语句也可以改写为 //“return (*this).xcoord;”或“return this->xcoord;” float gety(); void setx(float x){xcoord=x;} void sety(float y); ovid display(){cout<<“xcoord=”<<xcoord<<endl;} void display(){cout<<“ycoord=”<<ycoord<<endl;} }; float point::gety(){return ycoord;} void point::sety(float y){ycoord=y;} void main(){ point obj1,*p,objArr[6]; obj.setx(123.5);