第7 类与对象部分习题 - noanswer
对象图试题及答案

对象图试题及答案1. 什么是对象图?对象图是UML(统一建模语言)中的一种图,用于展示系统中对象的静态结构。
它描述了对象的实例以及对象之间的关系。
2. 对象图和类图有什么区别?对象图是类图的实例,展示了系统中对象的实例以及它们之间的关系。
而类图则描述了系统中的类以及类之间的关系。
3. 对象图中通常包含哪些元素?对象图中通常包含以下元素:- 对象:用矩形表示,矩形内包含对象的名称和属性值。
- 关系:用线连接对象,表示对象之间的关系。
- 消息:用带箭头的线表示对象之间的交互。
4. 如何在对象图中表示关联关系?关联关系在对象图中用一条线表示,线的两端分别连接着相关的对象。
5. 对象图中的聚合关系如何表示?聚合关系在对象图中用一条带有空心菱形的线表示,菱形位于聚合的端。
6. 组合关系在对象图中如何表示?组合关系在对象图中用一条带有实心菱形的线表示,菱形位于组合的端。
7. 在对象图中如何表示继承关系?继承关系在对象图中用一条带有空心箭头的线表示,箭头指向基类。
8. 对象图中的依赖关系如何表示?依赖关系在对象图中用一条虚线表示,线的一端连接着依赖的对象。
9. 请描述一个简单的对象图示例。
假设有一个银行系统,其中包含客户和账户两个类。
客户类有一个属性是账户,表示客户拥有的账户。
对象图可以表示为:- 客户对象A,属性值包括姓名和账户。
- 账户对象B,属性值包括账户号码和余额。
- 客户对象A和账户对象B之间存在一个关联关系。
10. 在对象图中,如何表示一个对象的创建?对象的创建在对象图中用一条带有实心圆点的线表示,圆点位于创建的对象端。
11. 对象图可以用于哪些场景?对象图可以用于以下场景:- 展示系统的一个特定时刻的状态。
- 展示系统在特定操作过程中的状态。
- 展示系统在特定条件下的状态。
12. 对象图在软件开发中的作用是什么?对象图在软件开发中的作用包括:- 帮助开发者理解系统的静态结构。
- 辅助开发者设计和实现系统。
JAVA类与对象及数组习题及答案

V JA VA A 类和对象及数组习题类和对象及数组习题一、选择题一、选择题(1)下列构造方法的调用方式中,正确的是()下列构造方法的调用方式中,正确的是(D )--原因:在通过new 实例化一个类对象时系统会自动调用该类相应的构造方法。
A .按照一般方法调用.按照一般方法调用B .由用户直接调用.由用户直接调用C .只能通过new 自动调用自动调用D .被系统调用.被系统调用(2)在Java 中,能实现多重继承效果的方式是(中,能实现多重继承效果的方式是(C )--原因:一个类可以同时实现多个接口。
Java 接口反映了对象较高层次的抽象,还弥补了Java 只支持单继承的不足,可用它来完成多继承的一些功能。
A .内部类.内部类B .适配器.适配器C .接口.接口D .同步.同步(3)int 型public 成员变量MAX_LENGTH ,该值保持为常数100,则定义这个变量的语句是( D )—原因:java 中定义常量用关键字final 来定义。
A .public int MAX_LENGTH=100B .final int MAX_LENGTH=100C .public const int MAX_LENGTH=100D .public final int MAX_LENGTH=100 (4)下列叙述中,正确的是(A )—原因:Java 严格区分大小写,所以变量number 与Number 不相同;Java 中的注释方式除了“//”行注释之外还有段注释“/*-------*/”和文档注释/**-------*/。
Java 源文件中的public 类只能有一个。
A. 声明变量时必须指定一个类型B. Java 认为变量number 与Number 相同相同C. Java 中唯一的注释方式是"//"D. 源文件中public 类可以有0或多个或多个(5)下列叙述中,错误的是( D)—原因:子类继承父类,并且可以有自己的成员变量和成员方法。
类与对象习题

类与对象习题类与对象选择题5.若有以下说明,在类外使用对象objX成员的正确语句是( c )。
class X{ int a;void fun1();public:void fun2();};X objX ;(a) objX.a=0; (b) objX.fun1(); (c) objX.fun2(); (d) X::fun1(); 6.若有以下说明,对n的正确访问语句是( b )。
class Y{ //…… ;public:static int n;};int Y::n;Y objY;(a) n=1; (b) Y::n=1; (c) objY::n=1; (d) Y->n9.若有以下类T说明,函数fFriend的错误定义是( c )。
class T{ int i;friend void fFriend(T&,int) ;};(a) void fFriend(T &objT,int k) { objT.i = k; }(b) void fFriend(T &objT,int k) { k = objT.i; }(c) void T::fFriend(T &objT,int k) { k += objT.i; }(d) void fFriend(T &objT,int k) { objT.i += k; }10.在类定义的外部,可以被访问的成员有( c )。
(a) 所有类成员(b) private或protected的类成员(c) public的类成员(d) public或private的类成员12.说明一个类的对象时,系统自动调用( b );撤消对象时,系统自动调用( c )。
1(a) 成员函数(b) 构造函数(c) 析构函数(d) 友员函数13.下面对构造函数的不正确描述是( b )。
(a) 系统提供默认的构造函数(b) 构造函数可以有参数,所以也可以有返回值(c) 构造函数可以重载(d) 构造函数可以设置默认参数14.下面对析构函数的正确描述是( c )。
C++习题七课后答案

习题7解答注:如有错误,请谅解!1、填空题(1)私有成员(2)构造函数(3)private(4)公有成员函数的集合(5)公有成员(6)友元(7)类的静态成员(8)this(9)new(10)非const 成员函数(11)构造(12)const char * const(13)AB(AB& X)(14)—>(15)生存期结束程序运行结束时(16)析构函数2、选择题(1)A (2)B (3)C(4)B(5)B(6)B(7)B(8)A(9)A(10)B(11)C(12)B(13)C(14)D(15)A(16)D(17)D(18)A(19)B(20)D(21)B(22)B(23)C(24)D(25)A(26)B(27)A(28)B(29)C(30)D(31)B(32)B (33)D3、简答题(1)类和数据类型有何关联?答:类相当于一种包含函数的自定义数据类型,它不占内存空间,是一个抽象的“虚”体,使用已定义的类建立对象就像用数据类型定义变量一样。
对象建立后,对象占据内存,变成了一个“实”体。
类与对象的关系就像数据类型与变量的关系一样。
其实,一个变量就是一个简单的不含成员函数的数据对象。
(2)类和对象的内存分配关系如何?答:为节省内存,编译器在创建对象时,只为各对象分配用于保存各对象数据成员初始化的值,并不为各对象的成员函数分配单独的内存空间,而是共享类的成员函数定义,即类中成员函数的定义为该类的所有对象所共享,这是C++编译器创建对象的一种方法,在实际应用中,我们仍要将对象理解为由数据成员和函数成员两部分组成。
(3)什么是浅拷贝?什么是深拷贝?二者有何异同?答:构造函数用于建立对象时给对象赋初值以初始化新建立的对象。
如果有一个现存的对象,在建立新对象时希望利用现存对象作为新对象的初值,即用一个已存在的对象去初始化一个新建立的对象。
C++提供的拷贝构造函数用于在建立新对象时将已存在对象的数据成员值复制给新对象,以初始化新对象。
对象基础题答案.doc

二、选择题 1 2 3 B B A
4 D
5 B
6 B
7 A
8 C
9 A
10 11 12 13 14 15 16 17 18 19 20 A D B B C D B D C B C
三、思考题 1. ToolTipText 2. AddItem 3. 0~List1.ListCount-1 4. 设置列表框的 MultiSelect 属性为 1 或 2 5. 判断各项的 Selected 属性是否为 True 6. 增加 SmallChange 7. Sorted 属性值为 True 时,列表框各项目按字母顺序从小到大排序,反之,不进行排序 8. Height 为窗体作为控件的实际高度、而 ScaleHeight 是窗体作为容器时,其内部垂直度 量的单位数 9. 复制、粘贴;或将控件改为同名 10. SaveExit 11. 先剪切,再选中框架,然后粘贴 12. “工具|选项|”命令中“通用”选项卡,将“对齐到网格”的√去掉
面向对象基础知识题参考答案
一、判断题 1 2 3 √ √ √ 21 22 23 √ √ × 41 42 43 × × × 61 62 63 √ √ √ 81 82 83 √ × × 101 102 103 × × × 121 122 123 × √ √ 141 142 143 √ × × 4 √ 24 √ 44 √ 64 √ 84 × 104 √ 124 √ 5 √ 25 √ 45 √ 65 × 85 × 105 √ 125 × 6 √ 26 √ 46 √ 66 √ 86 √ 106 × 126 × 7 √ 27 √ 47 √ 67 √ 87 √ 107 √ 127 √ 8 √ 28 × 48 √ 68 √ 88 √ 108 √ 128 √ 9 × 29 √ 49 × 69 × 89 √ 109 × 129 √ 10 √ 30 √ 50 √ 70 √ 90 √ 110 √ 130 × 11 √ 31 √ 51 √ 71 √ 91 √ 111 × 131 × 12 × 32 × 52 √ 72 × 92 × 112 × 132 √ 13 × 33 × 53 × 73 √ 93 √ 113 √ 133 √ 14 √ 34 √ 54 √ 74 × 94 √ 114 × 134 √ 15 × 35 × 55 × 75 × 95 × 115 × 135 × 16 × 36 × 56 √ 76 √ 96 √ 116 × 136 √ 17 √ 37 × 57 × 77 × 97 √ 117 √ 137 √ 18 √ 38 √ 58 √ 78 √ 98 √ 118 √ 138 √ 19 √ 39 × 59 × 79 × 99 √ 119 × 139 × 20 × 40 × 60 × 80 √ 100 √ 120 × 140 √
第7章 类与对象思考与练习题答案

第7章类与对象1、什么叫面向对象的程序设计语言?什么叫类?什么叫对象?什么叫消息?答:在程序设计语言中,面向对象是指采用抽象、封装、继承、多态等程序设计的方法。
因此,具有抽象、封装、继承、多态等特性的编程语言称为面向对象的程序设计语言。
类实际上是一种抽象的数据类型,它将完成某特定功能所用到的数据和对数据的操作(即函数)封装在一起。
对象是指具有某些属性和功能的单个个体。
消息是对象之间相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格说明。
2、结构化程序设计方法存在什么问题?答:结构化程序设计方法主要存在以下问题:1)软件重用性差:重用性是指同一软件不经修改或稍加修改就可多次重复使用的性质。
软件重用性是软件工程追求的目标之一。
2)软件可维护性差:软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。
在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。
实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。
3)开发出的软件不能满足用户需要:用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。
3、什么叫抽象?什么叫分类?答:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。
抽象是形成概念的必须手段。
分类就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。
4、请简述结构体、联合体和类三种类类型的异同点。
答:三种类类型的异同点见下列表格:struct结构体类型和class类类型都可以封装数据和操作,具有派生性、隐藏性和多态性。
而联合体不具有派生性,但具有隐藏性和多态性。
5、什么叫根类?答:根类是没有从其它类派生而创建的类类型。
实际上,根据class类类型定义的一般形式,[:<基类型列表>]是一个可缺省的项;如缺省将定义一个根类。
项目七 课后练习参考答案

一、判断题
√√×××
二、问答题
1、k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。
c++面向对象课后答案第7章

1.概念填空题C++最重要的特性之一就是代码重用,为了实现代码重用,代码必须具有通用性°通用代码需要不受数据类型的影响,并且可以自动适应数据类型的变化。
这种程序设计类型称为参数化程序设计。
模板是C++支持参数化程序设计的工具,通过它可以实现参数化_务态性性。
函数模板的立义形式是template <模板参数表〉返回类型函数轻(形式参数表){-}»其中,<模板参数表〉中参数可以有 _个,用逗号分开。
模板参数主要是模板类型参数c它代表一种类型,由关键字typename 或class后加一个标识符构成,标识符代表一个潜在的内苣或用户左义的类型参数。
类型参数由可以是任意合法标识符。
C++规定参数名必须在函数泄义中至少出现一次。
编译器通过如下匹配规则确泄调用那一个函数:首先,寻找最符合函数名和参数类型的一般函数,若找到则调用该函数:否则寻找一个函数模板,将英实例化成一个模板函生,看是否匹配,如果匹配,就调用该模板函数:再则,通过一类型转换规则进行参数的匹配。
如果还没有找到匹配的函数则调用错误。
如果有多于一个函数匹配,则调用产生一•义性,也将产生错误。
类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任童类型(包括系统预定类型和用户自怎义的类型)。
类是对一组对象的公共性质的抽象,而类模板则是对不同类的数据类型的抽象,因此类模板是属于更髙层次的抽象。
由于类模板需要一种或多种类型参数,所以类模板也常常称为参数化类。
2.简答题简述函数模板生成函数的过程。
简述类模板生成对象的过程。
简述函数模板与模板函数、类模板与模板类的区别。
3.选择题关于函数模板,描述错误的是(A )。
A.函数模板必须由程序员实例化为可执行的函数模板B.函数模板的实例化由编译器实现C.一个类定义中,只要有一个函数模板,则这个类是类模板D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化下列的模板说明中,正确的是(D )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.3构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月请用枚举类型,并完成测试。(包括用成员函数和用普通函数)
4.4设计并测试一个矩形类(Rectangle),属性为矩形的左下与右上角的坐标,矩形水平放置。操作为计算矩形周长与面积。测试包括用成员函数和普通函数。
第四章类与对象习题
一.基本概念与基础知识自测题
4.1填空题
5.1.1引入类定义的关键字是(1)。类的成员函数通常指定为(2),类的数据成员通常指定为(3)。指定为(4)的类成员可以在类对象所在域中的任何位置访问它们。通常用类的(5)成员表示类的属性,用类的(6)成员表示案:
(1)参数
(2)返回值
(3)数组元素
(4)数组名本身
4.1.6构造函数的任务是(1)。构造函数无(2)。类中可以有(3)个构造函数,它们由(4)区分。如果类说明中没有给出构造函数,则C++编译器会(5)。拷贝构造函数的参数是(6),当程序没有给出复制构造函数时,系统会自动提供(7)支持,这样的复制构造函数中每个类成员(8)。
}
voidIntRMB::print(){
cout <<IYuan << "元" <<Jiao << "角" <<Fen <<"分" <<endl;
}
intmain(){
floata;
IntRMB Im(10,25,3);
cout << "***转换前***" <<endl;
答案:
(1)局部域(local scope)
(2)名字空间域(namespace scope)
(3)类域(class scope)
(4)局部域
(5)名字空间域
(6)namespace
(7)名字空间名
(8)可以直接被使用
(9)域
4.1.5引用通常用作函数的(1)和(2)。对数组只能引用(3)不能引用(4)。
4.2简答题
4.2.1简单解释什么是面向对象程序设计的封装性。
答:对象是一个封装体,在其中封装了该对象所具有的属性和操作。对象作为独立的基本单元,实现了将数据和数据处理相结合的思想。此外,封装特性还体现在可以限制对象中数据和操作的访问权限,从而将属性“隐藏”在对象内部,对外只呈现一定的外部特性和功能。
};
IntRMB::IntRMB(inty,intj,intf){//构造函数
IYuan=y;
Jiao=j;
Fen=f;
}
IntRMB::operatorfloat(){
floattemp;
temp=float(IYuan + (Jiao/10.0) + (Fen/100.0));
returntemp;
类名::operator转换后的数据类型(){…}
如:operator float()是转换为浮点数的成员函数。使用时的格式为:
float(对象名);或(float)对象名;
定义人民币类,数据成员包括:圆、角、分,均为整型。类型转换函数将人民币类强制转换为浮点数,以圆为单位。并编程进行检验。
解:本题的解答未考虑角、分最多为9。类型强制转换的两种格式编程时毋需考虑,自动实现。
4.5定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。
4.6设计一个学校在册人员类(Person)。数据成员包括:身份证号(IdPerson),姓名(Name),性别(Sex),生日(Birthday)和家庭住址(HomeAddress)。成员函数包括人员信息的录入和显示。还包括构造函数与拷贝构造函数。设计一个合适的初始值。
4.2.12类的静态数据成员与函数中的静态成员有何异同?
答:类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中,为该类所有对象公用。函数中的静态变量也位于公用内存中,不随函数调用而重新分配,所以总是保留上次进入并执行该函数后留下的信息。
4.2.13 C++中结构、联合与类三者间有何异同?
4.2.4什么叫类域?为什么说类域是抽象的?
答:类域是类体所包括的范围。每个类定义都引入了一个独立的类域,在类域中说明的标识符仅在该类的类域中有效。由于类只是一个说明,看上去有数据,有函数,有类型定义,但是它并非实体,不分配内存,当然也不能运行。所以说类域是抽象的。
4.2.5引用作为函数参数时为什么能实现两个实参之间的数据交换?为什么对应实参不能为引用?为什么返回值为引用的函数可以作为左值?
答:引用变量是其关联变量的别名,二者在内存中占据同一个存储单元。在一个以引用作为参数的函数中,交换两个参数的值,实际上就是交换两个实参的值。如果函数的参数是引用,调用时需要取得实参的地址,而实参如果已经是一个地址,再进行引用将产生错误,故对应实参不能为引用。
函数返回引用实际是指明(返回)了相应的关联变量,所以声明返回值为引用的函数实际上是将关联变量作为左值参与运算。
4.2.14对象的第一特征是封装,那么由对象组成的面向对象的程序怎样建立各对象之间的有效联系?面向对象程序的组织与面向过程有什么不同?
答:因为对象的操作主要用来响应外来消息并为其他对象提供服务,所以面向对象的程序利用消息传递机制来建立各对象之间的有效联系,协调各对象的运行。一个对象可以向其他对象发送消息以请求服务,也可以响应其他对象传来的消息,完成自身固有的某些操作,从而服务于其他对象。
答案:
(1)初始化数据成员
(2)函数返回类型说明
(3)多
(4)不同的参数表
(5)自动给出一个默认的构造函数
(6)同一类对象的引用
(7)默认的的复制构造函,称为默认的按成员语义支持。
(8)被依次复制
4.1.7一个类有(1)个析构函数。(2)时,系统会自动调用析构函数。
答案:
(1)一
(2)对象注销时
4.1.8运算符重载时,其函数名由(1)构成。成员函数重载双目运算符时,左操作数是(2),右操作数是(3)。
答:在C++中结构(structure)与类几乎是完全一样的类型,差别仅仅在于缺省情况下结构的成员为公有的。联合(union)是C++的导出数据类型,在语法与功能上类似于结构,二者的区别是:结构变量的各成员同时被分配了各自独立的内存区,而联合变量的各个成员的存储开始地址都相同,所以在任一时刻联合变量只能存储一个成员。
封装性增加了对象的独立性,C++通过建立数据类型——类,来支持封装和数据隐藏。一个定义完好的类一旦建立,就可看成完全的封装体,作为一个整体单元使用,用户不需要知道这个类是如何工作的,而只需要知道如何使用就行。另一方面,封装增加了数据的可靠性,保护类中的数据不被类以外的程序随意使用。这两个优点十分有利于程序的调试和维护。
答:
(1)用类的一个对象去初始化该类的另一个对象时使用。
(2)当函数的形参是类的对象,调用函数时,进行形参与实参结合时使用。
(3)当函数的返回值是类对象,函数执行结束返回调用者时使用。
4.2.8写出含有对象成员的类的构造函数的格式,并做简单说明。
答:C++中对含对象成员的类对象的构造函数有固定的格式:
4.2.3为什么说类与对象的概念是客观世界的反映?
答:客观世界的事物都具有某些属性和行为(或操作),具有相同属性和行为的事物可以归属于一类,用分类的方法可以提高认识事物的效率。C++中定义的类则是通过抽象的方法将某一类事物共有的静态特征(属性)和动态特征(行为)概括出来并加以描述,而对象是类的具体实现,所以说类与对象的概念是客观世界的反映。
类名::构造函数名(参数总表):对象成员1(参数名表1),对象成员2(参数名表2),……对象成员n(参数名表n){……}
冒号后用逗号隔开的是要初始化的对象成员,附在后面的参数名表1,…,参数名表n依次为调用相应对象成员所属的构造函数时的实参表。这些表中的参数通常来自冒号前的参数总表,但没有类型名。
4.2.9所有类对象未重载的赋值运算符“=”是怎样工作的?为什么它可以进行连续赋值?
#include<iostream>
usingnamespacestd;
classIntRMB{//人民币类
private:
intIYuan;
intJiao;
intFen;
public:
IntRMB(inty=0,intj=0,intf=0);//构造函数
voidprint();//数据输出函数
operatorfloat();//浮点数类型转换函数
面向过程的程序是模块化的,模块的组织具有分层结构特点,层与层之间是调用关系。面向对象程序是由一个个封装的对象组成,而对象是由紧密结合在一起的算法和数据结构组成。对象之间是相互请求和相互协作的关系。
4.2.16类的成员函数在什么情况下应该定义为私有的?这样做的目的是什么?
答:除接口函数和创建本类对象的构造函数和撤消该对象的析构函数外。其余成员函数应该定义为私有的,这是开发类时故意对外隐蔽起来的操作,而这些往往是最复杂最关键的部分。类中故意的隐藏也为以后的升级扩展留下了余地,只要接口不变,内部再变,也不必修改原来的程序,就象MFC(微软基础类)升级后,由MFC底层类所编的程序完全不必修改,自动升级。
答:对所有的类对象,未重载的赋值运算符“=”称作缺省的按成员拷贝赋值操作符,同类对象之间可以用“=”直接拷贝。因为缺省的赋值操作返回一个对象的引用,所以它可以进行连续赋值。