面向对象程序设计1.docx

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

面向对象程序设计1.docx

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

面向对象程序设计1.docx

面向对象程序设计1

系领导

审批并签名

A/B卷

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

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

学院系专业班级学号姓名

题次

总分

评卷人

分数

20

20

40

20

100

评分

一、填空题(20分)

1、_____是特殊的成员函数,在对象作用域结束时自动调用。

2、友元关系是非传递的和_____,除非特别声明,否则,通常情况下若F是A的友元,A_____F的友元。

3、运算符函数既可以重载为___函数,也可以重载为友元函数。

4、在具有继承关系的类层次结构中,构造函数的执行顺序是:

___、___、。

5、具有纯虚函数的类称为_____。

6、Windows应用程序的主窗口一般都是__类的派生类,而窗口函数则被封装到___类中。

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

8、MFC采用结构来实现数据和数据显示的分离。

应用程序的数据是由文档类__对象来存储和管理。

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

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

11、是供Windows应用程序使用的特殊数据,它们驻留在硬盘上的可执行文件中。

常用的资源有、快捷键、图标、位图等。

12、____就是指应用程序把数据对象以文件的形式写入永久性存储体后,应用程序还能从永久性存储体来读取它,并且可以依据该文件在内存中重新创建该对象的机制。

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

(1)Windows应用程序的主函数有哪3个主要任务?

什么是消息循环?

 

(2)简述文档/视图结构中文档类和视图类的作用。

并说明在文档/视图结构的应用程序中,视图类的对象是如何来获取文档类对象中的数据的。

 

(3)应用程序的界面有哪三种方式?

分别说明该界面应用程序的外观。

 

(4)鼠标消息分为哪两类?

它们之间有什么区别?

 

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

(40分,每题5分)

1、#include

classcounter

{public:

voidsetnum(inti){num=i;}

voidshownum(){cout<

staticintnum;

};

intcounter:

:

num=1;

voidmain()

{inti;

for(i=0;i<5;i++)

{counter:

:

num+=i;

cout<

:

num<<'\t';}

cout<

}

 

2、#include

classA

{public:

A(){a=5;}

voidprinta(){cout<<"A:

a="<

private:

inta;

friendclassB;

};

classB

{public:

voiddisplay1(At){t.a++;cout<<"display1:

a="<

voiddisplay2(At){t.a--;cout<<"display2:

a="<

};

voidmain()

{Aobj1;Bobj2;

obj1.printa();

obj2.display1(obj1);

obj2.display2(obj1);

obj1.printa();

}

 

3、#include

template

classbase

{public:

base(Ti,Tj){x=i;y=j;}

Tsum(){returnx+y;}

private:

Tx,y;

};

voidmain()

{baseobj2(3.3,5.5);

cout<

baseobj1(3,5);

cout<

}

 

4、#include

classBase

{public:

voidabc(){cout<<"Baseclass"<

};

classDerived1:

publicBase

{public:

voidabc(){cout<<"Derived1class"<

};

classDerived2:

publicBase

{public:

voidabc(){cout<<"Derived2class"<

};

voidmain()

{Baseobj1,*p;Derived1obj2;Derived2obj3;

p=&obj1;p->abc();

p=&obj2;p->abc();

p=&obj3;p->abc();

obj1.abc();obj2.abc();obj3.abc();

}

 

5、#include

classparent_class

{intprivate1,private2;

public:

parent_class(intp1,intp2)

{private1=p1;private2=p2;}

intinc1()

{return++private1;}

intinc2()

{return++private2;}

voiddisplay()

{cout<<"private1="<

};

classderived_class:

privateparent_class

{intprivate3;

parent_classprivate4;

public:

derived_class(intp1,intp2,intp3,intp4,intp5):

parent_class(p1,p2),private4(p3,p4)

{private3=p5;}

intinc1()

{returnparent_class:

:

inc1();}

intinc3()

{return++private3;}

voiddisplay()

{parent_class:

:

display();private4.display();

cout<<"private3="<

};

voidmain()

{derived_classd1(17,18,1,2,-5);

d1.inc1();

d1.display();

}

 

6、#include

classA

{public:

A(intn){i=n;cout<<“初始化i的值为:

”<

~A(){cout<<“释放A的对象。

”<<’\n’;}

intget_i(){returni;}

private:

inti;

};

classB:

publicA

{public:

B(intn,intm):

A(n){j=m;cout<<“初始化j的值为:

”<

~B(){cout<<“释放B的对象。

”<<’\n’;}

intget_j(){returnj;}

private:

intj;

};

voidmain()

{Bobj(1,2);

cout<<“创建了一个B的对象。

值为:

”<

}

 

7、#include

classA

{public:

virtualvoidact1();

voidact2(){act1();}

};

voidA:

:

act1(){cout<<"A:

:

act1()called."<

classB:

publicA

{public:

voidact1();

};

voidB:

:

act1(){cout<<"B:

:

act1()called."<

voidmain()

{Bb;

b.act2();

}

 

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

classCOMPLEX

{public:

COMPLEX(doubler=0,doublei=0);

COMPLEXoperator-(constCOMPLEX&other);

COMPLEXoperator=(constCOMPLEX&other);

private:

doublereal=0,image=0;

};

voidmain()

{floatx;

COMPLEXy(10,20),z(2,3),sum;

sum=x-y;

sum=sum-z;

sum--;

}

 

四、编程题:

(20分,每题10分)

1.使用虚函数编程求球体和圆柱体的体积及表面积。

由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle作为基类。

在circle类中定义一个数据成员radius和两个虚函数area()和volume()。

由circle类派生sphere类和column类。

在派生类中对虚函数area()和vlume()重新定义,分别求球体和圆柱体的体积及表面积。

补充指定部分。

#include

constdoublePI=3.14;

classcircle

{public:

circle(doubler){radius=r;}

//补充此处

 

protected:

doubleradius;

};

classsphere:

publiccircle

{public:

sphere(doubler):

circle(r){}

doublearea(){return4.0*PI*radius*radius;}

doublevolume()

{return4.0*PI*radius*radius*radius/3.0;}

};

classcolumn:

publiccircle

{//补充此处

 

};

voidmain()

{inta,b,c;

circle*p;

cout<<"输入球体半径"<

cin>>a;

spheresobj(a);

p=&sobj;

cout<<"球体的体积="<

cout<<"球体的表面积="<

cout<<"输入圆柱体的半径,高"<

cin>>b>>c;

columncobj(b,c);

p=&cobj;

cout<<"圆柱体的体积="<volume()<

cout<<"圆柱体的表面积="<area()<

}

 

2.使用成员函数或友员函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接。

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

当前位置:首页 > 医药卫生

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

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