面向对象程序设计教程-答案

面向对象程序设计教程-答案
面向对象程序设计教程-答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导

第1章

面向对象程序设计概论

一、名词解释

抽象封装消息

【问题解答】

面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。

面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。

消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。

二、填空题

(1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。

(2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

|

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。

(5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。

三、选择题(至少选一个,可以多选)

(1)面向对象程序设计着重于( B )的设计。

A. 对象

B. 类

C. 算法

D. 数据

(2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( C )。

A. 抽象

B. 继承

C. 封装

D. 多态

(3)在面向对象程序设计中,类通过( D )与外界发生关系。

|

A. 对象

B. 类

C. 消息

D. 接口

(4)面向对象程序设计中,对象与对象之间的通信机制是( C )。

A. 对象

B. 类

C. 消息

D. 接口

(5)关于C++与C语言的关系的描述中,( D )是错误的。

A. C语言是C++的一个子集

B. C语言与C++是兼容的

C. C++对C语言进行了一些改进

D. C++和C语言都是面向对象的

【结果分析】

C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。

(6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

A. 算法

B. 信息

C. 数据隐藏

D. 数据抽象

(7)下面( A )不是面向对象系统所包含的要素。

A. 重载

B. 对象

C. 类

D. 继承

【结果分析】

面向对象=对象+类+继承+消息+多态

(8)下面说法正确的是( BC )。

'

A. 将数据结构和算法置于同一个函数内,即为数据封装

B. 一个类通过继承可以获得另一个类的特性

C. 面向对象要求程序员集中于事物的本质特征,用抽象的观点看待程序

D. 同一消息为不同的对象接受时,产生的行为是一样的,这称为一致性

【结果分析】

面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。将数据结构和算法置于同一个类内,即为数据封装。同一消息为不同的对象接受时,产生的行为可能是不一样的,这称为多态性。

(9)下面说法正确的是( AD )。

A. 对象是计算机内存中的一块区域,它可以存放代码和数据

]

B. 对象实际是功能相对独立的一段程序

C. 各个对象间的数据可以共享是对象的一大优点

D. 在面向对象的程序中,对象之间只能通过消息相互通信

【结果分析】

对象是计算机内存中的一块区域。在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。对象之间存在各种联系,但它们之间只能通过消息进行通信。

四、判断题

(1)在高级程序设计语言中,一般用类来实现对象,类是具有相同属性和行为的一组对象的集合,它是创建对象的模板。(√ )

(2) C++语言只支持面向对象技术的抽象性、封装性、继承性等特性,而不支持多态性。(× )

【结果分析】

C++语言不仅支持面向对象技术的抽象性、封装性、继承性等特性,而且支持多态性。

(3)面向对象程序设计中的消息应该包含“如何做”的信息。(×)

【结果分析】

消息是面向对象程序设计用来描述对象之间通信的机制。向对象“发送消息”只需告诉对象做什么,对象根据这个消息决定如何做。

(4)一个消息只能产生特定的响应效果。(× )

【结果分析】

当一个对象发出消息时,由于接收对象的类型可能不同,所以,它们可能做出不同的反应。这样,一个消息可以产生不同的响应效果,这种现象叫做多态。

(5)类的设计和类的继承机制实现了软件模块的可重用性。(√ )

(6) C++语言和Java语言均不是一个纯正的面向对象的程序设计的语言。(× )

【结果分析】

Java语言是一个纯正的面向对象的程序设计语言。

(7)学习C++语言是学习面向对象的程序设计方法的唯一途径。(× )

【结果分析】

程序设计方法是独立于具体程序设计语言的一种技术,学习C++语言是学习面向对象程序设计方法的重要途径之一。

(8)在C++语言中,类是支持数据封装的工具。(√ )

!

五、简答题

(1)什么是结构化程序设计方法它有哪些优点和缺点

【问题解答】

结构化程序设计方法着眼于系统要实现的功能,从系统的输入输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题。由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差。它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。

(2)什么是面向对象程序设计方法它有哪些优点

【问题解答】

面向对象的程序设计方法中,将程序设计为一组相互协作的对象而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为:

&

程序=对象+消息

在面向对象程序设计中应着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计来完成实体的建模任务。类通过一个简单的外部接口与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的

实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。

(3)结构化程序设计方法与面向对象程序设计方法在对待数据结构和算法关系上有什么不同

【问题解答】

结构化程序设计方法中,把数据结构和算法分离为相互独立的实体;而在面向对象程序设计中,数据结构和算法封装在一起,结合成一个独立的单位,即对象,并尽可能隐蔽对象的内部细节。对象的私有属性只能由这个对象的行为来读取和修改,与外部的联系通过公有行为充当外部接口。

!

2

从C到C++

面向对象程序设计教程(C++语言描述)题解与课程设计指导

&

第2章

从C到

C++

一、名词解释

引用内联函数重载函数

.

【问题解答】

所谓引用就是给对象取一个别名,使用该别名可以存取该对象。换句话说是使新对象和原对象共用一个地址。

内联函数是使用inline关键字声明的函数。

重载函数指在同一个作用域内名字相同而参数不同的函数。重载函数通常用来对具有相似行为而数据类型或数据个数不同的操作提供—个通用的名称。

二、填空题

(1)一般情况下,用C++语言编写的程序是由函数加上类组成的。

(2) C++有两种注释符号,一种是int p1,*p2,p3; B. int*p2,p1,*p3;

C. int p1,*p2=&p1,*p3;

D. int*p2,p1,*p3=&p1;

|

【结果分析】

指针定义的具体格式如下所示:

<类型> *<指针名1>,*<指针名2>,…;

(2)若有定义“double xx=,*pp=&xx;”,则*pp等价于( C )。

A. &xx

B. *xx

C. . xx

【结果分析】

pp指向xx所在的内存单元,这样*pp和xx等价。

(3)下面对引用的描述中( C )是错误的。

A. 引用是某个变量或对象的别名

B. 建立引用时,要对它初始化

C. 对引用初始化可以使用任意类型的变量

D. 引用与其代表的对象具有相同的地址

【结果分析】

所谓引用就是给对象取一个别名,使用该别名可以存取该对象,所以对引用初始化必须使用同类型的变量。

"

(4)函数没有返回值的时候,应该选择( A )的函数类型。

A. void

B. int

C. 不确定

D. float

(5)在函数的定义格式中,下面各组成部分中,( D )是可以省略的。A. 函数名 B. 函数体 C. 返回值类型 D. 函数参数

【结果分析】

函数的定义可以缺省形式参数,此时称为无参函数。

(6)对重载的函数来说,下面叙述不正确的是( D )。

A. 参数的类型不同

B. 参数的顺序不同

C. 参数的个数不同

D. 参数的个数、类型、顺序都相同,但函数的返回值类型不同

【结果分析】

对重载的函数来说,编译系统将根据函数参数的类型和个数来判断使用哪一个函数,所以重载函数参数的个数、类型、顺序不能都相同。

(7)下列有关设置函数参数默认值的描述中,( D )是正确的。

A. 对设置函数参数默认值的顺序没有任何规定

B. 函数具有一个参数时不能设置默认值

$

C. 默认参数要设置在函数的原型中,而不能设置在函数的定义语句中

D. 设置默认参数可使用表达式,但表达式中不可用局部变量

【结果分析】

在C++中,在函数原型中可以为一个或多个参数指定默认值。对函数参数设置默认值要注意以下几点。

◆若没有声明函数原型,参数的默认值可在函数定义的头部进行设置,否则必须在函数原型中进行设置。

◆在一个指定了默认值的参数右边不能出现没有指定默认值的参数。

◆设置默认参数可使用表达式,但表达式中不可用局部变量。

(8)下面说法正确的是( BC )。

A. 所有的函数都可以说明为内联函数

B. 具有循环语句、switch语句的函数不能说明为内联函数

C. 使用内联函数,可以加快程序执行的速度,但会增加程序代码的大小

D. 使用内联函数,可以减小程序代码大小,但使程序执行的速度减慢

【结果分析】

内联函数主要是解决程序的运行效率问题。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了程序运行的时间,但会增加程序代码的大小。它是以空间换取时间,因此内联函数适用于功能不太复杂,但要求被频繁调用的函数。

(9)一个函数功能不太复杂,但要求被频繁调用,应选用( A )。

A. 内联函数

B. 重载函数

C. 递归函数

D. 嵌套函数

[

(10) C++对C语言做了很多改进,下列描述中使得C语言发生了质变,即从面向过程变成面向对象的是( D )。

A. 增加了一些新的运算符

B. 允许函数重载,并允许设置默认参数

C. 规定函数说明必须用原型

D. 引进了类和对象的概念

【结果分析】

面向对象=对象+类+继承+消息+多态

四、判断题

}

(1) C++程序中,不得使用没有定义或说明的变量。(√ )

(2)使用const说明常量时,可以不必指出类型。(× )

【结果分析】

如果用const 定义的是一个整型常量,则类型说明符int可以省略。

(3)引用被创建时可以用任意变量进行初始化。(× )

【结果分析】

对引用初始化必须使用同类型的变量。

(4)一个返回引用的调用函数可以作为左值。(√ )

-

(5)函数可以没有参数,也可以没有返回值。(√ )

(6)没有参数的两个函数是不能重载的。(√ )

(7)函数可设置默认参数,但不允许将一个函数的所有参数都设置为默认参数。(× )

【结果分析】

函数可设置默认参数,且允许将一个函数的所有参数都设置为默认参数。

(8)运算符new分配的空间由运算符delete释放。(√ )

五、简答题

(1)名字空间的用途是什么

【问题解答】

名字空间用来防止命名的冲突。

(2)引用有何用处

【问题解答】

除了独立引用外,在C++程序中,引用的主要用途是用作函数参数和函数的返回值。

(3)比较值调用和引用调用的相同点与不同点。

【问题解答】

在值调用机制中,作为实参的表达式的值被复制到由对应的形参名所标识的一个对象中,作为形参的初始值。函数体对形参的访问、修改都是在这个标识对象上操作的,与实参无关,即数据的传递是单向的。

{

使用引用作函数的形参时,调用函数的实参要用变量名。实参传递给形参,相当于在被调用函数中使用了实参的别名。于是,在被调用函数中对形参的操作实质是对实参的直接操作,即数据的传递是双向的。

(4)内联函数有什么作用它有哪些特点

【问题解答】

内联函数是使用inline关键字声明的函数。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了程序运行的时间。

使用内联函数应注意以下几点。

◆递归函数不能定义为内联函数。

◆内联函数一般适合于不含有switch和while等复杂的结构且只有1~5条语句的小函数,否则编译系统将该函数视为普通函数。

◆内联函数只能先定义后使用,否则编译系统也将该函数视为普通函数。

)

◆对内联函数也不能进行异常接口声明。

(5)函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗

【问题解答】

不必一致。所有的参数是根据位置和类型而不是名字来区分的。

(6)重载函数时通过什么来区分

【问题解答】

编译系统将根据函数参数的类型和个数来判断使用哪一个函数。

六、程序分析题(写出程序的输出结果,并分析结果)

#include

using namespace std;

int main()

{

,

int num=50;

int& ref=num;

ref=ref+10;

cout<<"num="<

num=num+40;

cout<<"ref="<

return 0;

}

【输出结果】

num=60

ref=100

【问题分析】

|

本题主要考查引用的含义。

【结果分析】

程序首先定义一个int类型的对象num,并给它赋初始值50。然后又定义了一个int类型的引用ref,并将它和num相联系。这样,无论是对num还是对ref进行操作,实际上都是对那个一开始放着50的物理单元的内容进行操作。

七、程序设计题

写出一个完整的C++程序,使用系统函数pow(x,y)计算xy的值,注意包含头文件cmath。

【问题分析】

本题主要考查简单的输入输出和标准库函数的调用方法。

【解题思路】

~

① 由于要用到系统函数pow(x,y),所以要包含头文件cmath。

② 要计算xy的值,首先必须知道x和y的值。为了程序的通用性,最好通过交互的方式输入x和y的值。

【参考程序】

public B. staticC. protectedD. private

【结果分析】

类的访问权限有public、protected 和private。

(2)有关类的说法不正确的是( BC )。

/

A. 类是一种用户自定义的数据类型

B. 只有类的成员函数才能访问类的私有数据成员

C. 在类中,如不做权限说明,所有的数据成员都是公有的

D. 在类中,如不做权限说明,所有的数据成员都是私有的

【结果分析】

类是一种用户自定义的数据类型,类中成员均具有一种访问权限。关键字public、protected 和private以后的成员的访问权限分别是公有、保护和私有的,所有成员默认定义为private的。

私有成员是被隐藏的数据,只有该类的成员函数或友元函数才可以访问它。(3)在类定义的外部,可以被任意函数访问的成员有( C )。

A. 所有类成员

B. private或protected的类成员

C. public的类成员

D. public或private的类成员

【结果分析】

类是一种用户自定义的数据类型,类中成员均具有一种访问权限。公有成员定义了类的外部接口。私有成员是被隐藏的数据,只有该类的成员函数或友元函数才可以引用它。保护成员具有公有成员和私有成员的双重性质,可以被该类或派生类的成员函数或友元函数引用。可见在类定义的外部,可以被任意函数访问的成员是public的类成员。

(4)关于类和对象的说法( C )是错误的。

A. 对象是类的一个实例

B. 任何一个对象只能属于一个具体的类

C. 一个类只能有一个对象

}

D. 类与对象的关系和数据类型与变量的关系相似

【结果分析】

C++语言的类就是一种用户自己定义的数据类型,类和对象的关系就相当于基本数据类型与它的变量的关系,所以任何一个对象只能属于一个具体的类,但一个类可以有多个对象。

(5)设MClass是一个类,dd是它的一个对象,pp是指向dd的指针,cc是dd 的引用,则对成员的访问,对象dd可以通过( B )进行,指针pp可以通过( D )进行,引用cc可以通过( B )进行。

A. ∷

B. .

C. &

D. ->

(6)关于成员函数的说法中不正确的是( C )。

A. 成员函数可以无返回值

B. 成员函数可以重载

\

C. 成员函数一定是内联函数

D. 成员函数可以设定参数的默认值

【结果分析】

与普通函数不同的是,成员函数是属于某个类的。成员函数的实现,可以放在类体内,也可以放在类体外。在类体外实现的成员函数不再是内联函数。

(7)下面对构造函数的不正确描述是( B )。

A. 系统可以提供默认的构造函数

B. 构造函数可以有参数,所以也可以有返回值

C. 构造函数可以重载

,

D. 构造函数可以设置默认参数

【结果分析】

构造函数不能指定返回类型,即使是void类型也不可以,当然不可能有返回值。(8)假定A是一个类,那么执行语句“A a,b(3),*p;”调用了( B )次构造函数。

A. 1

B. 2

C. 3

D. 4

【结果分析】

声明指针是不会调用构造函数的。

(9)下面对析构函数的正确描述是( AC )。

A. 系统可以提供默认的析构函数

B. 析构函数必须由用户定义

C. 析构函数没有参数

D. 析构函数可以设置默认参数

【结果分析】

析构函数的作用是在对象消失时执行一项清理任务。如果一个类中没有定义析构函数,系统将自动生成一个默认析构函数。析构函数没有参数,当然不可能设置默认参数。

(10)类的析构函数是( D )时被调用的。

A. 类创建

B. 创建对象

C. 引用对象

D. 释放对象

(11)创建一个类的对象时,系统自动调用( B );撤销对象时,系统自动调用( C )。

A. 成员函数

B. 构造函数

C. 析构函数

D. 复制构造函数

(12)通常拷贝构造函数的参数是( C )。

A. 某个对象名

B. 某个对象的成员名

C. 某个对象的引用名

D. 某个对象的指针名

(13)关于this指针的说法正确的是( B )。

A. this指针必须显式说明

B. 当创建一个对象后,this指针就指向该对象

C. 成员函数拥有this指针

D. 静态成员函数拥有this指针。

]

【结果分析】

this指针是由C++编译器自动产生且较常用的一个隐含对象指针,它不能被显式声明。当创建一个对象时,this指针就初始化指向该对象。但只有非静态成员函数才拥有this指针,并通过该指针来处理对象。

(14)下列关于子对象的描述中,( B )是错误的。

A. 子对象是类的一种数据成员,它是另一个类的对象

B. 子对象可以是自身类的对象

C. 对子对象的初始化要包含在该类的构造函数中

D. 一个类中能含有多个子对象作其成员

【结果分析】

)

子对象不可以是自身类的对象。

(15)对new运算符的下列描述中,( B )是错误的。

A. 它可以动态创建对象和对象数组

B. 用它创建对象数组时必须指定初始值

C. 用它创建对象时要调用构造函数

D. 用它创建的对象数组可以使用运算符delete来一次释放

【结果分析】

使用运算符new创建对象数组的格式如下:

}

new <类型说明符> [<算术表达式>]

其中,<算术表达式>给出数组的大小,后面不能再跟构造函数参数,所以用它创建对象数组时不能指定初始值。

(16)对delete运算符的下列描述中,( D )是错误的。

A. 用它可以释放用new运算符创建的对象和对象数组

B. 用它释放一个对象时,它作用于一个new所返回的指针

C. 用它释放一个对象数组时,它作用的指针名前须加下标运算符[]

D. 用它可一次释放用new运算符创建的多个对象

【结果分析】

用delete一次只能释放用new创建的1个对象,但可释放一个对象数组。(17)关于静态数据成员,下面叙述不正确的是( C )。

A. 使用静态数据成员,实际上是为了消除全局变量

B. 可以使用“对象名.静态成员”或者“类名∷静态成员”来访问静态数据成员

C. 静态数据成员只能在静态成员函数中引用

D. 所有对象的静态数据成员占用同一内存单元

'

【结果分析】

静态数据成员可以在静态成员函数中引用,也可以在非静态成员函数中引用。(18)对静态数据成员的不正确描述是( CD )。

A. 静态成员不属于对象,是类的共享成员

B. 静态数据成员要在类外定义和初始化

C. 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

D. 只有静态成员函数可以操作静态数据成员

【结果分析】

"

this指针是一个局部量,局部于某个对象,而静态成员函数是属于整个类而不是某个对象,它没有this指针。静态成员函数和非静态成员函数均可操作静态数据成员。

(19)下面的选项中,静态成员函数不能直接访问的是( D )。

A. 静态数据成员

B. 静态成员函数

C. 类以外的函数和数据

D. 非静态数据成员

【结果分析】

由于静态成员函数没有this指针,它只能直接访问该类的静态数据成员、静态成员函数和类以外的函数和数据,访问类中的非静态数据成员必须通过参数传递方式得到对象名,然后通过对象名来访问。

(20)在类的定义中,引入友元的原因是( A )。

A. 提高效率

B. 深化使用类的封装性

C. 提高程序的可读性

D. 提高数据的隐蔽性

【结果分析】

友元的作用主要是为了提高效率和方便编程,但友元破坏了类的封装性和隐蔽性,使用时要权衡利弊。

(21)友元类的声明方法是( A )。

A. friend class<类名>;

B. youyuan class<类名>;

C. class friend<类名>;

D. friends class<类名>;(22)下面对友元的错误描述是( D )。

A. 关键字friend用于声明友元

}

B. 一个类中的成员函数可以是另一个类的友元

C. 友元函数访问对象的成员不受访问特性影响

D. 友元函数通过this指针访问对象成员

【结果分析】

友元函数是一个放在类中的普通函数,它没有this指针。

(23)下面选项中,( C )不是类的成员函数。

A. 构造函数

B. 析构函数

C. 友元函数

D. 拷贝构造函数

三、简答题

(

(1)类与对象有什么关系

【问题解答】

类是一种用户自己定义的数据类型,和其他数据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对数据进行操作的函数。程序员可以使用这个新类型在程序中声明新的变量,具有类类型的变量称为对象。创建对象时,类被用做样板,对象称为类的实例。

(2)类定义的一般形式是什么其成员有哪几种访问权限

【问题解答】

定义类一般形式为:

class类名{

public:

<公有数据和函数>

protected:

<保护数据和函数>

private:

<私有数据和函数>

};

访问权限共有3种:分别是公有(public)、保护(protected)和私有(private)。$

(3)类的实例化是指创建类的对象还是定义类

【问题解答】

指创建类的对象。

(4)什么是this指针它的主要作用是什么

【问题解答】

this指针是C++语言为成员函数提供的一个隐含对象指针,它不能被显式声明。this指针是一个局部量,局部于某个对象。不同的对象调用同一个成员函数时,编译器根据this指针来确定应该引用哪一个对象的数据成员。

(5)什么叫做拷贝构造函数拷贝构造函数何时被调用

【问题解答】

,

拷贝构造函数是一种特殊的构造函数,它的作用是用一个已经存在的对象去初始化另一个对象。为了保证所引用的对象不被修改,通常把引用参数声明为const 参数。

在以下3种情况下,拷贝构造函数都会被自动调用:

◆当用类的一个对象去初始化该类的另一个对象时;

◆当函数的形参是类的对象,进行形参和实参结合时;

◆当函数的返回值是类的对象,函数执行完成返回调用者时。

四、程序分析题(写出程序的输出结果,并分析结果)(1)

|

#include

using namespace std;

class Test

{

%

private:

int num;

public:

Test();// 默认构造函数

~

Test(int n); // 带一个参数构造函数

};

Test∷Test()

{

{

cout<<"Init defa"<

num=0;

}

Test∷Test(int n)

:

{

cout<<"Init"<<" "<

num=n;

}

^

int main()

{

Test x[2];// 语句1

Test y(15); // 语句2

]

return 0;

}

【输出结果】

Init defa

?

Init defa

Init 15

【问题分析】

本题主要考查构造函数的调用时机和构造函数的匹配问题。

【要点提示】

构造函数在创建对象时被自动调用,具体调用哪个构造函数将由编译系统根据重载函数的匹配原则来确定。

(

【结果分析】

① 程序声明了2个对象x和y,类中有2个构造函数。

② 程序首先执行语句1,创建对象x,调用默认构造函数。由于对象x是对象数组,每个数组元素被创建时都要调用构造函数,所以默认构造函数被调用了2次,输出第1、2行结果。程序接着执行语句2,创建对象y,调用带一个参数的构造函数,输出第3行结果。

(2)

#include

using namespace std;

class Xx

{

private:

int num;

>

public:

Xx(int x){num=x;} // 构造函数

~Xx(){cout<<"dst "<

};

~

int main()

{

Xx w(5); // 语句1

cout<<"Exit main"<

return 0;

}

【输出结果】

Exit main

#

dst 5

【问题分析】

本题主要考查析构函数的调用时机。

【要点提示】

析构函数在释放对象时被自动调用。

【结果分析】

① 程序声明了一个对象w。

② 程序首先执行语句1,创建对象w,调用构造函数,num得到初值5。程序接着执行语句2,输出第1行结果。当程序结束时,释放对象w,析构函数被调用,输出第2行结果。

(3)将例中的Whole类如下修改,其他部分不变,写出输出结果。

class Whole

{

\

public:

Whole(int i); // Whole的有参构造函数

Whole(){}; // Whole的无参构造函数

~Whole(); // Whole的析构函数

private:

Part p1;// 子对象1

Part p2;// 子对象2

Part p3;// 子对象3

};

Whole∷Whole(int i):p2(i),p1()

{

cout<<"Constructor of Whole"<

}

Whole∷~Whole()

{

cout<<"Destructor of Whole"<

#

}

【输出结果】

Default constructor of Part

Constructor of Part,3

\

Default constructor of Part

Constructor of Whole

Destructor of Whole

Destructor of Part,0

Destructor of Part,3

Destructor of Part,0

【问题分析】

本题主要考查子对象初始化的方法和含有子对象时构造函数和析构函数的调用顺序。

【要点提示】

◆当建立X类的对象时,先调用子对象的构造函数,初始化子对象,然后才执行X类的构造函数,初始化X类中的其他成员。

◆对子对象构造函数的调用顺序取决于这些子对象在类中的说明顺序,与它们在成员初始化列表中给出的顺序无关。

◆如果X类的构造函数没有给出成员初始化列表,表明子对象将使用默认构造函数进行初始化。

◆析构函数的调用顺序与构造函数的调用顺序正好相反。

【结果分析】

程序的Whole类中出现了类Part的3个对象p1、p2和p3,作为该类的数据成员,则p1、p2和p3被称为子对象。当建立Whole类的对象w时,子对象p1、p2和p3被建立,相应的构造函数被执行。由于p1在Whole类中先说明,所以

先执行它所使用的构造函数,即类Part的默认构造函数,接着p2执行它所使用的有参构造函数,紧接着初始化p3,由于Whole类构造函数的成员初始化列表中没有子对象p3进行初始化的选项,所以执行类Part的默认构造函数,当所有子对象被构造完之后,对象w的构造函数才被执行,从而得到前4行输出结果,而后4行是执行相应析构函数的输出结果。

(4)

#include

using namespace std;

class Book

{

public:

Book(int w);

static int sumnum;

private:

int num;

};

Book∷Book(int w)

{

num=w;

sumnum-=w;

}

int Book∷sumnum=120;// 语句1

int main()

{

Book b1(20);// 语句2

Book b2(70);// 语句3

cout<

return 0;

}

【输出结果】

30

【问题分析】

本题主要考查“在类的范围内所有对象共享静态成员的数据”的含义。

【结果分析】

程序中语句1对静态成员sumnum进行初始化,sumnum得到初值120。执行语句2时,调用构造函数,sumnum变为100。接着语句3,再调用构造函数,sumnum 变为30。

五、程序设计题

(1)声明一个Circle类,有数据成员radius(半径)、成员函数area(),计算圆的面积,构造一个Circle的对象进行测试。

【问题分析】

本题主要考查类定义的形式、对象成员访问和对象初始化的方法。要求理解类和构造函数的真正含义,特别注意如何将客观事物的属性和行为抽象为类的成员。【解题思路】

① 题目中已给出了类的基本部分,需要增加一个构造函数来初始化数据成员radius。

② 为了程序的通用性,圆的半径由键盘输入。

【参考程序】

//

#include

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

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

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

操作系统习题答案

内存1通常情况下,在下列存储管理方式中,()支持多道程序设计、管理最简单,但存储碎片多;()使内存碎片尽可能少,而且使内存利用率最高。 Ⅰ.段式;Ⅱ.页式;Ⅲ.段页式;Ⅳ.固定分区;Ⅴ.可变分区 正确答案:Ⅳ;Ⅰ 2为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性是()。正确答案:该程序应具有较好的局部性(Locality) 3提高内存利用率主要是通过内存分配功能实现的,内存分配的基本任务是为每道程序()。使每道程序能在不受干扰的环境下运行,主要是通过()功能实现的。Ⅰ.分配内存;Ⅱ.内存保护;Ⅲ.地址映射;Ⅳ.对换;Ⅴ.内存扩充;Ⅵ.逻辑地址到物理地址的变换;Ⅶ.内存到外存间交换;Ⅷ.允许用户程序的地址空间大于内存空间。 正确答案:Ⅰ;Ⅱ 4适合多道程序运行的存储管理中,存储保护是 正确答案:为了防止各道作业相互干扰 5下面哪种内存管理方法有利于程序的动态链接()? 正确答案:分段存储管理 6在请求分页系统的页表增加了若干项,其中状态位供()参考。 正确答案:程序访问 7从下面关于请求分段存储管理的叙述中,选出一条正确的叙述()。 正确答案:分段的尺寸受内存空间的限制,但作业总的尺寸不受内存空间的限制

8虚拟存储器的特征是基于()。 正确答案:局部性原理 9实现虚拟存储器最关键的技术是()。 正确答案:请求调页(段) 10“抖动”现象的发生是由()引起的。 正确答案:置换算法选择不当 11 在请求分页系统的页表增加了若干项,其中修改位供()参考。 正确答案:换出页面 12 虚拟存储器是正确答案:程序访问比内存更大的地址空间 13测得某个请求调页的计算机系统部分状态数据为:CPU利用率20%,用于对换空间的硬盘的利用率97.7%,其他设备的利用率5%。由此断定系统出现异常。此种情况下()能提高CPU的利用率。 正确答案:减少运行的进程数 14在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起()。 正确答案:越界中断 15 测得某个请求调页的计算机系统部分状态数据为:CPU利用率20%,用于对换空间的硬盘的利用率97.7%,其他设备的利用率5%。由此断定系统出现异常。此种情况下()能提高CPU的利用率。 正确答案:加内存条,增加物理空间容量 16 对外存对换区的管理应以()为主要目标,对外存文件区的管理应以()

操作系统教程_孙钟秀(第四版)课后习题答案

首页入门学 习 程序 员 计算机考 研 计算机电子书 下载 硬件知 识 网络知 识 专业课程答案 下载 视频教程下载 第一章 作者:佚名来源:网络 1、有一台计算机,具有IMB 内存,操作系统占用200KB ,每个用户进程各占200KB 。如果用户进程等待I/O 的时间为80 % ,若增加1MB 内存,则CPU 的利用率提高多少? 答:设每个进程等待I/O 的百分比为P ,则n 个进程同时等待刀O 的概率是Pn ,当n 个进程同时等待I/O 期间CPU 是空闲的,故CPU 的利用率为1-Pn。由题意可知,除去操作系统,内存还能容纳4 个用户进程,由于每个用户进程等待I/O的时间为80 % , 故: CPU利用率=l-(80%)4 = 0.59 若再增加1MB 内存,系统中可同时运行9 个用户进程,此时:cPu 利用率=l-(1-80%)9 = 0.87 故增加IMB 内存使CPU 的利用率提高了47 % : 87 %/59 %=147 % 147 %-100 % = 47 % 2 一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A 先开始做,程序B 后开始运行。程序A 的运行轨迹为:计算50ms 、打印100ms 、再计算50ms 、打印100ms ,结束。程序B 的运行轨迹为:计算50ms 、输入80ms 、再计算100ms ,结束。试说明(1 )两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会等待?( 2 )程序A 、B 有无等待CPU 的情况?若有,指出发生等待的时刻。 答:画出两道程序并发执行图如下: (1)两道程序运行期间,CPU存在空闲等待,时间为100 至150ms 之间(见图

经济法教程部分作业题参考标准答案

经济法教程部分作业题参考答案

————————————————————————————————作者:————————————————————————————————日期: 2

《经济法教程》部分作业题参考答案 第一单元 4. 简单题 1. 简述我国经济法的体系结构.P18-20 答:我国经济法大致分为三个部分:(1)经济主体组织法,它是经济法的起点,主要是确认经营者和消费者的法律资格和地位的法;(2)经济管理法,它是经济法体系的基本部分,是调整经济管理关系、明确经济职权、规范经济管理职能行为的法律规范系统;(3)经营规制法,它是经济法体系中的基础法,它也是调整经营者及其相互之间以及它们与消费者之间发生的受政府规制的经济关系的法律规范系统。 2.如何认识经济法律关系的主体.P22-23 答:(1)经济法律关系主体,是指参加经济法律关系、具有经济权利(权力)和承担经济义务的当事人。(2)经济法律关系主体是构成经济法律关系三要素之一,没有主体不可能形成经济法律关系。(3)我国经济法律关系的主体,主要包括国家经济管理机关、经营者、消费者和其他特殊主体。(4)其中,国家经济管理机关是指承担国家的具体经济职能的国家机关;经营者是指以营利为目的,从事商品生产、销售和提供有偿服务的法人、合伙及其他社会组织和个人;消费者是指为满足个人或家庭的生活需要而购买、使用商品或接受服务的自然人;其他特殊主体是指国家和个人。 5论述题P12-15 试论我国经济法的基本特征. 答:经济法的基本特征是指经济法具有不同于其他相邻法律部门的属性。经济法是由社会经济的社会化所导致的国家规制与调控经济活动之法。我国经济法的基本特征除了具有天然的经济性之外,还具有以下特征:一是经济法是维护社会整体利益的社会本位法。经济法的社会利益本位,是指它在对经济关系的调整中立足于社会整体利益的维护,都以广大民众的意志和整体的、长远的利益为优先。经济法以维护社会整体利益为最高行为准则和应尽的社会责任。二是经济法是平衡协调发展经济的促进法。是指经济法可能通过其特有的各项制度,规范和保障经济改革与发展进程中的不同所有制经济之间、城乡之间、区域之间、国内发展与对外开放之间和社会个体与社会整体之间各种经济互动行为,为国家根本利益、社会整体利益和人类长远利益提供强制力保护,以其实质公平的制度设计去平衡协调各方经济利益关系,从而实现国民经济与社会的全面、协调、可持续发展的目标。三是经济法是综合调整的系统法。经济法反映经济关系分化与综合两种发展趋势要求,一方面,它通过具体的制度和规范,分别细致地调整着各种经济关系;另一方面又在总体上和全过程中对经济关系进行综合、系统的调整。经济法既是国家全面调控经济、对经济实行综合治理的法律部门,同时也是上下位制度层次清晰,体现现代法律控制机制特色的系统法律部门。四是经济法是公法和私法兼容的复合法。因为经济法不是只体现国家意志和利益、单纯干预和管理经济的公法,也不是只立足于个人权利本位的私法。它是公法与私法相互兼容的复合集成型法,是对二者进行有机结合的一种复合型的法。 第二单元 4. 简单题 1. 合伙企业设立的条件是什么? P34 答:设立合伙企业,应当具备下列条件:(1)有2个以上合伙人,并且都是依法承担无

(完整版)《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

操作系统第四版-课后习题答案

操作系统第四版-课后习题答案

第一章 作者:佚名来源:网络 1、有一台计算机,具有IMB 内存,操作系统占用200KB ,每个用户进程各占200KB 。如果用户进程等待I/O 的时间为80 % ,若增加1MB 内存,则CPU 的利用率提高多少? 答:设每个进程等待I/O 的百分比为P ,则n 个进程同时等待刀O 的概率是Pn ,当n 个进程同时等待I/O 期间CPU 是空闲的,故CPU 的利用率为1-Pn。由题意可知,除去操作系统,内存还能容纳4 个用户进程,由于每个用户进程等待I/O的时间为80 % , 故: CPU利用率=l-(80%)4 = 0.59 若再增加1MB 内存,系统中可同时运行9 个用户进程,此时:cPu 利用率=l-(1-80%)9 = 0.87 故增加IMB 内存使CPU 的利用率提高了47 % : 87 %/59 %=147 % 147 %-100 % = 47 % 2 一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A 先开始做,程序B 后开始运行。程序A 的运行轨迹为:计算50ms 、打印100ms 、再计算50ms 、打印100ms ,结束。程序B 的运行轨迹为:计算50ms 、输入80ms 、再计算100ms ,结束。试说明(1 )两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会等待?( 2 )程序A 、B 有无等待CPU 的情况?若有,指出发生等待的时刻。 答:画出两道程序并发执行图如下: (1)两道程序运行期间,CPU存在空闲等待,时间为100 至150ms 之间(见图中有色部分) (2)程序A 无等待现象,但程序B 有等待。程序B 有等待时间段为180rns 至200ms 间(见图中有色部分) 3 设有三道程序,按A 、B 、C优先次序运行,其内部计算和UO操作时间由图给出。

操作系统》第章教材习题解答

第4章存储管理 “练习与思考”解答 1.基本概念和术语 逻辑地址、物理地址、逻辑地址空间、内存空间、重定位、静态重定位、动态重定位、碎片、碎片紧缩、虚拟存储器、快表、页面抖动 用户程序经编译之后的每个目标模块都以0为基地址顺序编址,这种地址称为相对地址或逻辑地址。 内存中各物理存储单元的地址是从统一的基地址开始顺序编址的,这种地址称为绝对地址或物理地址。 由程序中逻辑地址组成的地址范围叫做逻辑地址空间,或简称为地址空间。 由内存中一系列存储单元所限定的地址范围称作内存空间,也称物理空间或绝对空间。 程序和数据装入内存时,需对目标程序中的地址进行修改。这种把逻辑地址转变为内存物理地址的过程称作重定位。 静态重定位是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的内存地址。 动态重定位是在程序执行期间,每次访问内存之前进行重定位。这种变换是靠硬件地址转换机构实现的。 内存中这种容量太小、无法被利用的小分区称作“碎片”或“零头”。 为解决碎片问题,移动某些已分配区的内容,使所有进程的分区紧挨在一起,而把空闲区留在另一端。这种技术称为紧缩(或叫拼凑)。 虚拟存储器是用户能作为可编址内存对待的虚拟存储空间,它使用户逻辑存储器与物理存储器分离,是操作系统给用户提供的一个比真实内存空间大得多的地址空间。 为了解决在内存中放置页表带来存取速度下降的矛盾,可以使用专用的、高速小容量的联想存储器,也称作快表。 若采用的置换算法不合适,可能出现这样的现象:刚被换出的页,很快又被访问,为把它调入而换出另一页,之后又访问刚被换出的页,……如此频繁地更换页面,以致系统的大部分时间花费在页面的调度和传输上。此时,系统好像很忙,但实际效率却很低。这种现象称为“抖动”。 2.基本原理和技术 (1)存储器一般分为哪些层次?各有何特性? 存储器一般分为寄存器、高速缓存、内存、磁盘和磁带。 CPU内部寄存器,其速度与CPU一样快,但它的成本高,容量小。 高速缓存(Cache),它们大多由硬件控制。Cache的速度很快,它们放在CPU内部或非常靠近CPU的地方。但Cache的成本很高,容量较小。 内存(或称主存),它是存储器系统的主力,也称作RAM(随机存取存储器)。CPU可以直接存取内存及寄存器和Cache中的信息。然而,内存中存放的信息是易变的,当机器电源被关闭后,内存中的信息就全部丢失了。 磁盘(即硬盘),称作辅助存储器(简称辅存或外存),它是对内存的扩展,但是CPU不能直接存取磁盘上的数据。磁盘上可以永久保留数据,而且容量特别大。磁盘上数据的存取速度低于内存存取速度。 磁带保存的数据更持久,容量更大,但它的存取速度很慢,而且不适宜进行随机存取。所以,磁带设备一般不能用做辅存。它的主要用途是作为文件系统的后备,存放不常用的信息或用做系统间传送信息的介质。 (2)装入程序的功能是什么?常用的装入方式有哪几种? 装入程序的功能是根据内存的使用情况和分配策略,将装入模块放入分配到的内存区中。 程序装入内存的方式有三种,分别是绝对装入方式、可重定位装入方式和动态运行时装入方式。

新编经济法教程-刘泽海-练习题答案

新编经济法教程 第一章经济法导论 、单项选择题 说明: 第1版第1、2次印刷时单项选择题共有20道题目,2010年12月27日第3次印刷时,保留了17道题目,将原第1版第1、2次的第33页中的第14题(C)、第17题(D)、第34页中第18题(A)删除,题序相应变动。后延续。 三、多项选择题 五、案例分析题 案例一 1. 未届满。 2 ?该承诺导致诉讼时效的中断,诉讼时效期间重新计算。 3 .可以。 案例二 1. 可以协商解决,可以诉讼解决,也可以事后就纠纷达成仲裁协议申请仲裁解决 2. 可提起诉讼要求承担违约责任,也可要求解除合同并承担缔约过失责任。 3. 法院可要求其承担违约责任,支付违约金,也可要求撤销合同,承担损害赔偿的责任。 第二章企业法律制度 、单项选择题 三、多项选择题

五、案例分析题 案例一 1可以。 2?可以,个人独资企业的投资者有经营自主权。 3 .不应支持,因为该企业设立时没有明确是以家庭共有财产出资,胡某应承担无限责任,花某不承担责任。 案例二 1乙的观点错误,理由:合伙企业的内部规定不能对抗善意第三人。 2?甲的观点片面,理由:甲认为本企业不具备独立法人资格”是正确的,而由此推定“会计记录真实与否紧要”则是不正确的,企业无论是否具备法人资格都应该会计记录真实。 3. A的观点错误。理由:新入伙的合伙人对入伙前合伙企业的债务承担无限连带责任。 4?丁的观点错误。理由:我国《合伙企业法》第22条规定:“合伙人之间转让在合伙企业中的全部或者部分财产份额时,应当通知其他合伙人”。即:合伙人内部转让财产份额的无须征得其他合伙人的同意,但应当通知。 5. B公司的观点错误。合伙企业违约,应接受定金制裁,即向B公司双倍返还定金共60万元,但由于返还的定金足以补偿因合伙企业违约而给B造成的损失,故无须再支付赔偿金。 案例三 1有效。 2?效力待定。因为除合伙协议另有约定或者经全体合伙人同意外,合伙人不得同本合伙企业进行交易。 3.不可以。 4?不可以。因为没有获得其他合伙人的一致同意。 5.无效。因为合伙人之间内部转让财产份额须通知其他合伙人即可。 案例四 1. 合伙人以实物、知识产权、土地使用权或其他财产权出资的,需要评估作价; 有限合伙人不得以劳务出资,故丁以劳务出资不妥;有限合伙企业名称应标有“有限合伙”字样。 2. 甲的观点错误。理由:合伙人不得以合伙企业的债务抵销合伙人自身的债务。 丙的观点错误。理由:合伙企业内部规定不得对抗善意第三人。 乙的观点错误。理由:合伙人退伙的对基于其退伙前的原因发生的合伙企业债务,承担无限连带责任。 丁的观点错误。理由:合伙企业的亏损分担应按合伙协议约定处理,未约定或约定不明确的,由合伙企业协商决定;协商不成的,由合伙人按照缴出出资比例分担;无法确定出资比例的,由合伙人平均分担。 杨光的观点错误。理由:首先该企业协议只在杨光与乙之间有效;其次新合伙人对入伙前

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

(完整版)操作系统课后题答案

2.OS的作用可表现在哪几个方面? 答:(1)OS作为用户与计算机硬件系统之间的接口;(2)OS作为计算机系统资源的管理者; (3)OS实现了对计算机资源的抽象。 5.何谓脱机I/O和联机I/O? 答:脱机I/O 是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输入到磁带上。该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的。 11.OS有哪几大特征?其最基本的特征是什么? 答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。 20.试描述什么是微内核OS。 答:(1)足够小的内核;(2)基于客户/服务器模式;(3)应用机制与策略分离原理;(4)采用面向对象技术。 25.何谓微内核技术?在微内核中通常提供了哪些功能? 答:把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。在微内核中通常提供了进程(线程)管理、低级存储器管理、中断和陷入处理等功能。 第二章进程管理 2. 画出下面四条语句的前趋图: S1=a:=x+y; S2=b:=z+1; S3=c:=a – b;S4=w:=c+1; 答:其前趋图为: 7.试说明PCB 的作用,为什么说PCB 是进程存在的惟一标志? 答:PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。OS是根据PCB对并发执行的进程进行控制和管理的。 11.试说明进程在三个基本状态之间转换的典型原因。 答:(1)就绪状态→执行状态:进程分配到CPU资源;(2)执行状态→就绪状态:时间片用完;(3)执行状态→阻塞状态:I/O请求;(4)阻塞状态→就绪状态:I/O完成. 19.为什么要在OS 中引入线程?

计算机操作系统教程课后答案

第一章绪论 1.什么是操作系统的基本功能? 答:操作系统的职能是管理和控制汁算机系统中的所有硬、软件资源,合理地组织计算 机工作流程,并为用户提供一个良好的工作环境和友好的接口。操作系统的基本功能包括: 处理机管理、存储管理、设备管理、信息管理(文件系统管理)和用户接口等。 2.什么是批处理、分时和实时系统?各有什么特征? 答:批处理系统(batchprocessingsystem):操作员把用户提交的作业分类,把一批作业编成一个作业执行序列,由专门编制的监督程序(monitor)自动依次处理。其主要特征是:用户脱机使用计算机、成批处理、多道程序运行。 分时系统(timesharingoperationsystem):把处理机的运行时间分成很短的时间片,按时间片轮转的方式,把处理机分配给各进程使用。其主要特征是:交互性、多用户同时性、独立性。 实时系统(realtimesystem):在被控对象允许时间范围内作出响应。其主要特征是:对实时信息分析处理速度要比进入系统快、要求安全可靠、资源利用率低。 3.多道程序(multiprogramming)和多重处理(multiprocessing)有何区别? 答;多道程序(multiprogramming)是作业之间自动调度执行、共享系统资源,并不是真正地同时执行多个作业;而多重处理(multiprocessing)系统配置多个CPU,能真正同时执行多道程序。要有效使用多重处理,必须采用多道程序设计技术,而多道程序设计原则上不一定要求多重处理系统的支持。 4.讨论操作系统可以从哪些角度出发,如何把它们统一起来? 答:讨论操作系统可以从以下角度出发: (1)操作系统是计算机资源的管理者; (2)操作系统为用户提供使用计算机的界面; (3)用进程管理观点研究操作系统,即围绕进程运行过程来讨论操作系统。

面向对象程序设计教程答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,(D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

操作系统课后习题答案

第一章 1.设计现代OS的主要目标是什么? 答:(1)有效性(2)方便性(3)可扩充性(4)开放性 4.试说明推劢多道批处理系统形成和収展的主要劢力是什么? 答:主要动力来源于四个方面的社会需求与技术发展: (1)不断提高计算机资源的利用率; (2)方便用户; (3)器件的不断更新换代; (4)计算机体系结构的不断发展。 12.试从交互性、及时性以及可靠性方面,将分时系统不实时系统迚行比较。答:(1)及时性:实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定;而实时控制系统的及时性,是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微妙。 (2)交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些特定的专用服务程序。不像分时系统那样能向终端用户提供数据和资源共享等服务。 (3)可靠性:分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是灾难性后果,所以在实时系统中,往往都采取了多级容错措施保障系统的安全性及数据的安全性。 13.OS有哪几大特征?其最基本的特征是什么? 答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。 第二章 2. 画出下面四条诧句的前趋图: S1=a:=x+y; S2=b:=z+1; S3=c:=a –b;S4=w:=c+1; 8.试说明迚程在三个基本状态之间转换的典型原因。 答:(1)就绪状态→执行状态:进程分配到CPU资源 (2)执行状态→就绪状态:时间片用完 (3)执行状态→阻塞状态:I/O请求 (4)阻塞状态→就绪状态:I/O完成

操作系统教程习题答案

《操作系统教程》习题答案

习题1 1.单项选择题 (1)大中小型计算机是以为中心的计算机系统。 A、CPU B、存储器 C、系统总线 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)B (2)B (3)A (4)B (5)D (6)B 2.填空题 (1)微机是以总线为纽带构成的计算机系统。 (2)在批处理兼分时系统中,往往把由分时系统控制的作业称为前台作业,把由批处理系统控制的作业称为后台作业。 (3)在分时系统中,若时间片长度一定,则用户数越多,系统响应时间越慢。 (4)分布式操作系统能使系统中若干台计算机协同完成一个共同的任务,分解问题成为子计算并使之在系统中各台计算机上并行执行,以充分利用各计算机的优势。 (5)用户通过网络操作系统可以网络通信、资源共享,从而大大扩展了计算机的应用范围。 3.简答题 (1)什么是操作系统?现代操作系统的基本特征是什么?并发性 (2)什么是批处理系统,衡量批处理系统好坏的主要指标是什么?及时性 (3)试述分时系统的原理及其特性。时间片原则交互性同时性独立性及时性

经济法教程复习提纲

经济法教程复习提纲 第一章经济法概论 一、现代意义上的“经济法”一词的由来, 二、经济法的产生背景和大致过程, 三、我国经济法的概念和调整对象 (一)我国经济法的调整对象 经济协调论 1、学术上的代表性观点宏观调控论 需要干预论 2、本人(原始课件制作者)的观点 (1)宏观调控关系 (2)确认或规范市场主体所产生的社会关系 (3)维护市场正常运行和公平竞争秩序所产生的社会关系 (4)涉外经济关系 (二)我国经济法的概念 四、我国现行经济法的体系或结构 (一)宏观经济调控和管理法 (二)、规范市场主体法: (三)市场监管和市场竞争秩序法 (四)涉外经济法、对外贸易法、反倾销法、反补贴法等 第二章公司法律制度 第一节公司法概述 一、公司的概念和法律特征 (一)概念。 1、大陆法系的公司概念 2、英美法系的公司概念 3、我国的公司概念 (二)法律视角下公司的特征 1、公司是依法成立的社会组织--合法性特征。 2、公司是以营利为目的企业组织--营利性特征。 3、公司是具有独立法人地位的企业组织----法人人格(资格)性或独立性特征。 (1)公司拥有独立的财产--具有法人资格地位的前提。 (2)公司独立承担法律责任--有独立财产的必然结果。 A、公司责任与股东责任相互独立 B、公司责任与其工作人员责任相互独立。 C、公司责任与其他公司或法人组织责任的相互独立 二、公司的种类 对公司国籍的确定,国际上主要的立法和学说有: 1、设立行为地主义 2、准据法主义

3、住所地主义 4、资本控制主义 我国采取的标准---主要是准据法主义。 三、公司法的概念和调整对象 第二节有限责任公司 一、有限责任公司概念和特征 二、有限责任公司的设立 (一)公司设立的基本理论 1、公司设立的涵义 2、公司设立的基本原则 (1)自由主义: (2)特许主义 (3)核准主义 (4)准则主义 我国公司设立的原则——严格准则主义 3、公司设立的方式 (1)发起设立 (2)募集设立 (3)发起设立和募集设立各自的优缺点。 (二)有限公司设立的条件 1、人的要件 2、财产要件 (1)大陆法系国家公司法在公司资本立法上形成了著名的“公司资本三原则”: A:资本确定原则 B:资本维持原则 C:资本不变原则 (2)股东的出资方式。 3、组织要件 4、行为要件。 (三)有限责任公司设立的程序 1、发起人发起并签订设立协议(发起人协议) 2、草拟公司章程 3、申请名称预先核准 4、设立审批 5、缴纳出资 6、验资 7、确立公司的组织机构 8、申请设立登记 9、登记发照 三、有限公司的组织机构 (一)股东会

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

操作系统教程第5版部分习题标准答案

第一章: 一、3、10、15、23、27、35 3.什么是操作系统?操作系统在计算机系统中的主要作用是什么? 操作系统是管理系统资源、控制程序执行、改善人机界面、提供各种服务,并合理组织计算机工作流程和为用户有效地使用计算机提供良好运行环境的一种系统软件. 主要作用 (1)服务用户—操作系统作为用户接口和公共服务程序 (2)进程交互—操作系统作为进程执行的控制者和协调者 (3)系统实现—操作系统作为扩展机或虚拟机 (4)资源管理—操作系统作为资源的管理者和控制者 10.试述系统调用与函数(过程)调用之间的区别。 (1)调用形式和实现方式不同; (2)被调用的代码位置不同; (3)提供方式不同 15.什么是多道程序设计?多道程序设计有什么特点? 多道程序设计是指允许多个作业(程序)同时进入计算机系统内存并执行交替计算的方法。从宏观上看是并行的,从微观上看是串行的。 (1)可以提高CPU、内存和设备的利用率; (2)可以提高系统的吞吐率,使单位时间内完成的作业数目增加; (3)可以充分发挥系统的并行性,使设备和设备之间,设备和CPU之间均可并行工作。 23.现代操作系统具有哪些基本功能?请简单叙述之。 (1)处理器管理; (2)存储管理; (3)设备管理; (4)文件管理; (5)联网与通信管理。 27.什么是操作系统的内核? 内核是一组程序模块,作为可信软件来提供支持进程并发执行的基本功能和基本操作,通常驻留在内核空间,运行于内核态,具有直接访问计算机系统硬件设备和所有内存空间的权限,是仅有的能够执行特权指令的程序。 35.简述操作系统资源管理的资源复用技术。

系统中相应地有多个进程竞争使用资源,由于计算机系统的物理资源是宝贵和稀有的,操作系统让众多进程共享物理资源,这种共享称为资源复用。 (1)时分复用共享资源从时间上分割成更小的单位供进程使用; (2)空分复用共享资源从空间上分割成更小的单位供进程使用。 . 二、2、5 2、答:画出两道程序并发执行图如下: (1) (见图中有色部分)。 (2)程序A无等待现象,但程序B有等待。程序B有等待时间段为180ms至200ms间(见 图中有色部分)。 5、答:画出三个作业并行工作图如下(图中着色部分为作业等待时间):

经济法教程课后案例分析题答案

经济法教程案例分析题答案 第二章个人独资企业法 【第一小题】答:李某于4月12日以长远企业名义向王某购买价值2万元货物的行为有效。根据《个人独资企业法》第19条规定:“投资人对被聘用的人员职权的限制,不得对抗善意第三人”。尽管李某向王某购买货物的行为超越职权,但王某为善意第三人,因此,该合同有效。 【第二小题】答:个人独资企业设立分支机构应办理登记手续。根据《个人独资企业法》,个人独资企业设立分支机构,应当由投资人或者其委托的代理人向分支机构所在地的登记机关申请设立登记。 根据《个人独资企业法》,投资人委托或者聘用他人管理个人独资企业事务,应当与受托人或者被聘用的签订书面合同,明确委托的具体内容和授予的权利范围。 第三章合伙企业法 甲是有限合伙企业A的有限合伙人,只有当第三人有理由相信甲为普通合伙人并与其交易的,甲才对该交易承担无限连带责任。 按照《合伙企业法》第2条的规定,有限合伙人以其认缴的出资额为限对合伙企业债务承担责任,只有普通合伙人对合伙企业债务承担无限连带责任。但是,依据《合伙企业法》第76条的规定,如果第三人有理由相信有限合伙人为普通合伙人并与其交易的,该有限合伙人对该笔交易承担与普通合伙人同样的责任,即无限连带责任。本案例中,甲虽然是有限合伙人,但是在和丙的业务往来中,他多次代表合伙企业出面与丙进行洽谈,乙虽然对此知情,但是也没有予以制止。甲以有限合伙名义与丙签订协议,应该认为丙有理由相信甲为普通合伙人并与其交易。因此,丙有权要求甲对该交易承担清偿责任,甲应该与乙一样承担无限连带责任。 第四章公司法 答:股东乙可以通过股东派生诉讼追究甲的责任。按照我国《公司法》第152条的规定,董事、监事、高级管理人员执行公司职务时违反法律、行政法规或者公司章程的规定,给公司造成损失,而公司不起诉或者怠于起诉时,符合法定条件的股东可以以自己名义向人民法院提起诉讼。 (1)甲应该对公司承担损害赔偿责任。该案例中,甲是公司的总经理,是公司的高级管理人员。他将其获得的商业信息交给了其弟弟,而没有为公司所用,属于抢夺了公司的商业机会。后又利用职权,使公司高价从其弟弟手中购得零件。如果公司直接购买该零件,可以少花费10万元钱,因此,甲违反了《公司法》第149条第5款不得利用职务便利为自己或者他人谋取属于公司的商业机会的规定,给公司造成了10万元的损失,应该按照《公司法》第150条的规定对公司承担损害赔偿责任。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

相关文档
最新文档