面向对象程序设计作业题.doc

上传人:飞****2 文档编号:50967441 上传时间:2022-10-17 格式:DOC 页数:8 大小:36KB
返回 下载 相关 举报
面向对象程序设计作业题.doc_第1页
第1页 / 共8页
面向对象程序设计作业题.doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《面向对象程序设计作业题.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计作业题.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、东北农业大学网络教育学院面向对象程序设计作业题(一)1 述什么是类,并举例说明。2 简述什么是对象,并举例说明。3 简述C+中类的成员函数的三种访问方法。4阅读程序,简洁回答有关问题:程序:# include /(1)# include /(2)class point /(3) private: /(4) float X,Y; /(5) public: /(6) point (float xi, float yi ) X=xi ,Y=yi; /(7) float GetX() return X / (8) float GetY() return Y / (9) friend float dis

2、tance (point & a ,point & b); / (10); /(11)void main () /(12) point pl (3.5,5.5), p2 (4.5,6.5); /(13) float d = distance (p1, p2); /(14) cout “The distance is ” d; /(15)float distance (point & a ,point & b) /(16) float dx = a.X b.X; /(17) float dy = a.Y b.Y; / (18) return sqrt ( dx * dx + dy * dy );

3、 / (19)问题:1)第(10)行的作用,有什么特点?2) 如果把它改写成这个类的成员函数,应该怎样改?4 创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、ChangeName() 、Display()的函数原型放在类定义中,构造函数初始化每个成员,Display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。(教材C+程序设计教程(钱能 著) 第289页 第12.2题)面向对象程序设计作业题(二)1 文件包含预编译指令#include ,有那两种格式,它们有什么区别?2 类的派生方式共有几种,基类成员权限在派生类中

4、的权限怎样变化?3 述面向对象程序设计方法相对于面向过程的程序设计方法的优越性。4 阅读程序,简洁回答有关问题:程序: # include /(1) classClock public: Clock (int H=0,int M=0, int S=0) /(2) Hour=H ;Minute=M ;Second=S; /(3) Clock ( Clock& c) /(4) Hour=c.Hour;Minute=c.Minute;Second=c.Second;/ (5) void SetTime (int H=0,int M=0,int S=0) / (6) Hour=H ;Minute=M

5、;Second=S; / (7) void ShowTime () / (8) cout Hour “:” Minute “:” Second endl; / (9) Clock () / (10)private: int Hour , Minute , Second; / (11);voidmain( void ) Clock meClock (8,30,0); / (12) MeClock.ShowTime ( ); / (13) Clock yourClock (meClock); / (14) yourClock.SetTime ( ); / (15) yourClock.ShowTi

6、me( ); / (16)问题:1)指出Clock类的外部接口的行号。2)指出Clock类的构造函数和拷贝构造函数以及析构函数所在行号。3)执行那行语句时系统自动调用了构造函数并写出被初始化的对象名。4)执行那行语句时系统调用了拷贝构造函数并写出被初始化的对象名。写出程序的运行结果。5 修改练习12.2种的类,将姓名构成类Name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,其Display()函数输出姓名。然后将Employee类中的姓名成员(字符数组)换成Name类对象。将所有原型化的函数加上成员函数定义,作为类的内部实现文件。构成完整的类库定义,要求类定

7、义与类的成员函数定义分开。(教材C+程序设计教程(钱能 著) 第289页第12.3题。)面向对象程序设计作业题(三)1简述C中结构与C+中类的区别。2简述C+中类的成员函数的三种访问方法。3简述类和对象的区别与联系并举例说明。4 阅读程序,简洁回答有关问题:程序: #include #include class Pointpublic: void Set(double ix,double iy) /设置坐标 x=ix; y=iy; double xOffset() /取y轴坐标分量 return x; double yOffset() /取x轴坐标分量 return y; double ang

8、le() /取点的极坐标 return (180/3.14159)*atan2(y,x); double radius() /取点的极坐标半径 return sqrt(x*x+y*y); protected: double x; /x轴分量 double y; /y轴分量;void main() Point p; double x,y; for(;) /重复输入x和y轴分量,直到x分量值小于0 cout x y; if(x0) break; p.Set(x,y); cout angle= p.angle() ,radius= p.radius() ,x offset= p.xOffset()

9、,y offset= p.yOffset() endl; 问题:根据类的封装性,不改变该类的公有接口,不改写主函数的情况下,只改变该点类的定义与实现,要求把原有点类的私有成员x,y改写成另外两个私有数据成员a,r分别代表该点在极坐标系下的弧度值和半径值。请写出修改后的类的定义与实现。5写出下面程序的运行结果,请用增加拷贝构造函数的方法避免存在的问题。#include class Vectorpublic: Vector(int s=100); int& Elem(int ndx); void Display(); void Set(); Vector();protected: int size

10、; int* buffer;Vector:Vector(int s) buffer=new intsize=s; for(int i=0; isize; i+) bufferi=i*i;int& Vector:Elem(int ndx) if(ndx=size) cout error in index endl; exit(1); return bufferndx;void Vector:Display() for(int j=0; jsize; j+) cout bufferj endl;void Vector:Set() for(int j=0; jsize; j+) bufferj=j+

11、1;Vector:Vector() deletebuffer; void main() Vector a(10); Vector b(a); a.Set(); b.Display();教材C+程序设计教程(钱能 著) 第329页 第14.2题。面向对象程序设计作业题(四)1.简述C+程序在内存中的分配格局。2.简述 C和C+动态内存的使用。3.简述什么是浅拷贝和深拷贝。4.阅读程序,简洁回答有关问题:程序:#include class complexprivate: int real ; int imag ; public: complex(float r=0,float i=0);compl

12、ex operator + (complex&c);complex operator - (complex&c);complex operator - ( );void print( );complex:complex(float r=0,float i=0)real=r; imag=i complex complex:operator + (complex&c)float r= real + c.real ;float i= imag + c.imag ;returncomplex(r ,i );complex complex:operator - (complex&c)float r= r

13、eal - c.real ;float i= imag - c.imag ;returncomplex(r ,i );complex operator - ( )return complex(-real,-img);void complex:print( )cout(real,imag)endl;void main()complex x(2.5,3.8),y(4.7,5.4),z;z=x+y; z.print();z=x-y; z.print();z=-x;z.print();问题:本例是使用类的成员函数来实现复数类的运算符重载,请在不改变主函数的情况下,采用友元的形式来实现复数类的运算符重载

14、。写出相应的程序。5重新编写下述程序,使函数Leisure()成为类Car和类Boat的函数。作为重新变成,在类Car和类Boat中,增加函数get() #include class Boat;class Carpublic:Car(int j) size =j; Friend int Leisure(int time,car&aobj,Boat&bobj);Protected:int size;int Leisure(int time, Car& aobj, Boat& bobj)return time * aobj.size*bobj.size;void main()Car c1(2);B

15、oat b1(3);int time =4;cout Leisure(time,c1,b1);教材C+程序设计教程(钱能 著) 第348页第15.3题。面向对象程序设计作业题(五)1.简述静态成员函数与一般成员函数的主要差别。2.简述什么是先期联编,什么是迟后联编。3.简述多继承中构造函数被调用顺序。4. 阅读程序,简洁回答有关问题:下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生梯形类(trapezoid)、圆形类(circle),并给出具体的求面积函数 class shape public: virtual float area( )=0 ; float total(shape *s ,int n) float sum=0.0; for(int i=0;iarea( ); return sum; 5根据16.12(类的分解) 节中所定义的Account类、Savings类和Checking类,编写一个应用程序,它取出一系列账号的存款,直到碰到一个标志结束的符号。要求程序用多态的方法实现,并输出取出的账号和金额数。(教材C+程序设计教程(钱能 著) 第380页 第16.2题。)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁