第7章 面向对象的程序设计基础

第7章  面向对象的程序设计基础
第7章  面向对象的程序设计基础

第7章面向对象的程序设计基础

一、单项选择题

1.Visual FoxPro 6.0不但支持传统的面向过程的编程方法,而且全面引入了_______的程序设计方法,将FoxPro系列提升到真正的关系数据库世界。(§7.1 理解)

A)结构化 B) 非过程化

C)面向数据库 D)面向对象

2.从可视化编程的角度看,对象是一个具有属性和方法的实体。一旦对象建立以后,其操作就通过与对象有关的_______来描述。(§7.1 理解)

A)属性、事件和方法 B)实体、类

C)封装性、继承性 D)数据

3._______也是一种对象,他将一些特殊的对象进行更严格的封装,定制成用以显示数据、执行操作的一种图形对象。(§7.1 理解)

A)类 B)父类

C)子类 D)控件

4.下列_______组是类。(§7.1 理解)

A)篮球、饭桌、人、房子 B)篮球、饭桌、工人、厨房

C)文本框、命令按钮 D)球、桌子、人、房子

5.下列关于面向对象程序设计(OOP)的说法,错误的是_______。(§7.1 理解)

A)OOP以编写程序代码为中心工作

B)OOP以“对象”表示各种事物,以“类”表示对象的抽象

C)OOP以“方法”表现处理事物的过程

D)OOP以对象及其数据结构为中心展开工作

6.任何对象都有自己的属性,下列关于属性的叙述中,正确的是_______。(§7.1 理解)

A) 属性用于描述对象所具有的性质和特点,通常用各种类型的数据来表示

B)属性用于描述对象所具有的内部特征,通常用各种类型的数据来表示

C)属性用于描述对象所具有的外部特征,通常用各种类型的数据来表示

D)属性用于描述对象所具有的固有方法,通常用各种程序代码来表示

7.下列关于事件的说法中,错误的是_______。(§7.1 理解)

A)事件代码也可以像方法一样被显式调用

B)事件是对象触发的行为描述,是一种预先定义好的特定动作

C)事件可以持续完成。

D)事件由用户或者系统激活

8.下列关于方法的说法中,错误的是_______。(§7.1 理解)

A)方法是与对象相关的过程

B)方法是指对象为完成一定功能而编写的一段程序代码

C)方法与事件有着紧密联系,一个时间必定有一个与之相对应的方法

D)方法与事件相同,用户不可以扩充方法。

9.下列关于创建新类的叙述中,错误的是_______。(§7.2 应用)

A)从“项目管理器”里选择“类”| “新建”

B)从系统菜单上选择“文件”|“新建”|“类”|“新建文件”

C)可以在命令窗口输入ADD CLASS命令,进入“类设计器”

D)在命令窗口里执行CREATE CLASS命令

10. 下列关于“继承性”的说法,错误的是_______。(§7.1 理解)

A)继承性用来描述对象之间的共同属性

B)继承性用来描述类之间的共同属性

C)继承性可以避免方法和数据的重复

D)继承性体现了一般化和特殊化的原则

11.下列关于“封装性”的说法中,错误的是_______。(§7.1 理解)

A)封装性就是把对象的内部代码与操作过程隐藏起来

B)封装是借助类来实现的

C)封装是借助对象来实现的

D)封装要求所有对象具备明确的功能,并有接口和其他对象相互作用

12.用DEFINE CLASS 命令定义了一个名为“7_1”的FORM类时,若要为该类添加一个label1标签对象,应当使用的基本代码是_______。(§7.1 应用)

A)AddObject(“label1”,”” label”)

B)MyForm.AddObject(“label1”,”” label”)

C)Add Object label1 AS label

D)Add Object 7_https://www.360docs.net/doc/5f9757851.html,bel1 AS label

13. 下列关于将“类”添加到表单中的方法的说法,错误的是_______。(§7.2 应用)

A)将“类”从“类设计器”拖至“项目管理器”中

B)将“类”从“项目管理器”拖至“类设计器”中

C)将“类”从“项目管理器”拖至“表单设计器”中

D)将“类”注册

14.下列关于对象的引用说法错误的是_______。(§7.3 理解)

A)绝对引用是为了快速引用对象而采用的一种引用方式

B)相对引用是为了快速引用对象而采用的一种引用方式

C)引用是指在引用对象时,把对象的容器层次全部列出来

D)对象的引用有绝对引用和相对引用

15.下列关于类的说法错误的是_______。(§7.3 理解)

A)类不能被直接调用

B)由类创建的对象可以被直接调用

C)同一个类可以创建多个对象

D)类可以被直接调用

16.如果要提供对当前对象的引用,可以用_______关键字来设置对象的属性。(§7.3应用)A)THIS B)THISFORM C) THISFORMSET D)PARENT

17.下列关于设置单个对象属性的语法正确的是_______。(§7.3 应用)

A)Object.Property=Value B)Parent.Property=Value

C)Property=Value D)Parent.Object.Property=Value

18.下列关于调用对象的方法的说法,错误的是_______。(§7.3 理解)

A)对象的方法没有返回值

B)调用对象的方法时,如果该方法有返回值,被调用方法必须以圆括弧结尾

C) 如果在调用方法时有参数传递,则必须把传递参数放在方法名后面的圆括弧内

D) 在创建了一个对象后,可以在程序的任何部分调用方法

19.在表单中加入两个命令按钮Command1和Command2,编写Command1的Click事件代码如下,则当单击Command1后,_____。(§7.3 理解)

https://www.360docs.net/doc/5f9757851.html,mand2.Visible=.F.

A)命令按钮组中的第二个命令按钮不可见

B)Command1命令按钮不可见

C)事件代码无法执行

D)Command2命令按钮不可见

20.在Visual FoxPro 6.0控件中,编辑框的默认名称为_______。(§7.3 识记)

A) List B) Edit1 C) Label D) Text

21.在表单中编写Command1命令按钮的Click事件的过程代码,下列_______可以在单击命令按钮时退出表单。(§7.3 应用)

A)clear thisform

B)thisform.hide

C)thisform.unlode

D)thisform.release

22.若某表单中有一个文本框Text1和一个命令按钮组CommandGroup1,其中,命令按钮组包含了Command1和Command2两个命令按钮。如果要在命令按钮Command1的某个方法中访问文本框Text1的Text 属性值,下列式子中错误的是_____。(§7.3 应用)

A) ThisForm.Text1. Text B) This.Parent.Text1. Text

C) Parent.Text1. Text D) This. Parent.Parent.Text1. Text

23.调用对象方法的格式正确的是_____。(§7.3 识记)

A) Object.Method B) Method Object

C) Parent.Object.Method D)Parent.Method

二、多项选择题

1.在表单Form1的事件或方法代码中设置该表单中命令按钮Command1的Caption属性为“确定”的正确命令是_______。(§7.2 理解)

A)https://www.360docs.net/doc/5f9757851.html,mand1.Caption=”确定”

B)https://www.360docs.net/doc/5f9757851.html,mand1.Caption=”确定”

C)https://www.360docs.net/doc/5f9757851.html,mand1.Caption=”确定”

D)https://www.360docs.net/doc/5f9757851.html,mand1.Caption=“确定”

2.在面向对象程序设计中,描述对象的三个要素包括________。(§7.1 应用)

A)属性 B)事件 C)开放性 D)方法

3.面向对象程序设计的三个基本特征是_______。(§7.1 应用)

A)响应B)继承性 C)封装性 D)多态性

4.在Visual FoxPro 6.0中,常用的表单事件有_______。(§7.2 识记)

A)INIT B)LOAD C)DESTROY D)CLEAR

5. 在Visual FoxPro

6.0中,下列名词属于表单控件的是_______。(§

7.2 识记)

A)Load B) Text C)Label D)Click

6. 在Visual FoxPro 6.0 中,下列名词属于对象触发事件的是_______。(§

7.2 识记)

A)Unload B) DblClick C)Refresh D)Gotfocus

7. 在Visual FoxPro 6.0的OOP概念中,下列说法正确的有_______。(§7.1 理解)

A)类是定义对象的特征和描述对象的外观与行为的模板

B)对象是一个具有属性和方法的实体

C)事件是对象触发的行为描述

D)方法是指对象为完成一定功能而编写的一段程序代码

8.下列有关面向对象程序设计的基本特征叙述正确的是_______。(§7.1 理解)

A)继承性用来描述基类和派生类之间的共同属性

B)封装性是把对象的内部代码与操作过程隐藏起来

C)多态性就是方法和名称完全相同

D)用户的动作能够激发事件,但响应事件必须通过对应的方法来实现

9.下面关于方法的正确说法是_______。(§7.1 理解)

A)方法是某一对象相关联的过程

B)方法是指对象为完成一定功能而编写的一段程序代码

C)方法程序创建完成后以.PRG文件保存

D)一个事件必定有一个与之相对应的方法

10.下列关于控件类的各种叙述中,正确的是_______。(§7.1 理解)

A)控件也是一种对象

B)控件类是将特殊的对象进行更严格的封装

C)控件是定制成用以显示数据、执行操作的一种图形对象

D)控件类对象与容器类对象是相对而言的

三、填空题

1.一个对象建立以后,其操作就通过与对象有关的属性、_____和_____来描述。(§7.1 识记) 2.面向对象程序设计的3个基本特征是继承性、_____和_____。(§7.1 识记)

3.Visual FoxPro 6.0中的基类有两大类型,分别是:_____和____;相应地,对象也分为_____和____。(§7.1 识记)

4._____不能被直接调用,由类创建的_____才可以被直接调用。(§7.1 识记)

5.引用对象的两种方式是_____和____。(§7.1 识记)

6._____对象引用提供对当前对象的引用,_____对象引用提供对当前表单的引用,_____对象引用提供了一种引用当前表单集的快捷引用,_____对象引用提供了一种引用当前对象的父对象的引用。(§7.3 识记)

四、面向对象程序设计题

1.用标签、文本框、命令按钮构成一个表单ShowFrm,在标签中显示“当前系统日期和时间:”;运行表单时,在文本框中单击鼠标左键将显示当前系统日期,双击鼠标左键将显示当前系统时间;单击“删除”按钮,文本框中的结果将被删除,单击“退出”按钮,将退出表单的运行。(§7.4 应用) 2.以系统日期的月、日及时间构成动态的密码,如果三次输入错误,则退出;如果密码正确,则显示“欢迎使用本系统!”。(§7.4 应用)

3.创建一个表单,其功能为:若在inputTxt文本框中输入一个除数(整数),然后点击“开始”按钮,就能求出1-100之间能被此除数整除的数(整数)及这些数之和,并将结果分别在编辑框numEdit和文本框sumTxt中输出。(§7.4 应用)

4.编程计算任意长方形的面积。(§7.4 应用)

5.从键盘输入学生成绩,按下列等级显示:90分以上,显示“优秀”;70-90分,显示“良好”;60-70分,显示“中等”;60分以下,显示“差”。(§7.4 应用)

6.在文本框中输入100之内的任一整数N,求1-N之间的所有素数,并将其显示到编辑框中。(§7.4 应用)

7.编程计算用户存款到期后的本息和。要求存款额和存期由用户从键盘输入。(§7.4应用)

8.设计一简单的计算器。要求:可以进行简单的+、-、*、/运算。(§7.4 应用)

9.设计一表单,在文本框中将一元二次方程的系数a,b,c输入,求该方程的根。(§7.4 应用)

10.设计一表单,求1-100之间的所有偶数之和与所有奇数之和。(§7.4 应用)

11.设计一个“学生档案管理系统”的封面。要求该表单的标题为“学生档案管理系统”,且其中的“欢迎使用学生档案管理系统”文字是从右向左移动的字幕。(§7.4 应用)

12.设计一个可选择不同字体进行显示的表单。要求在文本框中输入文字之后,单击某个单选按钮,文本框中的内容即能以指定的字体显示。(§7.4 应用)

13.设计一数字时钟,当单击“改变时间格式”按钮时,可以实现“12小时制”与“24小时制”之间的转换。(§7.4 应用)

14.设计一表单,三个人分19头牛,老大分1/2、老二分1/4、老三分1/5,不能宰牛,每人各能分多少头牛。(§7.4 应用)

第7章面向对象的程序设计基础答案

一、单项选择题

1.D

2.A

3.D

4.D

5.A

6.A

7.C

8.D

9.C 10.A 11.C 12.C 13.A 14.A 15. D 16.A

17.D 18. A 19.C 20.B 21.D 22.A 23.C

二、多项选择题

2.A B D 3.B C D 4.A B C 5.B C

6.A B

7.A B C D 8.A B D 9.A B D 10.A B C D

1.事件方法

2.封装性多态性

3.容器类控件类容器类对象控件类对象

4.类对象

5.绝对引用相对引用

6.This ThisForm ThisFormset Parent

四、面向对象程序设计题

1.(1)新建如图7-1所示的表单:

图7-1 显示当前系统日期和时间表单

(2)在相应的事件过程中,编写如下代码:

a)在文本框Text1的Click事件中,写入如下代码:

this.value=date()

b)在文本框Text1的DblClick事件中,写入如下代码:this.value=time()

C)在命令按钮Command1的Click事件中,写入如下代码:thisform.text1.value=""

d)在命令按钮Command2的Click事件中,写入如下代码:thisform.release

(3)运行表单,结果如图7-2所示:

图7-2 显示当前系统的日期和时间的运行结果

注:“删除”为command1按钮,“退出”为command2按钮。2.(1)新建如图7-3所示的表单:

图7-3 密码输入表单

(2)在相应的事件过程中,编写如下代码:

a)在表单Form1的ACTIV ATE事件中,写入如下代码:thisform.text3.setfocus

public n

n=0

b)在文本框Text1的Click事件中,写入如下代码:

this.value=date()

c)在文本框Text2的Click事件中,写入如下代码:

this.value=time()

d)在命令按钮Command1的Click事件中,写入如下代码:ma=thisform.text3.value

k1=str(month(date()),2)+str(day(date()),2)

k2=subs(time(),1,2)

k=k1+k2

k=allt(k)

if allt(ma)=k

https://www.360docs.net/doc/5f9757851.html,bel3.caption="欢迎使用本系统!"

else

n=n+1

if n=3

https://www.360docs.net/doc/5f9757851.html,bel3.caption="您无权使用本系统!"

thisform.text3.enabled=.f.

https://www.360docs.net/doc/5f9757851.html,mand1.enabled=.f.

else

https://www.360docs.net/doc/5f9757851.html,bel3.caption="口令错,请重新输入口令!"

thisform.text3.value=""

thisform.text3.setfocus

endif

endif

e)在命令按钮Command2的Click事件中,写入如下代码: thisform.release

(3)运行结果如图7-4所示:

图7-4 密码程序运行结果

注:“确定”为command1按钮,“关闭”为command2按钮。 3.(1)新建如图7-5所示的表单:

图7-5 计算表单

(2)在相应的事件过程中,编写如下代码:

a)在表单Form1的ACTIV ATE事件中,写入如下代码:

thisform.inputTxt.setfocus

b)在命令按钮Command1的Click事件中,写入如下代码:

for i=1 to 100

if mod(i,val(thisform.inputTxt.value))=0

thisform.numEdit.value=thisform.numEdit.value+str(i,5)+chr(13)

thisform.sumTxt.value=str(val(thisform.sumTxt.value)+i)

endif

endfor

c)在命令按钮Command2的Click事件中,写入如下代码:

thisform.inputTxt.value=0

thisform.sumTxt.value=0

thisform.numEdit.value=""

(3)运行结果如图7-6所示:

图7-6 输入13的运行结果

注:“开始”为command1按钮,“取消”为command2按钮。

4.(1)新建如图7-7所示的表单:

图7-7 计算表单

(2)在相应的事件过程中,编写如下代码:

a)在表单Form1的ACTIV ATE事件中,写入如下代码:

thisform.Text1.setfocus

thisform.Text2.setfocus

b) 在命令按钮Command1的Click事件中,写入如下代码:

thisform.text3.value=val(thisform.text1.value)*val(thisform.text2.value) c)在命令按钮Command2的Click事件中,写入如下代码:

thisform.release

(3)运行结果如图7-7所示:

图7-7 长方形的长为4、宽为6的运行结果

注:“计算”为command1命令按钮,“退出”为command2命令按钮。

5.(1)新建如图7-7所示的表单:

图7-8 成绩输入表单

(2)在相应的事件过程中,编写如下代码:

a)在表单Form1的ACTIV ATE事件中,写入如下代码:

thisform.Text2.setfocus

b) 在命令按钮Command1的Click事件中,写入如下代码:

a=val(thisform.text1.value)

aa=int(a/10)

do case

case aa=10

thisform.text2.value="优秀"

case aa=9

thisform.text2.value="优秀"

case aa=8

thisform.text2.value="良好"

case aa=7

thisform.text2.value="良好"

case aa=6

thisform.text2.value="中等"

otherwise

thisform.text2.value="差"

endcase

c)在命令按钮Command2的Click事件中,写入如下代码:thisform.release

(3)运行结果如图7-9所示:

图7-9 成绩为85分的运行结果

注:“计算”为command1命令按钮,“退出”为command2命令按钮。6.(1)新建如图7-10所示的表单:

图7-10 计算表单

(2)在相应的事件过程中,编写如下代码:

a)在表单Form1的ACTIV ATE事件中,写入如下代码:

thisform.Text1.setfocus

b) 在命令按钮Command1的Click事件中,写入如下代码:

a(1)=2

basen=3

num=2

do while num<=x

i=2

do while i<=basen-1

t=0

telln=mod(basen,i)

if telln=0

t=t+1

exit

else

i=i+1

endif

enddo

if t=0

a(num)=basen

basen=basen+1

num=num+1

else

basen=basen+1

endif

enddo

k=1

do while k<=x

thisform.edit1.value=thisform.edit1.value+str(a(k),5)+chr(13)

k=k+1

enddo

c)在命令按钮Command2的Click事件中,写入如下代码:thisform.release

(3)运行结果如图7-11所示:

图7-11 前50个素数运行结果

7.(1)新建如图7-12所示的表单:

图7-12 计算存款额表单

(2)在相应的事件过程中,编写如下代码:

a)在文本框Text1、Text2、Text3的Init事件中,分别写入如下代码: this.value=0

b) 在命令按钮Command1的Click事件中,写入如下代码:

x=thisform.text1.value

y=thisform.text2.value

do case

case y>=36

ll=3.2

case y>=24

ll=2.8

case y>=12

ll=2.5

other

ll=1.8

endcase

thisform.text3.value=x+round(x*y*ll/1000,2)

c)在命令按钮Command2的Click事件中,写入如下代码:

thisform.text1.value=0

thisform.text2.value=0

thisform.text3.value=0

thisform.text1.setfocus

d) 在命令按钮Command3的Click事件中,写入如下代码:

thisform.release

(3)运行结果如图7-13所示:

图7-13 计算存款额运行结果

注:“计算”为command1命令按钮,“清除”为command2命令按钮,“退出”为command3命令按钮。8.(1)新建如图7-14所示的表单:

图7-14 计算器表单

(2)在相应的事件过程中,编写如下代码:

a)在文本框Text1的Init事件中,写入如下代码:

this.value=""

b) 在按键“0”的Click事件中,写入如下代码:

thisform.text1.value=thisform.text1.value+"0"

c)在按键“1”的Click事件中,写入如下代码:

thisform.text1.value=thisform.text1.value+"1"

d) 用同样的方法,分别设置好除“等于”按键外的其他各个按键的Click事件代码。

e) 在按键“等于”的Click事件中,写入如下代码:

r=thisform.text1.value

rr=&r

thisform.text1.value=rr

f) 在按钮“清除”的Click事件中,写入如下代码:

thisform.text1.value=""

g) 在按钮“关闭”的Click事件中,写入如下代码:

thisform.release

(3)运行结果如图7-15所示:

图7-15 计算器运算结果

9.(1)新建如图7-16所示的表单:

图7-16 计算表单

图7-16 计算表单

(2)在相应的事件过程中,编写如下代码:

a) 在表单Form1的ACTIV ATE事件中,写入如下代码:

thisform.text1.setfocus

thisform.text2.setfocus

thisform.text3.setfocus

b) 在命令按钮Command1的Click事件中,写入如下代码:

a=val(thisform.text1.value)

b=val(thisform.text2.value)

c=val(thisform.text3.value)

do case

case a=0

thisform.text4.value=str(-c/b,10,2)

thisform.text5.value=str(-c/b,10,2)

case b*b-4*a*c<0 .and.a<>0

x=-b/(2*a)

x1=sqrt(4*a*c-b*b)/(2*a)

thisform.text4.value=str(x,10,2)+"+"+str(x1,10,2)+"I"

thisform.text5.value=str(x,10,2)+"-"+str(x1,10,2)+"I"

case b*b-4*a*c>0 .and.a<>0

x1=(-b+sqrt(b*b-4*a*c))/(2*a)

x2=(-b-sqrt(b*b-4*a*c))/(2*a)

thisform.text4.value=str(x1,10,2)

thisform.text5.value=str(x2,10,2)

case b*b-4*a*c=0

x=-b/(2*a)

thisform.text4.value=str(x,10,2)

thisform.text5.value=str(x,10,2)

endcase

c) 在命令按钮Command2的Click事件中,写入如下代码:

thisform.text1.value=0

thisform.text2.value=0

thisform.text3.value=0

thisform.text4.value=0

thisform.text5.value=0

thisform.text1.setfocus

thisform.text2.setfocus

thisform.text3.setfocus

d) 在命令按钮Command3的Click事件中,写入如下代码:

thisform.release

(3)运行结果如图7-17所示:

图7-17 方程5*x*x+8*x+2=0的解

注:“计算”为command1命令按钮,“清除”为command2命令按钮,“退出”为command3命令按钮。10.(1)新建如图7-18所示的表单:

图7-18 计算表单

(2)在相应的事件过程中,编写如下代码:

a) 在命令按钮Command1的Click事件中,写入如下代码:

m=1

n=2

a=0

b=0

do while m<=99 .and. n<=100

a=m+a

b=n+b

m=m+2

n=n+2

enddo

thisform.text1.value=str(a,5,2)

thisform.text2.value=str(b,5,2)

b) 在命令按钮Command2的Click事件中,写入如下代码:

thisform.release

(3)运行结果如图7-19所示:

图7-19 运行结果

注:“计算”为command1命令按钮,“退出”为command2命令按钮。11.(1)新建如图7-20所示的表单:

图7-20 初始表单

(2)在相应的事件过程中,编写如下代码:

a) 在计时器Timer1的Timer事件中,写入如下代码:

if https://www.360docs.net/doc/5f9757851.html,bel1.left+https://www.360docs.net/doc/5f9757851.html,bel1.width<0

https://www.360docs.net/doc/5f9757851.html,bel1.left=https://www.360docs.net/doc/5f9757851.html,bel1.width

else

https://www.360docs.net/doc/5f9757851.html,bel1.left=https://www.360docs.net/doc/5f9757851.html,bel1.left-10

endif

b)Timer1的Interval属性设置为200

(3)运行结果如图7-21所示:

图7-21 运行结果

12.(1)新建如图7-22所示的表单:

图7-22 选择字体表单

(2)在相应的事件过程中,编写如下代码:

a) 在单选按钮组Optiongroup1的Click事件中,写入如下代码:

do case

case this.value=1

thisform.text1.fontname="黑体"

case this.value=2

thisform.text1.fontname="楷体"

case this.value=3

thisform.text1.fontname="宋体"

case this.value=4

thisform.text1.fontname="隶书"

endcase

b) 在命令按钮Command1的Click事件中,写入如下代码:

thisform.release

(3)运行结果如图7-23所示:

c++面向对象课后答案第7章(1)

1.概念填空题 C++最重要的特性之一就是代码重用,为了实现代码重用,代码必须具有通用性。通用代码需要不受数据类型的影响,并且可以自动适应数据类型的变化。这种程序设计类型称为参数化程序设计。模板是C++支持参数化程序设计的工具,通过它可以实现参数化多态性性。 函数模板的定义形式是template <模板参数表> 返回类型函数名(形式参数表){…}。其中,<模板参数表>中参数可以有多个,用逗号分开。模板参数主要是模板类型参数。它代表一种类型,由关键字typename或class后加一个标识符构成,标识符代表一个潜在的内置或用户定义的类型参数。类型参数由可以是任意合法标识符。C++规定参数名必须在函数定义中至少出现一次。 编译器通过如下匹配规则确定调用那一个函数:首先,寻找最符合函数名和参数类型的一般函数,若找到则调用该函数;否则寻找一个函数模板,将其实例化成一个模板函数,看是否匹配,如果匹配,就调用该模板函数;再则,通过类型转换规则进行参数的匹配。如果还没有找到匹配的函数则调用错误。如果有多于一个函数匹配,则调用产生二义性,也将产生错误。 类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任意类型(包括系统预定类型和用户自定义的类型)。类是对一组对象的公共性质的抽象,而类模板则是对不同类的数据类型的抽象,因此类模板是属于更高层次的抽象。由于类模板需要一种或多种类型参数,所以类模板也常常称为参数化类。 2. 简答题 简述函数模板生成函数的过程。 简述类模板生成对象的过程。 简述函数模板与模板函数、类模板与模板类的区别。 3. 选择题 关于函数模板,描述错误的是(A )。 A.函数模板必须由程序员实例化为可执行的函数模板 B.函数模板的实例化由编译器实现 C.一个类定义中,只要有一个函数模板,则这个类是类模板 D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化 下列的模板说明中,正确的是(D )。 函数模板定义如下: template Max( T a, T b ,T &c){c=a+b;} 下列选项正确的是(B )。 A. int x, y; char z; x, y, z; Max(x, y, z); Max( x, y, z); x, y; float z; x; double y, z;

第7章 面向对象编程技术

第7章面向对象编程技术 第一讲类和对象、属性、方法 教学目标 1. 理解类和对象的概念。 2. 掌握类和对象的定义和使用。 3. 掌握值类型变量和引用类型变量的区别。 4. 掌握三种访问修饰符及其含义。 教学过程 预备知识 7.1 类和对象 7.1.1 类和对象概述 现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。面向对象程序设计的类概念从本质上和人们现实生活中的类概念是相同的。 类是一种数据类型,在C#中,类分为两种:由系统提供的预先定义的,这些类在.NET框架类库中;用户定义数据类型。 在创建对象之前必须先定义该对象所属的类。然后由类声明对象。 在Visual https://www.360docs.net/doc/5f9757851.html,集成环境中的,工具箱中的一个个控件,是被图形文字化的可视的类,而把这些控件添加到窗体设计器中后,窗体设计器中的控件则是对象,即由工具箱中的类创建的对象。 7.1.2 类定义 在类定义中需要使用关键字class,其简单的定义格式为: class 类名 {类体}

“类名”是一个合法的C#标识符,表示数据类型(类类型)名称,“类体”以一对大括号开始和结束。在一对大括号后面可以跟一个分号,也可以省略分号。例如: class Student // 类名为Student { public string ID; public string Name; public string Sex; } 定义了一个名为“Student”(学生)的类,类体中包括学生的学号(“ID”)、姓名(“Name”)与性别(“Sex”)。 “类体”包括类中的所有数据及对数据的操作,面向对象程序设计将数据与对数据的操作作为一个整体,以类的形式进行定义,这种机制叫“封装”。 在“类体”中,所有的数据及对数据的操作的集合叫类成员,类成员的种类很多,本章仅介绍“字段”、“属性”、“方法”与“构造函数”。 “字段”是类定义中的数据,也叫类的变量。在上例中定义的“ID”、“Name”与“Sex”等均为类中的字段。如果需要在类定义的多个方法中使用某个变量,该变量应该声明为字段。 “属性”用于读取和写入“字段”值,“属性”是字段的自然扩展,对用户而言,“属性”等同于“字段”本身,对程序员而言,属性是一种读写“字段”的特殊方法。 “方法”实质上就是函数,通常用于对字段进行计算和操作,即对类中的数据进行操作,以实现特定的功能。 7.1.3 声明与使用对象 1. 声明对象 声明对象的格式与声明基本数据类型的格式相同,其语法格式为: 类名对象名; 例如:Student s1; // 声明一个学生类对象s1 对象声明后,需用“new”关键字将对象实例化,。实例化的语法格式:

《面向对象程序设计》第10章在线测试

《面向对象程序设计》第10章在线测试 A B C D 、关于异常对象的说法正确的是( A B 对象 C、以引用方式传递异常对象时,抛出的是局部静态对象 D 对象 A块相当于一个以类型为单一参数的函数 B 以捕捉 C块中可以声明变量,该变量可以在块外使用 D 数值 A B C D 、为保证程序中的全局变量不与开发商提供的全局变量重名,可以采取的措施是( A B C D

C、C++程序绝对不能出现错误 D、异常处理使C++程序在出现错误的情况下仍能继续运行 2、下面说法正确的是() A、C++程序中可以存在多个名字空间 B、不同的名字空间中不能出现名字相同的变量 C、名字空间能避免名字冲突 D、C++程序中也可以不定义名字空间 3、关于异常处理的说法正确的是() A、将异常的检测与处理分离 B、异常就是错误 C、异常由函数调用引起 D、在上层调用函数中使用try检测函数调用是否引发异常 4、下面与异常处理相关的关键字有() A、Throw B、throw C、try D、Try 5、下面的说法正确的是() A、引发异常用关键字throw B、在被调用函数中检测到异常条件用throw都可以引发异常 C、被调用函数只有在try块中用throw才可以引发异常 D、检测到的异常由catch捕获并处理 第三题、判断题(每题1分,5道题共5分) 1、抛出异常的模块并不负责异常的处理,该异常的处理可以程序中的任何位置。

正确错误、异常处理器根据抛出异常模块的报告来处理异常。 正确错误、异常信号传递方式有三种:传值方式、引用方式和指针方式。 正确错误表示函数将会抛出所有类型的异常 正确错误处理程序的出现次序无关紧要。 正确错误

软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法 本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务: (1)针对分析模型中的用例,设计实现方案。实现方案用 UML交互图表示。 (2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。 (3)设计用户界面。 (4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序

设计的基础和依据的详尽类图。 面向对象的软件设计过程如图8-1-1所示。 图 8-1-1 面向对象的软件设计过程 第一节设计用例实现方案 UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤: (1)提取边界类、实体类和控制类; (2)构造交互图; (3)根据交互图精华类图。 一、顺序图 顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象

第七章 面向对象的程序设计

第七章面向对象的程序设计 本章是面向对象的程序设计。与第五章介绍的面向过程的结构化程序设计不同,主要介 绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对 象的编程技术,详尽介绍了对各类控件的选择与使用方法。在对诸如表单等各类控件对象的设 计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序 代码设计中,仍然使用到结构化的程序设计方法。本章的主要内容是面向对象程序设计的理论 基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面—表单。 7.1 学习提要 1.学习目标与要求 通过本章学习,读者应达到以下要求: ⑴了解对象、类等基本概念; ⑵理解对象的属性、方法和事件; ⑶熟练掌握表单的基本设计、操作和应用; ⑷掌握常用控件的设计与使用。 ⑸熟练掌握常用事件、方法的过程代码的设计方法。 ⑹了解自定义类的创建和使用方法。 2.重点与难点: ⑴本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控 件属性、事件和方法的选择与运用。 ⑵本章难点:本章的重点即为本章的难点 3.主要知识点 ⑴面向对象的概念 ①对象、类 ②属性、方法、事件 ③Visual FoxPro 中的基类 ⑵表单的创建与基本操作 ①表单的创建 使用“窗体设计器”或“表单向导”创建表单。 ②表单的修改、运行 使用“窗体设计器”编辑修改表单。使用菜单或命令方式运行表单。 ③表单的属性、事件和方法

表单常用属性的设置,表单的常用事件、常用方法。 ④设置表单的数据环境 数据环境的概念,数据环境的设置。 ⑶表单常用控件 ①表单常用控件的基本操作 控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。 ②常用控件对象 标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。 ③控件对象的常用属性设置 Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。 ④控件对象的常用事件的使用 Load事件,Init事件,Destroy事件,Unload事件,Error事件,Click事件, DblClick事件,RightClick事件。 ⑤控件对象的常用方法的使用 SetFocus方法,Release方法,Refresh方法,Show方法,Hide方法。 ⑷类的建立 使用“类设计器”创建类。 7.2 习题 一、单项选择题 1.以下关于Visual FoxPro类的说法,不正确的是() A)类具有继承性 B)用户必须给基类定义属性,否则出错 C)子类一定具有父类的全部属性 D)用户可以按照已有的类派生出多个子类 2.下列基类中是容器类的是() A)表单B)命令按钮C)列表框D)单选按钮 3.下列关于“类”的叙述中,错误的是() A)类是对象的集合,而对象是类的实例 B)一个类包含了相似对象的特征和行为方法 C)类并不实行任何行为操作,它仅仅表明该怎样做 D)类可以按其定义的属性、事件和方法进行实际的行为操作

第10章面向对象讲解

第10章面向对象分析 10.1面向对象分析的基本过程 不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。 图:参照当前系统建立目标系统 面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。

10.1.1 概述 系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。 [[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。”(P231)——这在一开始能做到吗?——扯蛋 10.1.2 3个子模型与5个层次 面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。 建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:

图10.2 复杂问题的对象模型的5个层次 其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。 其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行: (1)确定类和对象 (2)确定关联 (3)划分主题 (4)定义属性 (5)确定继承关系 (6)建立动态模型

第10章 面向对象设计

第10章面向对象设计 10.1 软件模块之间的依赖性可以从哪些角度和抽象层次进行分析? 在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。 10.2 消除包之间循环依赖性的方法是什么? 本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下: 在下图中,包A依赖于包B,反过来包B又依赖包A,构成了循环依赖。具体解决办法是:将包B依赖的包A中的元素从包A中分离出来,组成包C,使得包B不再依赖包A,而是依赖包C。 10.3 请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。 软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。 在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。 在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。 选择你熟悉的编程语言说明怎样定义一个构件。(略) 10.4 典型的面向对象设计模型在逻辑上由哪几部分组成?对每一部分进行设计时所包含的主要内容是什么? 典型的面向对象设计模型在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。

第章面向对象程序设计习题

第6章面向对象程序设计 一.选择题 1.下面有关类和对象的说法中,不正确的是【】。 A) 类是系统提供的一种数据类型B) 对象是类的实例 C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类 2.面向对象的特点主要概括为【】。 A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性 C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性3.要使一个类能被同一命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以【】。 A) 不使用任何修饰符B) 使用private修饰符 C) 使用public修饰符D) 使用internal修饰符 4.在C#中,【】访问修饰符修饰的字段只能由当前程序集访问。 A) private B) public C) protected D) internal 5.类的字段和方法的默认访问修饰符是【】。 A) public B) private C) protected D) internal 6.下列关于构造函数的描述中,不正确的是【】。 A) 构造函数中,不可以包含return语句B) 一个类只能有一个构造函数 C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7.下列关于构造函数的描述中,【】是正确的。 A) 构造函数名必须与类名相同B) 构造函数不可以重载 C) 构造函数不能带参数D) 构造函数可以声明返回类型8.下列的【】不是构造函数的特征。 A) 构造函数的函数名与类名相同B) 构造函数可以重载 C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型 9.类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了【】修饰符。 ClassA Aobj=new ClassA(); ClassA.M1(); A) public B) public static C) private D) virtual 10.在C#中,从属性的读写特性上来进行分类,可以划分为以下3种,除了【】。 A) 只读属性B) 只写属性C) 读写属性D) 不可读不可写属性 11.在C#中,以下关于属性的描述中正确的是【】。 A) 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性 B) 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏 C) 要定义只读属性只需在属性名前加上readonly关键字 D) C#的类中不能自定义属性 12.以下类MyClass的属性count属于【】属性。 class MyClass

第7章 面向对象的程序设计基础

第7章面向对象的程序设计基础 一、单项选择题 1.Visual FoxPro 6.0不但支持传统的面向过程的编程方法,而且全面引入了_______的程序设计方法,将FoxPro系列提升到真正的关系数据库世界。(§7.1 理解) A)结构化 B) 非过程化 C)面向数据库 D)面向对象 2.从可视化编程的角度看,对象是一个具有属性和方法的实体。一旦对象建立以后,其操作就通过与对象有关的_______来描述。(§7.1 理解) A)属性、事件和方法 B)实体、类 C)封装性、继承性 D)数据 3._______也是一种对象,他将一些特殊的对象进行更严格的封装,定制成用以显示数据、执行操作的一种图形对象。(§7.1 理解) A)类 B)父类 C)子类 D)控件 4.下列_______组是类。(§7.1 理解) A)篮球、饭桌、人、房子 B)篮球、饭桌、工人、厨房 C)文本框、命令按钮 D)球、桌子、人、房子 5.下列关于面向对象程序设计(OOP)的说法,错误的是_______。(§7.1 理解) A)OOP以编写程序代码为中心工作 B)OOP以“对象”表示各种事物,以“类”表示对象的抽象 C)OOP以“方法”表现处理事物的过程 D)OOP以对象及其数据结构为中心展开工作 6.任何对象都有自己的属性,下列关于属性的叙述中,正确的是_______。(§7.1 理解) A) 属性用于描述对象所具有的性质和特点,通常用各种类型的数据来表示 B)属性用于描述对象所具有的内部特征,通常用各种类型的数据来表示 C)属性用于描述对象所具有的外部特征,通常用各种类型的数据来表示 D)属性用于描述对象所具有的固有方法,通常用各种程序代码来表示 7.下列关于事件的说法中,错误的是_______。(§7.1 理解) A)事件代码也可以像方法一样被显式调用 B)事件是对象触发的行为描述,是一种预先定义好的特定动作 C)事件可以持续完成。 D)事件由用户或者系统激活 8.下列关于方法的说法中,错误的是_______。(§7.1 理解) A)方法是与对象相关的过程 B)方法是指对象为完成一定功能而编写的一段程序代码 C)方法与事件有着紧密联系,一个时间必定有一个与之相对应的方法 D)方法与事件相同,用户不可以扩充方法。 9.下列关于创建新类的叙述中,错误的是_______。(§7.2 应用) A)从“项目管理器”里选择“类”| “新建” B)从系统菜单上选择“文件”|“新建”|“类”|“新建文件” C)可以在命令窗口输入ADD CLASS命令,进入“类设计器” D)在命令窗口里执行CREATE CLASS命令 10. 下列关于“继承性”的说法,错误的是_______。(§7.1 理解)

UML面向对象分析与设计教程课后习题答案简答题部分

简答题 第一章 1.面向对象设计的基本特征有哪些这些特征对软件设计有何帮助 封装性继承性多态性 在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序.经过仔细设计的类层次结构是重用代码的基础.封装能让程序员不必修改公有接口的代码即可实现程序的移植.多态能使程序员开发出简洁,易懂,易修改的代码. 2.类与对象的区别是什么 类是抽象的,不具体的。就像有些东西可以归为一类,比如说狗,猫,猪。它们都是动物,我们就可以归为一类。 而猫,狗就是动物类中的一个对象。 3.什么是软件生命周期生命周期包括几个阶段 软件的生命周期,亦称软件的生存周期。它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务, 然后按规定顺序依次完成各阶段 的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。 分为:一般分为定义,开发,维护三大阶段, 定义阶段有可行性论证和开发计划,需求分析, 开发阶段有概要设计,详细设计和编码,维护阶段有测试,运行维护 4.面向对象与uml的关系 umL是统一建模图,用于便于描述类之间的关系等,是用来帮助你更好进行面向对象的设计。 5.面向对象设计与传统软件相比,有何优点 更有针对性更容易让客户满意减少修改提高效率 第二章 模型元素有哪些 UML中模型元素太多了,比如用例图中的元素有用例,角色,扩展关系,包含关系,类图中的元素有类,接口,关联等等,每一种框图都有各自独有的元素 2.简述uml通用机制组成以及它的作用 一、修饰。 在使用UML语言建模时,可以将图形修饰附加到UML图中的模型元素上。比如,当一个元素代表某种类型的时候,它的名称可以用粗体字形类显示;当同一元素表示该类型的实例时,该元素的名称用一条下划线修饰。 二、注释。 UML语言中用一条虚线将注释连接到它为之解释的或细化的元素上。 三、通用划分。 UML语言对其模型元素规定了两种类型的通用划分:型-实例(值)和接口-实现。 1、型-实例(Type-Instance):描述一个通用描述符与单个元素项之间的对应关系。实例元素使用与通用描述符相同的表示图形,但是名字的表示与通用描述符不同:实例元素名字带有下划线,而且后面还要加上冒号和通用描述符的名字。 2、接口-实现:接口声明了一个规定了服务的约定,接口的实现负责执行接口的全部语义定义并实现该项服务。

面向对象程序设计第10章在线测试

《面向对象程序设计》第10章在线测试剩余时间:59:51 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、throw后面的表达式不可以是() A、常量 B、变量 C、对象 D、数组 2、关于异常的说法,正确的是() A、异常就是错误 B、有了异常处理机制,出现错误也没有关系 C、异常在C++中以消息的形式传递 D、程序中出现的错误都可以用catch块来捕捉处理 3、关于catch(。。。)的说法错误的是() A、catch(。。。)可以捕捉所有类型的异常 B、catch(。。。)必须放在所有catch块的后面 C、catch(。。。)可以避免出现没有被捕捉的异常 D、catch(。。。)不能单独使用 4、C++中异常处理的默认模式是() A、终止模式 B、恢复模式 C、挂起模式 D、暂停模式 5、关于重新抛出错误的说法是() A、重新抛出是指抛出原来的异常 B、用throw语句再次抛出原来的异常 C、只能在catch块中抛出 D、重新抛出时不能改变异常信号的值 第二题、多项选择题(每题2分,5道题共10分) 1、关于异常处理的说法正确的是() A、将异常的检测与处理分离 B、异常就是错误 C、异常由函数调用引起 D、在上层调用函数中使用try检测函数调用是否引发异常

2、try子句的作用是() A、代码的保护段 B、如果预料某段程序代码可能发生异常,就将该段代码放在try子句之后 C、try子句产生异常 D、try子句中的throw表达式产生异常 3、catch子句的说法正确的是() A、catch子句后的复合语句是异常处理程序 B、catch子句捕获throw表达式抛出的异常 C、catch子句的异常类型说明只能是类型,不能是数值 D、catch子句的异常类型不能是自定义类 4、异常处理的执行过程是() A、程序执行try语句块内的保护段,如果发现异常则退出 B、如果在try语句内的程序段抛出异常,程序控制转入try块后的catch块 C、throw抛出的异常对象如果与catch子句异常类型的值一致,则执行对应的异常处理程序 D、如果没有匹配的catch子句,自动调用terminate终止程序 5、关于catch(…)语句的说法正确的是() A、catch(…)语句可以捕获任何异常 B、catch(…)语句可以放在catch子句的任何位置 C、catch(…)语句必须放在catch子句的最后 D、catch(…)语句捕获空的异常 第三题、判断题(每题1分,5道题共5分) 1、异常(Exception)是程序运行过程中,由于环境变化、用户操作失误以及其它方面的原因而产生的运行时不正常的情况. 正确错误 2、抛出异常的模块只是报告某个地方存在错误,这个报告可以帮助异常处理器解决这个错误。 正确错误

《面向对象程序设计》第04章在线测试

A B D C 员 A B C D 、下面的语句中能将类 A B C D 是类A f(A tmp)是类 A B C D 、下面对于友元函数描述正确的是 A B C D

D、没有this指针,也就没有默认操作的对象 2、下面关于友元的说法正确的是() A、友元函数是拥有成员函数一切权利 B、友元是一种成员函数 C、友元可以直接访问类的所有成员 D、友元不能访问类的私有成员 3、下面关于友元函数正确的说法是() A、在类中用关键词friend声明友元函数 B、友元函数说明的位置只能在类的public区 C、友元函数的定义只能放在类的外部 D、友元函数不是类的成员函数 4、关于友元函数的说法正确的是() A、友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员函数 B、友元函数可以访问多个类的私有成员和保护成员 C、在调用友元函数的时候需要使用“.”运算符 D、如果友元函数是某个类的成员函数,在定义这个友元函数的时候要使用类前缀。 5、下面关于友元函数使用特点的说明正确的是() A、友元函数可以绕开成员函数直接访问类的私有和保护成员,避免调用成员函数相关的开销 B、友元函数虽然不是类的成员函数,但是因为友元函数是在类内说明的,所以也带有用this指针 C、友元函数可以以使用类内的所有成员,因此破坏了数据的安全性 D、友元函数的形参如果是类对象,可以用对象名,对象的引用或者对象指针 第三题、判断题(每题1分,5道题共5分) 1、友元只能访问类中的公有成员,不能访问私有成员。 正确错误 2、友元函数的定义只能放在类的外部,与类的成员函数放在一起。

正确错误 f()要操作类A的成员函数,把类 正确错误 、友元具有传递性,单向性和继承性的特点。 正确错误 、一个函数可以是多个类的友元函数。 正确错误 恭喜,交卷操作成功完成!你本次进行的《面向对象程序设计》第04章在线测试的得分为 20分(满分20分),本次成绩已入库。若对成绩不满意,可重新再测,取最高分。 测试结果如下: ? 1.1 [单选] [对] 若B类为A类的友元类,则下面的说法正确的是() ? 1.2 [单选] [对] 一个类的友元不是该类的成员,与该类的关系密切,所以它()。 ? 1.3 [单选] [对] 下面的语句中能将类B 定义为类A的友元类的是() ? 1.4 [单选] [对] 如果类B 是类A的友元类,n是类A的私有数据成员,函数f(A tmp)是类B的公有成员函数,a是类A的对象, b是B类的对象,下面语句正确的 是() ? 1.5 [单选] [对] 下面对于友元函数描述正确的是 ? 2.1 [多选] [对] 一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是()。 ? 2.2 [多选] [对] 下面关于友元的说法正确的是() ? 2.3 [多选] [对] 下面关于友元函数正确的说法是() ? 2.4 [多选] [对] 关于友元函数的说法正确的是() ? 2.5 [多选] [对] 下面关于友元函数使用特点的说明正确的是() ? 3.1 [判断] [对] 友元只能访问类中的公有成员,不能访问私有成员。 ? 3.2 [判断] [对] 友元函数的定义只能放在类的外部,与类的成员函数放在一起。 ? 3.3 [判断] [对] 如果函数f()要操作类A和类B的私有成员,可以把f()声明为类A的成员函数,把类A声明为类B的友元类。 ? 3.4 [判断] [对] 友元具有传递性,单向性和继承性的特点。 ? 3.5 [判断] [对] 一个函数可以是多个类的友元函数。

面向对象程序设计第11章在线测试

《面向对象程序设计》第11章在线测试剩余时间:59:52 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、STL中能够保存其他类型的对象的类是() A、容器 B、迭代器 C、算法 D、数组 2、双队列(deque)属于() A、顺序容器 B、关联容器 C、前向容器 D、双向容器 3、集合(set)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 4、多重集(multiset)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 5、映射(map)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 第二题、多项选择题(每题2分,5道题共10分) 1、下面属于适配器容器的是( ) A、优先队列 B、堆栈 C、集合 D、映射

2、下面属于容器的头文件是() A、vector B、list C、quene D、set 3、下面的说法正确的是()题太坑!!!对的也显示错误! A、容器用于存放数据对象 B、算法用于操作容器中的数据对象 C、迭代器是容器的代替 D、迭代器用于链接容器和算法 4、下面关于string类型的说法正确的是() A、使用string类型前,程序必须包含头文件string B、string类型是C++的一部分 C、string类型与char* 类型的作用一样 D、string相当于一个保存字符的序列容器 5、下面属于顺序容器的是() A、向量 B、双队列 C、堆栈 D、列表 第三题、判断题(每题1分,5道题共5分) 1、容器是能够保存其它类型的对象的类。 正确错误2、算法就是一个按照一组定义明确的步骤来解决某个问题的处理过程。 正确错误

第7章面向对象编程

类和对象 1.简述类和对象之间的关系 2.对象的引用和对象本身分别存在哪块存储区? 3.方法签名由哪些部分组成? 4.创建一个Teacher类,要求描述姓名、性别、年龄、薪水,定义一个方法,用于在教师 原有薪水的基础上增加5000,再定义一个TeacherTest类,创建一个Teacher对象并初始化对象的各属性值,调用教师增加薪水的方法,并将增加薪水后的教师信息输出。5.小红养了两只猫,一只叫小黑,今年2岁,黑色,另一只叫小白,今年5岁,白色。请 编写一个程序,要求当用户输入小猫的名字时,就显示猫的名字、年龄和颜色。如果用户输入的小猫名字错误,则显示“小红没有养这只猫”。 封装、继承 1.编写一个类Student,代表学员,要求: 1)具有属性:姓名、年龄、性别、专业 2)具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业 3)具有两个带参数的构造方法: 第一个构造方法中,设置学员的性别为男,专业为Android,其余属性的值由参数 给定;第二个构造方法中,所有属性都由参数给定 编写测试类StudentTest进行测试,分别以两种方式对两个Student对象进行初始化,并分别调用他们的自我介绍方法,看看输出结果是否正确。 2.需求 1)定义一个(Person)类,包含属性:姓名,年龄,性别;写好相关的方法,能够构造的时候初始化或者后续修改属性值。 2)定义一个Employee类继承于Person类,包含新的属性:职位;写好相关的方法,能够构造的时候初始化或者后续修改属性值,重写equals方法,规则:当两个对 象的姓名,年龄,性别,职位都相等时返回true,否则返回false。 3)写一个测试类进行相关测试(要求可以打印对象的信息,能够比较对象是否"相等")。 效果:

第10章 面向对象的方法

第10章例题分析与解答 https://www.360docs.net/doc/5f9757851.html,作者:不详来源:2006年9月4日发表评论进入社区 一、填空题 1.面向对象方法认为系统是由应用域的______组成。 2.对象具有状态,描述对象的状态用它的______。 3.对象的抽象是______。 4.类之间有两种结构关系,它们是分类关系和______关系。 5.面向对象程序设计语言与其他程序设计语言的最主要差别是它具有______。 6.动态模型描述了系统的______。 二、选择题 1.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( )关系。 A.组装 B.整体成员 C.has a D.一般具体 2.面向对象分析阶段建立的三个模型中,核心的模型是( )模型。 A.功能 B.动态 C.对象 D.分析 3.对象模型的描述工具是( )。 A.状态图 B.数据流图 C.对象图 D.结构图 4.在有多重继承的类层次结构中,它的类层次结构是( )层次结构。 A.树型 B.网状型 C.环型 D.星型

5.描述类中对象的行为,反映了状态与事件关系的是( )。 A.对象图 B.状态图 C.流程图 D.结构图 6.在确定属性时,所有( )是候选的属性。 A.动词 B.名词 C.修饰性名词词组 D.词组 三、应用题 1.建立窗口系统的对象模型。问题陈述如下: 窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项、正文项三种,选择项中有若干对话项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。 2.在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种查询的交互行为。 答案: 一、填空题 1.对象 2.属性值 3.类 4.组装 5.继承性 6.动态行为

《面向对象程序设计》第10章在线测试

A B C D 、关于异常的说法,正确的是( A B C D catch(。。。)的说法错误的是( A B C(。。。)可以避免出现没有被捕捉的异常D 中异常处理的默认模式是( A B C D 、关于重新抛出错误的说法是( A B C D

A、代码的保护段 B、如果预料某段程序代码可能发生异常,就将该段代码放在try子句之后 C、try子句产生异常 D、try子句中的throw表达式产生异常 3、catch子句的说法正确的是() A、catch子句后的复合语句是异常处理程序 B、catch子句捕获throw表达式抛出的异常 C、catch子句的异常类型说明只能是类型,不能是数值 D、catch子句的异常类型不能是自定义类 4、异常处理的执行过程是() A、程序执行try语句块内的保护段,如果发现异常则退出 B、如果在try语句内的程序段抛出异常,程序控制转入try块后的catch块 C、throw抛出的异常对象如果与catch子句异常类型的值一致,则执行对应的异常处理程序 D、如果没有匹配的catch子句,自动调用terminate终止程序 5、关于catch(…)语句的说法正确的是() A、catch(…)语句可以捕获任何异常 B、catch(…)语句可以放在catch子句的任何位置 C、catch(…)语句必须放在catch子句的最后 D、catch(…)语句捕获空的异常 第三题、判断题(每题1分,5道题共5分) 1、异常(Exception)是程序运行过程中,由于环境变化、用户操作失误以及其它方面的原因而产生的运行时不正常的情况. 正确错误 2、抛出异常的模块只是报告某个地方存在错误,这个报告可以帮助异常处理器解决这个错误。 正确错误 3、C++引入了关键字throw和catch,用于进行异常处理。

第八章 面向对象程序设计

第八章面向对象程序设计 一、选择题 1、面向对象程序设计采用了以为中心的软件构造方法。 A)数据结构B)数据流C)功能分析D)算法 2、下面关于属性、方法和事件的叙述中,错误的是______。 A)属性用于描述对象的状态,方法用于表示对象的行为 B)基于同一个类产生的两个对象可以分别设置自己的属性值 C)事件代码也可以像方法一样被显示调用 D)在新建一个表单时,可以添加新的属性、方法和事件 3、在下面关于面向对象数据库的叙述中,错误的是______。 A)每个对象在系统中都有唯一的对象标识 B)事件作用于对象,对象识别事件并作出相应反应 C)一个子类能够继承其所有父类的属性和方法 D)一个父类包括其所有子类的属性和方法 4、每个对象都可以对一个被称为事件的动作进行识别和响应。下面对于事件的 描述中,_____是错误的。 A)事件是一种预先定义好的特定的动作,由用户或系统激活 B)VFP基类的事件集合是由系统预先定义好的,是唯一的 C)VFP基类的事件也可以由用户创建 D)可以激活事件的用户动作有按键、单击鼠标、移动鼠标等 5、_____是面向对象程序设计中程序运行的最基本实体。 A)对象B)类C)方法D)函数

6、创建类时首先要定义类的。 A)名称B)属性C)事件D)方法 7、有关窗口的操作,是正确的。 A) deactivate window命令挂起的窗口将从内存中清除 B) show window命令显示的窗口不一定是活动窗口,但活动窗口一定是显示 窗口 C) hide window命令将活动窗口在屏幕上隐藏起来,输出仍然面向该窗口 D)用release window删除的窗口还可以再重新显示或激活 8、有关窗口的叙述,是正确的。 A) ACTIV A TE WINDOW 命令激活窗口后,@…SA Y的 坐标是相对屏幕的物理坐标 B)当多次使用激活窗口命令时,则最后一个被激活的窗口是当前窗口 C)当前窗口是无法改变的 D)窗口休眠后第一个激活的窗口变为当前窗口 9、以下属于窗口类控件的是。 A)Text B) Form C) Lable D) CommandButton 10、以下属于非容器类控件的是。 A) Form B) Lable C) Page D) Container 11、以下属于容器类控件的是______。 A) Text B) Form C) Label D) CommandButton 12、面向对象的程序设计是近年来程序设计方法的主流方式,简称OOP。下面 这些对于OOP的描述错误的是。

面向对象基础_参考答案

一、【必做题】 1.(1)定义一个人类Person: 1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 (2)定义一个PersonCreate类: 1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74 2)分别调用对象的sayHello()方法。(答案:Person.java、PersonCreate.java)2.(1)定义一个人类Person: 1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 3)通过构造方法,分别给三个属性赋值 (2)定义一个Constructor类: 1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74 2)分别调用对象的sayHello()方法。(答案:Constructor.java、或者是Person3.java)3.(1)定义一个矩形类Rectangle: 1)定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。 2)有2个属性:长length、宽width 3)通过构造方法Rectangle(int width, int length),分别给两个属性赋值(答案:Rectangle.java) 4.定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个构造器Point()和Point(int x0,y0),以及一个movePoint(int dx,int dy)方法实现点的位置移动。() public class Point { private int x0; private int y0; public Point() { } public Point(int x0,int y0) { t his.x0=x0; this.y0=y0; } public void movePoint(int dx,int dy){ t his.x0 = this.x0 + dx; t his.y0 = this.y0 + dy; } } 5.编写一个程序,创建两个Point对象p1、p2,分别调研movePoint方法后,打印p1和p2的坐标。 public class Point { private int x0; private int y0; public Point()

相关文档
最新文档