面向对象的技术与方法-答案

上传人:仙*** 文档编号:89980510 上传时间:2022-05-13 格式:DOC 页数:17 大小:57KB
收藏 版权申诉 举报 下载
面向对象的技术与方法-答案_第1页
第1页 / 共17页
面向对象的技术与方法-答案_第2页
第2页 / 共17页
面向对象的技术与方法-答案_第3页
第3页 / 共17页
资源描述:

《面向对象的技术与方法-答案》由会员分享,可在线阅读,更多相关《面向对象的技术与方法-答案(17页珍藏版)》请在装配图网上搜索。

1、-*大学计算机(软件)学院工程硕士考试试题(20142015学年第2学期)课程号:课序号:课程名称:面向对象的技术与方法任课教师:李征适用专业:软件工程适用年级:学生人数:印题份数:*:考 试 须 知*大学学生参加由学校组织或由学校承办的各级各类考试,必须严格执行*大学考试工作管理办法和*大学考场规则。有考试违纪作弊行为的,一律按照*大学学生考试违纪作弊处罚条例进行处理。*大学各级各类考试的监考人员,必须严格执行*大学考试工作管理办法、*大学考场规则和*大学监考人员职责。有违反学校有关规定的,严格按照*大学教学事故认定及处理办法进行处理。题号一二三四五六七八九十平时总分得分考试时间年 月 日阅

2、卷教师签名一名词解释(共5小题,每题4分,共20分)1. 封装把对象的属性和服务结合成一个独立的系统单元。尽可能隐蔽对象的内部细节。对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系2. 继承继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。定义:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。保持已有类的特性而构造新类的过程称为继承3. 派生在已有类的基础上新增自己的特性而产生新类的过程称为派生被继承的已有类称为基类(或父类)。派生出的新类称为派生类。4. 多态多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以

3、具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义。5. 拷贝构造函数拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。class 类名 public : 类名(形参);/构造函数 类名(类名 &对象名);/拷贝构造函数 .;类名: 类名(类名 &对象名)/拷贝构造函数的实现 函数体 二简答题(共4小题,每题5分,共20分)1. 简述相对于面向过程设计思想,面向对象程序设计思想所具有的优势。面向过程有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。面向对象程序使程序能够比较直接地反问题域的本来面目,软件

4、开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。2. 简述前置+运算符与后置+运算符的重载原理。假设关于ClassA进行前置和后置+的重载,则其重载函数大概形式应如下:ClassA&ClassA:operator+() /前置+itsVal+; return *this; const ClassA ClassA:operator+(int) /后置+ClassA temp(*this);itsVal+; return temp;

5、 为区别前置和后置运算符,需要在后置运算符重载函数中加参数int”,虽然这个类型在此除了以示区别之外并不代表任何实际含义;如果要重载 +为类成员函数,使之能够实现表达式 oprd+,其中 oprd 为A类对象,则 +应被重载为 A 类的成员函数,且具有一个 int 类型形参。经重载后,表达式 oprd+ 相当于 oprd.operator +(0)3. 简述私有继承与公有继承之间的区别。不同继承方式的影响主要体现在:派生类成员对基类成员的访问权限通过派生类对象对基类成员的访问权限公有继承:基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接

6、访问。派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。通过派生类的对象只能访问基类的public成员。私有继承基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问。派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。通过派生类的对象不能直接访问基类中的任何成员。4. 简述虚函数与抽象类的概念与联系。虚函数虚函数是动态绑定的基础。是非静态的成员函数。在类的声明中,在函数原型之前写virtual。vir

7、tual 只用来说明类声明中的原型,不能用在函数实现时。具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。本质:不是重载声明而是覆盖。调用方式:通过基类指针或引用,执行时会根据指针指向的对象的类,决定调用哪个函数。抽象类带有纯虚函数的类称为抽象类:class 类名 virtual 类型 函数名(参数表)=0; /纯虚函数 .作用抽象类为抽象和设计的目的而声明,将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为。对于暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现。注意抽象类只能作为基类来使用。不能声明抽象类的对象。构造函数不能是虚函数,析

8、构函数可以是虚函数。三程序分析(共4小题,每题10分,共40分,说明:阅读并分析各小题中的源程序,按要求写出程序执行结果。)1. 源程序如下:#includeusing namespace std;int i; int main() i=9; int i; i=32; couti=iendl; couti=i; return 0;请写出程序的显示输出:I = 32I = 92. 源程序如下:#includeusing namespace std;void fun();void main() fun();fun();void fun() static int a=6; int i=3; a+;

9、i+; couti=i,a=aendl;请写出程序的显示输出:i=4,a=7i=4,a=83. 源程序如下:#includeusing namespace std;class Clockpublic:Clock();void SetTime(int NewH, int NewM, int NewS); void ShowTime();Clock()private:int Hour,Minute,Second;Clock:Clock()Hour=0;Minute=0;Second=0;void Clock:SetTime(int NewH, int NewM, int NewS)Hour=New

10、H;Minute=NewM;Second=NewS;void Clock:ShowTime()coutHour:Minute:Secondendl;Clock globClock;void main()coutFirst time output:endl;globClock.ShowTime();globClock.SetTime(8,30,30);Clock myClock(globClock); coutSecond time output:endl;myClock.ShowTime();请写出程序的显示输出:First time output:0:0:0Second time outpu

11、t:8:30:304. 源程序如下:# include class vehicleint wheels;float weight;public:virtual void message()cout”vehicle messagen”;class car:public vehicleint passengers;public:void message()cout”car messagen”;class truck:public vehicleint goods;public:void message()coutmessage();ptr=&obj1;ptr-message();ptr=&obj2

12、;ptr-message()请写出程序的显示输出:vehicle messagecar messagetruck message四程序设计(共1题,共20分)一个8”字形花园如下图所示,该花园由两个圆形区域拼接而成,两个圆形区域的中心区域(圆形)为种植花草的两个花台,外围区域(圆环)则为过道,现在需要铺设过道,并在花台周围建造栅栏,过道造价为50元 / 平方米,栅栏价格为30元 / 米。花园中两个圆形区域的半径、两个花台的半径由键盘输入,要求编程求解过道与栅栏的造价。在程序设计中,要求设计Circle类,该类中的成员函数可完成圆面积、圆周长的计算,其余功能应在此类的基础上给予设计。过道过道花台

13、花台#include using namespace std;const float PI = 3.14159;const float FencePrice = 30;/ 栅栏价格const float ConcretePrice = 50;/过道造价/声明类Circle 及其数据和方法class Circle private: float radius; public: Circle(float r); /构造函数 float Circumference() const; /圆周长 float Area() const; /圆面积;/ 类的实现/ 构造函数初始化数据成员radiusCircl

14、e:Circle(float r)radius=r/ 计算圆的周长float Circle:Circumference() const return 2 * PI * radius;/ 计算圆的面积float Circle:Area() const return PI * radius * radius;void main () float radius1, radius2, radius3, radius4; /4个圆的周长 float FenceCost, ConcreteCost; / 提示用户输入半径 coutradius1; coutradius2; coutradius3; cou

15、tradius4; / 声明 Circle 对象 Circle Pool1(radius1); Circle PoolRim1(radius2); Circle Pool2(radius3); Circle PoolRim2(radius4);/ 计算栅栏造价并输出 FenceCost = ( Pool1.Circumference() + Pool2.Circumference() )* FencePrice; cout Fencing Cost is ¥ FenceCost endl; / 计算过道造价并输出 ConcreteCost = (PoolRim1.Area() Pool1.Area() + PoolRim2.Area() Pool2.Area()*ConcretePrice; cout Concrete Cost is ¥ ConcreteCost endl;运行结果请输入左边花台内圆的半径: 10请输入左边花台外圆的半径:15请输入右边花台内圆的半径:20请输入右边花台外圆的半径:25Fencing Cost is ¥5654.86Concrete Cost is ¥54977.8. z.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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