面向对象程序设计文档_第1页
面向对象程序设计文档_第2页
面向对象程序设计文档_第3页
面向对象程序设计文档_第4页
面向对象程序设计文档_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。系领导审批并签名A/B卷广州大学~年第一学期考试卷课程面向对象程序设计考试形式(闭卷,考试)学院系专业班级学号姓名题次一二三四五六七八九十总分评卷人分数20204020100评分填空题(20分)_____是特殊的成员函数,在创立和初始化对象时调用。_____是局部于类的成员,它提供一种同类对象的_____机制。运算符重载的作用是使运算符能够操作自定义的___,但重载后运算符原有的__不变。派生类不能访问基类的___成员,但能够访问基类的公有成员和___成员。具有_____的类称为抽象类。Windows应用程序是靠__来驱动的,其主函数的主要任务是对窗口进行初始化工作和___。MFC是用消息映射表来实现消息与___之间的映射的,MFC经过_____个宏来声明和实现消息映射表。在文档/视图结构的框架中,视图类___类的对象用来显示数据并接受用户操作。文档类__对象的作用是存储和管理数据。CPaintDC是___类中最常见的派生类,它只能使用在CView类的___函数中。消息WM_MOUSEMOVE的消息响应函数的函数名为____。资源是供Windows应用程序使用的特殊数据,它们驻留在硬盘上的__中。常见的资源有菜单、快捷键、_____、位图等。内存中的对象能够以文件的形式存储在永久性存储介质中,而当应用程序再把它从永久性存储介质读入后,该对象能恢复为原来的状态,则该对象称之为_____。二、简述题(20分,每题5分)(1)简述构成文档/视图结构应用程序框架的4个MFC派生类,并说出它们的功能。(2)为什么拆分窗口的显示更新必须要同步?文档类的成员函数UpdateAllViews的作用是什么?(3)怎样才能使控件成为窗口的子窗口而且在窗口中可见?按钮控件能创造哪三种不同的形式?(4)如何把绘图工具载入设备描述环境进行绘画?请以画笔为例写出执行步骤。三、阅读下列程序,写出执行结果。(40分,每题5分)1、#include<iostream.h>classAbc{public:Abc(){a=0;b=0;c=0;}Abc(inti,intj,intk){a=i;b=j;c=k;}voidget(int&i,int&j,int&k){i=a;j=b;k=c;}Abcoperator*(Abcobj);private:inta,b,c;};AbcAbc::operator*(Abcobj){Abctempobj;tempobj.a=a*obj.a;tempobj.b=b*obj.b;tempobj.c=c*obj.c;returntempobj;}voidmain(){Abcobj1(1,2,3),obj2(5,5,5),obj3;inta,b,c;obj3=obj1*obj2;obj3.get(a,b,c);cout<<”(obj1*obj2):\t”<<”a=”<<a<<’\t’<<”b=”<<b<<’\t’<<”c=”<<c<<’\t’<<endl;(obj2*obj3).get(a,b,c);cout<<”(obj2*obj3):\t”<<”a=”<<a<<’\t’<<”b=”<<b<<’\t’<<”c=”<<c<<’\t’<<endl;}2、#include<iostream.h>classBASE1{public:BASE1(inti){cout<<”调用基类BASE1的构造函数:”<<i<<endl;}};classBASE2{public:BASE2(intj){cout<<”调用基类BASE2的构造函数:”<<j<<endl;}};classA:publicBASE1,publicBASE2{public:A(inta,intb,intc,intd):BASE2(b),BASE1(c),b2(a),b1(d){cout<<”调用派生类A的构造函数;”<<a+b+c+d<<endl;}private:BASE1b1;BASE2b2;};voidmain(){Aojb(11,22,33,44);}3、#include<iostream.h>template<typenameT>voidfun(T&x,T&y){Ttemp;temp=x;x=y;y=temp;}voidfun(doublex,inty){doubletemp;temp=x;x=y;y=temp;}voidmain(){inti,j;i=30;j=10;fun(i,j);cout<<”i=”<<i<<’\t’<<”j=”<<j<<endl;doublea,b;a=1.23;b=3.21;fun(a,b);cout<<”a=”<<a<<’\t’<<”b=”<<b<<endl;doublem=10;intn=30;fun(m,n);cout<<”m=”<<m<<’\t’<<”n=”<<n<<endl;}4、#include<iostream.h>voidmain(){doublex=123.456;cout.width(10);cout.setf(ios::dec,ios::basefield);cout<<x<<endl;cout.setf(ios::left);cout<<x<<endl;cout.width(15);cout.setf(ios::right,ios::left);cout<<x<<endl;cout.setf(ios::showpos);cout<<x<<endl;cout<<-x<<endl;cout.setf(ios::scientific);cout<<x<<endl;}5、#include<iostream.h>enumBREED{GOLDEN,CAIRN,DANDIE,SHETLAND,DOBERMAN,LAB};classMammal{public: Mammal():itsAge(2),itsWeight(5){} //constructors ~Mammal(){} intGetAge()const {returnitsAge;} voidSetAge(intage){itsAge=age;} intGetWeight()const{returnitsWeight;} voidSetWeight(intweight){itsWeight=weight;} voidSpeak()const{cout<<"Mammalsound!\n";} voidSleep()const{cout<<"shhh.I'msleeping.\n";}protected: intitsAge; intitsWeight;};classDog:publicMammal{public: Dog():itsBreed(GOLDEN){} ~Dog(){} BREEDGetBreed()const{returnitsBreed;} voidSetBreed(BREEDbreed){itsBreed=breed;} voidWagTail()const{cout<<"Tailwagging...\n";} voidBegForFood()const{cout<<"Beggingforfood...\n";}private: BREEDitsBreed;};intmain(){ Dogfido; fido.Speak(); fido.WagTail(); cout<<"Fidois"<<fido.GetAge()<<"yearsold\n"; return0;}6、#include<iostream.h>classBase{public:voidwho(){cout<<”Baseclass”<<endl;};classDerived1:publicBase{public:voidwho(){cout<<”Derived1class”<<endl;};classderived2:publicBase{public:voidwho(){cout<<”Derived2class”<<endl;Voidmain(){baseobj1,*p;derived1obj2;derived2obj3;P=&obj1;p->who();P=&obj2;p->who();P=&obj3;p->who();Obj1.who();Obj2.who();Obj3.who();}7、#include<iostream.h>classexample{private:intdate;staticintcount;public:example(inty=10):date(y){cout<<”date=”<<date<<endl;Count++;}staticintdisplay(){returncount;}};intexample::count=0;voidmain(){examplee1;examplee2(20);cout<<e1.Display()<<endl;cout<<e2.Display()<<endl;cout<<example::Display()<<endl;}8、指出下列程序中的错误,并说明理由#include<iostream.h>classStudent{public:voidStudent(){};voidDisplay(){cin>>name>>number;cout<<姓名<<name<<学号<<number<<endl;}private:char*name=noname;intnumber=0;};四、编程题:(20分,每题10分)编写一个程序,实现小型公司的工资管理。该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元,兼职技术人员按每小时100元领取月薪,销售员按当月销售额的4%提成,销售经理既拿固定月工资又拿销售提成,固定月工资为5000元,销售提成为所管部门当月销售总额的0.5%。要求补充未完成的代码,使其成为一个完整的程序。#include<iostream.h>classEmployee{public:employee(){cout<<”职工编号、姓名”;cin>>no>>name;salary=0;}voidPay(){}voidDisplay(){}Protected:Intno;charname[10];floatsalary;};Classtechnician:publicEmployee//派生技术人员{public:Technician(){hourlyrate=100.0;}voidPay(){cout<<name<<”本月工作时数:”cin>>workhours;salary=hourlyrate*workhours;}voidDisplay(){cout<<”兼职技术人员”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl;}private://补充下面内容};ClassSaleman:publicEmployee//派生销售员类{public:Salesman(){commrate=0.04f;}//销售提成比例voidPay(){cout<<name<<”本月销售额:”;//补充下面内容}voidDisplay(){cout<<”销售员”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl;}Protected:Floatcommrate;sales;};ClassManager:virtualpublicEmployee{public:Manager(){

温馨提示

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

评论

0/150

提交评论