面向对象程序设计0001.docx

上传人:b****2 文档编号:22987130 上传时间:2023-04-29 格式:DOCX 页数:11 大小:18.51KB
下载 相关 举报
面向对象程序设计0001.docx_第1页
第1页 / 共11页
面向对象程序设计0001.docx_第2页
第2页 / 共11页
面向对象程序设计0001.docx_第3页
第3页 / 共11页
面向对象程序设计0001.docx_第4页
第4页 / 共11页
面向对象程序设计0001.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

面向对象程序设计0001.docx

《面向对象程序设计0001.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计0001.docx(11页珍藏版)》请在冰豆网上搜索。

面向对象程序设计0001.docx

面向对象程序设计0001

系领导

审批并签名

A/B卷

广州大学2007~2008学年第一学期考试卷

课程面向对象程序设计考试形式(闭卷,考试)

学院系专业班级学号姓名

题次

总分

评卷人

分数

20

20

40

20

100

评分

一、填空题(20分)

1、_____是特殊的成员函数,在创建和初始化对象时调用。

2、_____是局部于类的成员,它提供一种同类对象的_____机制。

3、运算符重载的作用是使运算符可以操作自定义的___,但重载后运算符原有的__不变。

4、派生类不能访问基类的___成员,但可以访问基类的公有成员和___成员。

5、具有_____的类称为抽象类。

6、Windows应用程序是靠__来驱动的,其主函数的主要任务是对窗口进行初始化工作和___。

7、MFC是用消息映射表来实现消息与___之间的映射的,MFC通过_____个宏来声明和实现消息映射表。

8、在文档/视图结构的框架中,视图类___类的对象用来显示数据并接受用户操作。

文档类__对象的作用是存储和管理数据。

9、CPaintDC是___类中最常用的派生类,它只能使用在CView类的___函数中。

10、消息WM_MOUSEMOVE的消息响应函数的函数名为____。

11、资源是供Windows应用程序使用的特殊数据,它们驻留在硬盘上的__中。

常用的资源有菜单、快捷键、_____、位图等。

12、内存中的对象可以以文件的形式存储在永久性存储介质中,而当应用程序再把它从永久性存储介质读入后,该对象能恢复为原来的状态,则该对象称之为_____。

二、简述题(20分,每题5分)

(1)简述构成文档/视图结构应用程序框架的4个MFC派生类,并说出它们的功能。

 

(2)为什么拆分窗口的显示更新必须要同步?

文档类的成员函数UpdateAllViews的作用是什么?

 

(3)怎样才能使控件成为窗口的子窗口并且在窗口中可见?

按钮控件能创造哪三种不同的形式?

 

(4)如何把绘图工具载入设备描述环境进行绘画?

请以画笔为例写出执行步骤。

 

三、阅读下列程序,写出执行结果。

(40分,每题5分)

1、#include

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=”<

(obj2*obj3).get(a,b,c)。

cout<<”(obj2*obj3):

\t”<<”a=”<

}

2、#include

classBASE1

{public:

BASE1(inti){cout<<”调用基类BASE1的构造函数:

”<

}

}。

classBASE2

{public:

BASE2(intj){cout<<”调用基类BASE2的构造函数:

”<

}

}。

classA:

publicBASE1,publicBASE2

{public:

A(inta,intb,intc,intd):

BASE2(b),BASE1(c),b2(a),b1(d)

{cout<<”调用派生类A的构造函数。

”<

}

private:

BASE1b1。

BASE2b2。

}。

voidmain()

{Aojb(11,22,33,44)。

}

 

3、#include

template

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=”<

doublea,b。

a=1.23。

b=3.21。

fun(a,b)。

cout<<”a=”<

doublem=10。

intn=30。

fun(m,n)。

cout<<”m=”<

}

4、#include

voidmain()

{doublex=123.456。

cout.width(10)。

cout.setf(ios:

:

dec,ios:

:

basefield)。

cout<

cout.setf(ios:

:

left)。

cout<

cout.width(15)。

cout.setf(ios:

:

right,ios:

:

left)。

cout<

cout.setf(ios:

:

showpos)。

cout<

cout<<-x<

cout.setf(ios:

:

scientific)。

cout<

}

5、#include

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"<

return0。

}

6、#include

classBase

{public:

voidwho(){cout<<”Baseclass”<

}。

classDerived1:

publicBase

{public:

voidwho(){cout<<”Derived1class”<

}。

classderived2:

publicBase

{public:

voidwho(){cout<<”Derived2class”<

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

classexample

{private:

intdate。

staticintcount。

public:

example(inty=10):

date(y)

{cout<<”date=”<

Count++。

}

staticintdisplay()

{returncount。

}

}。

intexample:

:

count=0。

voidmain()

{examplee1。

examplee2(20)。

cout<

cout<

cout<

:

Display()<

}

 

8、指出下列程序中的错误,并说明理由

#include

classStudent

{public:

voidStudent(){}。

voidDisplay()

{cin>>name>>number。

cout<<姓名<

}

private:

char*name=noname。

intnumber=0。

}。

四、编程题:

(20分,每题10分)

1、编写一个程序,实现小型公司的工资管理。

该公司主要有4类人员:

经理、兼职技术人员、销售员和销售经理。

要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。

月工资计算办法是:

经理拿固定月薪8000元,兼职技术人员按每小时100元领取月薪,销售员按当月销售额的4%提成,销售经理既拿固定月工资又拿销售提成,固定月工资为5000元,销售提成为所管部门当月销售总额的0.5%。

要求补充未完成的代码,使其成为一个完整的程序。

#include

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<

cin>>workhours。

salary=hourlyrate*workhours。

}

voidDisplay()

{cout<<”兼职技术人员”<

”<

}

private:

//补充下面内容

 

};

ClassSaleman:

publicEmployee//派生销售员类

{public:

Salesman(){commrate=0.04f。

}//销售提成比例

voidPay(){cout<

”。

//补充下面内容

 

}

voidDisplay()

{cout<<”销售员”<

”<

}

Protected:

Floatcommrate。

sales。

};

ClassManager:

virtualpublicEmployee

{public:

Manager(){}//补充函数体内容

VoidPay(){}//补充函数体内容

voidDisplay()

{cout<<”经理”<

”<

}

Protected:

floatmonthlypay。

}。

ClassSalesManager:

//补充此处类的内容

{

 

};

voidmain()

{managerm1。

Techniciant1。

Salesmans1。

Salesmanagersm1。

m1.pay()。

m1.display()。

t1.pay()。

t1.display()。

s1.pay()。

s1.display()。

sm1.pay()。

sm1.display()。

}

2、定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,要求包括定义时间对象,设置时间,运行时间上加1秒的操作,输出该对象的时间,输出格式为××:

××:

××AM(例如:

11:

20:

15AM,上午11时20分15秒)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1