当前位置:文档之家› 面向对象程序设计教程 答案

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

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

面向对象程序设计教程(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++有两种注释符号,一种是//,另一种是/*……*/。

(3)使用C++风格的输入输出,在程序中必须包含头文件“iostream”。(4) cin是预定义的标准输入流对象,>>是输入操作符,也称提取运算符。(5) cout是预定义的标准输出流对象,<<是输出操作符,也称插入运算符。(6)指针的值是它所指向那个对象的地址值。指针的类型是它所指向对象的类型。指针的内容便是它所指向对象的值。

(7) C++使用运算符&来定义一个引用,对引用的存取都是对它所引用的对象的存取。

(8)当一个函数调用出现在函数定义之前时,必须先用函数原型对函数进行声明。

(9) C++有值传递和引用传递两种参数传递机制。

(10)使用关键字inline声明的函数称为内联函数。

(11)运算符new用于进行动态内存分配,运算符delete用于释放动态分配的内存。

(12)下面程序的输出结果为x=10,y=10;

x=100,y=100。

#include

using namespace std。

int main()

{

int x=10,&y=x。

cout<<"x="<

int *p=&y。

*p=100。

cout<<"x="<

return 0。

}

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

(1)在整型指针变量p2、p3的定义中,错误的是( A )。

A. 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=3.14,*pp=&xx;”,则*pp等价于( C )。

A. &xx

B. *xx

C. 3.14

D. 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的值。

【参考程序】

// xt2_1.cpp

#include

#include

using namespace std。

int main()

{

float x,y。

cout<<"please input 2 floats to x,y:"。

cin>>x>>y。

float z=pow(x,y)。

cout<<"pow("<

return 0。

}

【输出结果】

please input 2 floats to x,y:3.1 2

pow(3.1,2)=9.61

3

类与对象

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

第3章

类与对象

一、填空题

(1)类定义中关键字private、public和protected以后的成员的访问权限分别是私有、公有和保护。如果没有使用关键字,则所有成员默认定义为private权限。具有public访问权限的数据成员才能被不属于该类的函数所直接访问。

(2)定义成员函数时,运算符“∷”是作用域运算符,“MyClass∷”用于表明其后的成员函数是在“MyClass类”中说明的。

(3)在程序运行时,通过为对象分配内存来创建对象。在创建对象时,使用类作为样板,故称对象为类的实例。

(4)假定Dc是一个类,则执行“Dc a[10],b(2)”语句时,系统自动调用该类构造函数的次数为11。

【结果分析】

创建10个数组元素需调用构造函数10次,创建对象b需调用构造函数1次,所以系统自动调用该类构造函数的总次数为11。

(5)对于任意一个类,析构函数的个数最多为1个。

(6) delete运算符通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

(7) C++程序的内存格局通常分为4个区:数据区、代码区、栈区和堆区。

(8)数据定义为全局变量,破坏了数据的封装性;较好的解决办法是将所要共享的数据定义为类的静态成员。

(9)静态数据成员和静态成员函数可由任意访问权限许可的函数访问。(10)友元函数和友元类统称为友元。

(11)友元的正确使用能提高程序的效率,但破坏了类的封装性和数据的隐蔽性。

(12)若需要把一个类A定义为一个类B的友元类,则应在类B的定义中加入一条语句: friend class A;。

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

(1)以下不属于类访问权限的是( B )。

A. public

B. static

C. protected

D. 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)将例3.10中的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。

第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(){

面向对象程序设计课程设计

《面向对象程序设计》课程设计 课程代码:*****(采用现行5位数字的课程代码) 课程名称:面向对象程序设计课程设计 设计周数:1周 学分:0.5学分 课程类别:必修课 一、课程设计的目的与任务 面向对象程序设计课程设计是计算机科学与技术、网络工程、信息管理与信息系统等专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。通过课程设计,学生可以将本课程所学知识点融会贯通,举一反三,加深实践与理解,提高学生综合运用所学知识的能力;另一方面,在参与一系列子项目的实践过程中,能使学生获得相关项目管理和团队合作等众多方面的实践经验。其目的在于加深对面向对象程序设计理论和基本知识的理解,通过对所选项目的分析、程序算法的设计、运行与调试过程的分析,使学生掌握基本的信息系统分析方法、设计方法和上机操作的各种技巧,对培养学生的逻辑思维能力、团队合作精神、创新能力、动手操作能力各方面素质有提供了良好的实践平台,为后续课程的学习打下一定的基础。 二、本课程设计的基本理论 本课程设计使用面向对象程序设计的方法解决实际问题,涵概了课程的所有重要知识点,如类与对象、继承与组合、虚函数与多态性等。 三、课程设计的形式与基本要求 形式:召开课程设计动员会,根据学生的学习水平和特长进行分组,每组选择指定课程设计的题目和内容。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成所选课题的设计,最后由指导教师进行验收及评定。 基本要求:要求学生做好预习,认真分析设计过程中涉及到的算法,并确定所选课题的功能模块,详细描述各模块的具体内容;用流程图描述实现算法,根据算法进行代码的编写,最后进行反复上机调试修改,直到输出正确结果为止。 认真写好课程设计报告,根据每组学生的分工,各自写出对解决问题的详细分析、模块功能、调试结果,最后将课程设计报告上交给指导教师。 四、课程设计的内容 选题一:员工管理信息系统 (1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。

新编经济法教程 孟凡麟 课后复习题完整答案

第一章 一单项选择题: 1—7。ACCDBAD 二多项选择题: 1、ABD 2、ABCD 3、ABCD 4、ABCD 5、BD 6、ABD 7、BCD 8、ABCD 9、ABCD 10、AB 11、CD 12. ACD 13ABD 14、A C 15、ABD 三判断题: 1、错 2、对 3、对 4、错 5、对 6、对 五案例分析题: 1.问: 上海有关部门在1998年初采取的涉案措施,基于政府干预市场经济的理论,该措施是否具有正当性?为什么? 上海有关部门为了控制私车的数量,实行私车额度拍卖制度是可以的,但制订的沪产车与其他车的政策不一样,则有违公平,是不正当的。后来取消了歧视性待遇,改变了地方保护主义的政策,才算是回归了政府的应有本性。 2.该房产份额转让协议,是否可以撤销? 法律中规定的可变更、可撤消的民事行为有五种:重大误解的民事行为;显失公平的民事行为;因欺诈而订立的不损害国家利益的合同;因胁迫而订立的不损害国家利益的合同;乘人之危而订立的合同。 “重大误解”是如何认定的?对于“重大误解”如何认定问题,根据最高人民法院关于贯彻执行(中华人民国民法通则)若干问题的意见第71条规定,是指行为人因对行为的性质、对方当事人、标的物的品种、质量、规格和数量等的错误认识,使行为的后果与自己的意思相悖,并造成较大损失的行为。 具体分析,重大误解的认定应包括以下几种情况:第一,对合同的性质产生误解。在对合同性质产生误解的情况下,当事人的权利义务将发生重大变化,

而且产生此种误解也完全违背了当事人在订约时所追求的目的,因此应作为重大误解。第二,对对方当事人产生误解。这种情况主要发生在一些基于当事人的信任关系和注重相对人的特定身份的合同中,如果对对方当事人产生误解,则应构成重大误解。第三、对标的物质量的误解。如果标的物的质量直接关系到当事人的订约目的或重大利益,则对质量产生的误解可以构成重大误解。第四、对标的物品种的误解。这实际上是对当事人权利义务的指向对象即标的本身产生了误解,应属于重大误解。第五、对价金和费用的误解。当然,并不是所有的重大误解都能导致撤销合同的法律后果。必须是对合同的主要容产生误解才能构成重大误解。若仅仅是对合同的非主要条款产生误解且不影响当事人的权利义务,就不应作为重大误解。 徐女士所卖房屋的价值为117654.64元,而代某与其签订的协议中载明的价值仅为4.4万元,加上当处理丧事的客观情况,故可以认定徐女士在签订协议时产生了重大误解而予以撤消。 第二章 一单项选择题 1、A 2、B 3、C 4、D 5、B 6、A 7、C 8、D 9、B 10、C 二多项选择题1、D 2、ACD 3、ABC 4、BC 5、AB 6、ABCD 7、ABCD 8、BCD 9、ACD 10、BCD 四案例分析题 1、(1)甲以A企业的名义与B公司签订的买卖合同有效。根据《合伙企业法》的规定,合伙企业对合伙人执行合伙企业事务以及对外代表合伙企业

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

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

————————————————————————————————作者:————————————————————————————————日期: 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:"<

c面向对象课程设计报告

课程设计报告 课程名称面向对象程序设计 课题名称学生成绩管理系统 专业计算机科学与技术 班级计算机1001 学号2010030101 姓名 指导教师李珍辉陈淑红李杰军 2011年12 月28 日

湖南工程学院 课程设计任务书 课程名称面向对象程序设计 课题学生成绩管理系统 专业班级计算机1001 学生姓名 学号2010030101 指导老师李珍辉陈淑红李杰军 审批 任务书下达日期2011 年11 月15 日 任务完成日期2011 年12 月28 日

一、设计内容与设计要求 1.课程设计目的: 面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。 2.课题题目 1)公司库存管理系统 2)高校学籍管理系统 3)高校工资管理系统 4)高校人事管理系统 5)通讯录程序设计 6)学生成绩管理系统 7) 图书管理系统 8)文本编辑器的设计与实现 9)学生考勤管理系统 10)公司人员管理系统 3.设计要求: ⑴设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相 应题号的课题。随意换题者不记成绩。 ⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括 系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完 成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模 块图)。③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E -R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。④系 统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修 改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出 每一步的操作步骤。⑥关键源程序(带注释)

经济法课后练习题及答案

经济法课后练习题及答案 绪论一、判断题经济法学的发祥地是美国。B A.正确 B.错误 2.实质意义上的经济法普遍存在于市场经济国家。A A.正确 B.错误 3.经济法总论和经济法分论构成了经济法学体系。A A.正确B.错误4.博弈论的方法属于哲学方法。B A.正确B.错误 5.经济分析方法是研究经济法的重要方法。A A.正确B.错误 6.经济法是有关经济的法规的总称。B A.正确B.错误二、单选题 1.美国早期经济法立法的重要代表是。 A.自然法典 B.

公有法典C.谢尔曼法D.反不正当竞争法2.一般科学方法不包括。 A.比较方法B.系统方法C.哲学方法D.统计方法三、多选题9.经济法总论的内容包括。 A.价值论B.运行论C.本体论 D.规范论10.经济法的具体制度包括。 A.财政调控制度 B.金融调控制度 C.反垄断制度 D.反不正当竞争制度第一章经济法的概念和历史一、判断题 1.经济法的调整对象是特定的法律关系。B A.正确B.错误2.经济法是解决现代经济问题的现代法。A A.正确B.错误 3.经济法是调整调制关系的法律规范的总称。A A.正确B.错误 4.经济法

具有经济性、规制性和现代性。A A.正确 B.错误 5.经济法的产生是经济因素、政治因素、社会因素等多因素作用的结果。A A.正确B.错误6.市场经济需要国家干预。A A.正确B.错误7.自古就存在严格意义上的经济法。B A.正确B.错误二、单选题 1.经济法区别于传统法的重要特征是。 A.经济性B.规制性C.现代性 D.强制性2.世界上第一个以“经济法”命名的法规产生于。 A.美国 B.德国 C.法国 D.英国3.美国颁布的第一部经济法是。A.《谢尔曼法》 B.《煤炭经济法》 C.《国家工业复兴法》 D.《联邦贸易委员会法》

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

新编经济法教程 第一章经济法导论 、单项选择题 说明: 第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 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

《面向对象程序设计》实验指导书(实验二)

实验二类与对象㈡——对象初始化、对象数据与指针 一、实验目的 1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类; 2.理解this指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法; 3.熟悉类与对象的应用及编程。 二、实验学时 课内实验:2课时课外练习:2课时 三本实验涉及的新知识 ㈠构造函数与析构函数 在C++中,提供了两个特殊的成员函数,即构造函数和析构函数。 构造函数用于对象的初始化,即在定义一个类对象时,计算机在给对象分配相应的存储单元的同时,为对象的数据成员赋初值。 析构执行的是与构造函数相反的操作,用于撤销对象的同时释放对象所占用的内存空间。 1.构造函数 ⑴构造函数的定义 格式: 类名(形参表) { 构造函数体} ⑵构造函数的调用 构造函数的调用是在定义对象时调用的。 格式:类名对象名(实参表); 类名对象名=构造函数名(实参表); ⑶说明 ①构造函数必须与类同名。 ②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。 ③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。 ④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。 ⑤不能象普通成员函数一样单独调用。 2.析构函数 ⑴析构函数的定义 格式: ~类名(void) { 析构函数体} ⑵析构函数的调用 析构函数是在撤销对象时自动调用的。 ⑶说明

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

面向对象程序设计教程(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.设计题目 (1) 2.设计目的和内容 (1) 2.1设计目的 (1) 2.2设计内容 (1) 3.基本功能描述 (1) 4.设计思路 (1) 5.软件设计 (2) 5.1设计步骤 (2) 5.2界面设计 (3) 5.3关键功能的实现 (3) 5.3.1添加记录 (3) 5.3.2删除记录 (4) 5.3.3选中记录 (4) 5.3.4确认修改 (4) 5.3.5保存记录 (4) 5.3.6退出 (4) 6.结论与心得体会 (4) 7.参考文献 (4) 8.附录 (5) 8.1调试报告及测试结果 (5)

8.2关键源代码 (10) 8.2.1 Student类 (10) 8.2.2全局 (10) 8.2.3List Control初始化 (10) 8.2.4添加记录 (11) 8.2.5删除记录 (11) 8.2.6选中记录 (12) 8.2.7修改记录 (12) 8.2.8保存记录 (13) 8.2.9退出程序 (13)

1.设计题目 同学通讯录管理程序 2.设计目的和内容 2.1设计目的 1)学习Visual C++的MFC开发程序的步骤。. 2)综合运用所学的类、继承和多态的知识。 3)进一步掌握程序的调试方法。 2.2设计内容 1)利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件; 2)设计通讯录的数据结构(如:以数组或者动态链表)和相应的类; 3)完成对通讯录中记录的增加、修改、删除和显示; 4)将通讯录存入文本文件。 3.基本功能描述 可以实现学生信息(姓名、学号、系别、邮箱、电话)的添加、显示、选中修改、删除选中和保存并退出程序的功能。 4.设计思路 1)创建基于对话框的MFC应用程序,添加控件:5个Edit Control、6个Button、1 个List Control; 2)在5个Edit Control分别输入相应信息,点击“添加记录”Button可在List Control 中显示相应信息,同时清空五个Edit Control以便下一个学生信息的输入; 3)点中List Control选中已有一组学生信息,点击“删除记录”Button可删除该组 信息; 4)点中List Control选中已有一组学生信息,点击“选择该列”Button将该列信息 返回到5个Edit Control。修改完成后点击“确认修改”Button,对List Control 中选中列完成修改; 5)点击“确认保存”将信息保存到文本文档; 6)点击“退出”退出程序。 7)可在D盘查看保存的信息。

武汉大学出版社-经济法第七版课后思考题答案

第一章法调整经济关系的一般理论 1.简述物权和债权的主要区别 ①物权是直接支配权,不需要积极的义务主体。 债权是请求权,有特定的积极的义务主体 ②物权是排他权,物权独一无二在同一物上,同一物上不能有诶容互不相容的物权。 债权不具有排他性,同一物上可以有内容互不相容的多个债权。 ③物权的客体主要是物。物权是对所享有的权利。包括不动产和动产。 债权的客体是行为——给付 ④物权是法定权,有法律规定 债权可因法产生,也可因当事人约定产生 ⑤物权是优先权,物权优于一般债权。 2.简述相邻关系与地役权的主要区别 ①相邻关系产生具有无偿性,而地役权的设立一般是有偿的 ②设立方式不同:相邻关系是法定的且不需要通过登记程序:而地役权通常是由当事人通过合同约定设立 ③相邻关系不是一项民主权利,而地役权是一种用益物权。(物权的一种)

3.简述一般侵权行为与违约行为的主要区别 1.违约行为的基础是合同的存在,而侵权行为事先并不需要合同。 2.违约行为侵犯的是合同当事人对合同的预期利益,一般是财产利益; 侵权行为侵犯的既有可能是对方财产权也有可能是人身权。 3.违约行为承担的责任后果仅限于财产侵害赔偿 侵权行为的责任后果既包括财产侵害赔偿,也包括精神损害赔偿 4.违约责任是合同责任,诉讼时效2年;侵权责任的诉讼时效是自当事人知道侵权事由起的一年内。而根据产品质量法不合格产品致人损害的诉讼时效为两年 5.侵犯的权利不同:侵权行为所侵犯的是绝对物权 违约行为所侵犯的是一种相对权 6.承担的责任不同:侵权——民事责任 违约——违约责任 4.简述现代法律综合调整模式与古代法律综合调整模式的本质区别 现代综合调整模式是建立在高度社会化的生产力和发达的现代市场经济基础上的更高级

经济法教程复习提纲

经济法教程复习提纲 第一章经济法概论 一、现代意义上的“经济法”一词的由来, 二、经济法的产生背景和大致过程, 三、我国经济法的概念和调整对象 (一)我国经济法的调整对象 经济协调论 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

《面向对象程序设计cpp》课程设计指导书

《面向对象程序设计》课程设计指导书

一、课程设计目的 通过本课程设计,培养上机动手能力,使学生巩固《面向对象程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力,闯过编程关。 二、课程设计题目 0、人事管理系统 1、物业管理系统 2、客房管理系统 3、学生管理系统 4、民航订票系统 5、商场销售管理系统 6、通讯录 7、图书馆管理系统 8、商场(工厂)库存管理系统 9、“一二九”合唱评委打分系统 学生课设选题根据学号的尾数确定。(例学号为17号的学生做7号题目) 三、课程设计任务 1、任务:在两周内独立正确完成至少1道题目。 2、学生完成课设后,向指导老师提出答辩申请。答辩时要检查的内容为: (1) 课程设计纸质文档; (2) 课程设计源代码及其运行结果; (3) 老师提出相关问题,学生对问题进行作答。 3、时间: 指导:第十六,十七周。 答辩时间:第十七周 四、课程设计考核方式 课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序及课程设计考勤登记表,其中平时成绩占总成绩的30%。

优(90分以上):按要求完成,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好,能很好的回答老师所提出的问题; 良(80 - 90分):按要求完成,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进,能较好的回答老师所提出的问题; 中(70 - 80分):按要求完成,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确,能基本回答老师所提出的问题; 及格(60 - 70分):按要求完成,有完整的符合标准的文档,有基本实现设计方案的软件,但不能完全运行,设计方案基本正确,不能完全回答老师所提出的问题; 不及格(60分以下):不能完成程序,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确,不能回答老师所提出的问题。 五、提交的资料 1、软件 软件需提供源程序,并能正常运行。 注:对于程序中未能实现的部分需要加以说明。 对于程序中所参考的部分代码需要加以声明,并说明出处。 2、文档 (1)设计文档的格式尽量按照《中华人民共和国国家标准UDC 681. 3计算机软件产品开发文件编制指南GB 8567-88》的标准书写。 (2)内容(以下仅提供参考) 1、需求分析; 2、类设计及说明; 3、定义的函数主要功能说明; 4、主要算法说明:举例说明1、2个比较有特点的算法; 5、系统总框图; 6、存在的问题与不足及对策;

《经济法教程》作业题及参考答案.

本文由【中文word文档库】https://www.doczj.com/doc/399906014.html,搜集整理。中文word文档库免费提供海量教学资料、行业资料、范文模板、应用文书、考试学习和社 会经济等word文档 《经济法教程》作业题及参考答案 一、作业题 第一单元 一、单项选择题 1.经济法的调整对象是() A.平等主体之间的财产关系 B.平等主体之间的人身关系 C.国家协调本国经济运行过程中发生的经济关系 D.经济犯罪行为的制裁 2.反不正当竞争法属于经济法体系中的() A.企业组织管理法 B.宏观调控法 C.市场规制法 3.经济权利与经济义务属于经济法律关系的() A.主体 B.内容 C.客体 D.行为 4.经济法对产业结构、税收行为等进行调整所形成的法律关系是 () A.宏观调控法律关系 B.市场规制法律关系 C.市场流转法律关系 D.市场交易法律关系 5.下列关于公司的分类,哪一种是以公司的信用基础为标准的分类?() A.总公司与分公司

B.母公司与子公司 C.人合公司和资合公司 D.本国公司、外国公司与跨国公司 6.王某与李某依照分司法规定,各出资人民币50万元(其中王某的出资包括专利技术出资)在青岛成立甲公司,公司章程规定各方以该出资对公司债务负责。后甲公司又在青岛注册成立了二家分公司。根据公司分类的原理,甲公司应属于下列哪一选项的公司?() A.母公司和股份有限公司 B.母公司和有限责任公司 C.本公司和股份有限公司 D.本公司和有限责任公司 7.上述甲公司已设定注册资本为100万,王某以其专利技术出资,至少要补出价值多少的现金或实物?() A.30万元现金或等值的实物 B.25万元现金或等值的实物 C.80万元现金或等值的实物 D.无需补出任何现金或实物 8.有限责任公司股东人数最高为() A.20人 B.30人 C.40人 D.50人 9.我国公司法规定,有限责任公司董事会成员为() A.3至10人 B.3至13人 C.5至10人 D.5至13人 10.合伙企业是典型的() A.人合企业 B.资合企业 C.企业法人 D.公司企业 二、多项选择题 1.经济法律关系的构成要素有() A.主体 B.内容 C.责任 D.客体 2.经济法的体系包括() A.企业组织管理法 B.宏观调控法 C.市场规制法 D.劳动法、社会保障法 3.我国有限责任公司的设立应当符合下列哪些条件?()

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

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

相关主题
文本预览
相关文档 最新文档