郑州大学远程教育学院0806面向对象程序设计提交作业.docx
- 文档编号:573770
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:11
- 大小:18.19KB
郑州大学远程教育学院0806面向对象程序设计提交作业.docx
《郑州大学远程教育学院0806面向对象程序设计提交作业.docx》由会员分享,可在线阅读,更多相关《郑州大学远程教育学院0806面向对象程序设计提交作业.docx(11页珍藏版)》请在冰豆网上搜索。
郑州大学远程教育学院0806面向对象程序设计提交作业
郑州大学现代远程教育《面向对象程序设计》课程考核要求
说明:
本课程考核形式为提交作业,完成后请保存为WORD格式的文档,登陆学习平台提交,并检查和确认提交成功。
一.作业要求
1.请独立自主完成作业内容。
二.作业内容
一)、简答题:
(每题5分,共30分)
1、异常处理的作用是什么?
答:
1.try和catch语句:
将要处理的代码放入try块中,然后创建相应的catch块的列表。
如果生成都异常与catch中提到的相匹配,那么catch条件中的块语句就被执行。
try块后可能有许多catch块,每个都处理不同的异常。
每个catch中的参数都是Exception的子类。
2.finally语句:
定义一个总是执行的代码,而不考虑异常是否被捕获。
3.throw引起一个异常。
2、什么是容器?
什么是迭代器?
什么是算法?
他们之间有何关系?
答:
容器:
容器能够通过模版的方法,装下各种类型的节点元素。
迭代器:
迭代器是一种smartpointer。
迭代器是一种行为类似指针的对象。
迭代器所指向的对象为容器中元素(结构体)的节点。
如定义一个classList的容器,容器的节点为ListItem,那么迭代器就应该指向(的对象)容器中的ListItem节点。
而迭代器通过重载*(解引用)运算符,从而就可以得到节点的值。
通过重载operator->运算符就可以得到容器节点地址(指针)
算法:
算法通过操作容器对应的迭代器,就可以间接地操作容器中的元素。
而不需要关注容器的内部细节
三者之间联系:
每个容器都有专属的迭代器,而算法通过迭代器对容器中的元素进行操作。
3、什么是静态成员?
有何特点?
答:
在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。
静态成员的特点是:
不管这个类创建多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。
面对对象方法中还有类属性的概念,类属性是描述类的所有对象的共同特征的一个数据项,对于任何对象实例,它的属性值是相同的,C++通过静态数据成员来实现类属性。
4、类的构造函数和析构函数有何特点?
答:
构造函数主要用来对成员初始化和分配空间,析构函数用于执行一些清理任务,如释放分配给对象的内存空间等。
构造函数有以下特点:
1.构造函数的名字必须与类名相同;
2.构造函数可以有任意类型的参数,但不能具有返回类型;
3.定义对象时,编译系统会自动地调用构造函数;
4.构造函数是特殊的成员函数,函数体可以在类体内,也可写在类体外;
5.构造函数被声明为公有函数,但它不能像其他成员函数那样被显式调用,它是在定义对象的同时被调用的。
析构函数有以下特点:
1.析构函数的名字必须与类名相同,但它前面必须加一个波浪号~;
2.析构函数没有参数,也没有返回值,而且不能被重载,因此在一个类中只能有一个析构函数;
3.当撤销对象时,编译系统会自动地调用析构函数。
5、类成员的访问权限有哪些?
答:
类成员的访问权限:
继承有关
public此成员都可公开调用;
protected同包或对继承的类才可公开调用,静态成员也必须继承后才能调用A.a或使用public;
friendly对同包的类可以公开调用;
private只有本类实例成员方法才可调用。
6、面向对象的基本要素是什么?
答:
抽象、继承、封装、多态;
二)、分析下面的代码,回答问题(每题10分,共40分)
1.下面程序的执行结果是什么?
为什么?
classB{
protected:
virtualvoidf(){cout<<"B"< public: voidg(){f();} }; classC: publicB{ protected: voidf(){cout<<"C"< }; voidmain(){ Cd; d.g(); } 输出: C 因为创建C类型的对象调用其父类的函数gg中调用f类中函数参数默认始终有一个this指针,这个调用的this指向的就是d对象调用g,g中调用f产生this->f()调用C中的f。 2.下面程序的执行结果是什么? 为什么? classA { public: intn; } classB: publicA{}; classC: publicA{}; classD: publicB,publicC { intgetn(){returnB: : n;}; } voidmain() { Dd; d.B: : n=10; d.C: : n=20; cout< : n< : n< } 输出: 1020 D类是从b类和c类派生的,而b类和c类又都是从类派生的,但各有自己的副本。 所以对于对象d,d.B: : n与d.C: : n是两个不同的数据成员,互无联系。 所以程序结果为: 10,20 3.下面程序的执行结果是什么? 为什么? classA { protected: intx; public: A(){x=0;}; A(intval){x=val;} voidoperator++(int){x++;} }; classB: publicA { inty; public: B(): A(){y=0;} B(intval1,intval2): A(val1){y=val2;} voidoperator--(int){x--;y--;} voiddisp() { cout< } }; voidmain() { Bd(3,5); d.disp(); d++; d.disp(); d--; d--; d.disp(); } 输出: 35 45 23Bd(3,5);//调用构造函数B(int,int)A(int)得到x=3y=5 d.disp();//打印35 d++;//调用继承自A的++函数,x++得到x=4y=5 d.disp();//打印45 d--;//调用B的--函数,x=3y=4 d--;//调用B的--函数,x=2y=3 d.disp();//打印23 所以结果是 35 45 23 4.下面程序的执行结果是什么? 为什么? ClassA { Public: virtualvoiddisp(){cout<<”classA”<,endl;} }; ClassB: publicA { Public: voiddisp(){cout<<”classB”<,endl;} } classC: publicA { public: voiddisp(){cout<<”classC”<,endl;} } voidcdisp(A*p){p->disp();} voidmain() { Bb; Cc; Cdisp(&b); Cdisp(&c); } 输出: classB classC B类和c类是a类的派生,p作为参数时,是一个A的指针,但是编译时,调的disp是各自继承类成员函数。 所以输出是classB,classC。 三、根据要求编写程序: (每题15分,共30分) 1.设计一个父亲类Father、母亲类Mother和子女类Child,其主要数据是姓名,子女使用父亲的姓,最后输出子女的姓名和父母姓名。 程序如下: #include #include usingnamespacestd; classfather{ public: father(){} father(stringx,stringm) { this->x=x; this->m=m; } voidgetx() { cout<<"陈"; } voidshow() { cout<<"父亲: "< } private: stringx; stringm; }; classmather{ public: mather(stringx,stringm) { mx=x; mm=m; } voidshow() { cout<<"母亲: "< } private: stringmx; stringmm; }; classchild: publicfather{ public: child(stringm) { mm=m; } voidshow() { cout< } private: stringmm; }; voidmain() { fatherf("陈","国强"); matherm("李","丽"); childc("文化"); cout<<"姓名: "; c.getx(); c.show(); f.show(); m.show(); } 运行结果如下: 姓名: 陈文化 父亲: 陈国强 母亲: 李丽 2.设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符+,以实现两个三角形对象的面积之和。 Input 输入数据有多组,每组占二行,每行包括3个整数,表示三角形的三条边(保证能构成三角形)。 Output 对于每组数据,输出占一行。 先是第1个三角形的面积,然后是第2个三角形的面积,接下来是两个面积之和。 中间用空格隔开。 SampleInput 345 456SampleOutput 6.009.9215.92 #include #include #include usingnamespacestd; classTriangle { private: doublex,y,z; doublep,m; staticdoubles; public: Triangle(doublea,doubleb,doublec) { x=a; y=b; z=c; p=(y+x+z)/2; m=sqrt(p*(p-x)*(p-y)*(p-z)); s=s+m; } voidprint() { cout< : fixed); cout< (2)< } staticvoidshow() { cout< s=0; } }; doubleTriangle: : s=0; intmain() { doublea,b,c,a1,b1,c1; while(cin>>a>>b>>c) { cin>>a1>>b1>>c1; Triangles1(a,b,c); Triangles2(a1,b1,c1); s1.print(); s2.print(); Triangle: : show(); } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 郑州大学 远程教育 学院 0806 面向 对象 程序设计 提交 作业