《类与对象》课后习题(含答案)

合集下载

C++第三章课后答案

C++第三章课后答案

C++第三章课后答案C++第三章习题及答案1、什么是结构化程序设计?它有什么优缺点?所谓结构化程序设计,是一种自顶而下、逐步求精的模块化程序设计方法。

2、什么是对象?什么是类?简述对象与类之间的关系!对象是系统中用来描述客观事物的一个实体,它是用于构成系统的一个基本单位,而系统可以看作是由一系列相互作用的对象组成。

类定义了同类对象的公共属性和行为,属性用数据结构表示,行为用函数表示!《类=数据结构+对数据进行操作的函数》。

对象和类的关系相当于元素和集合的关系、变量和变量的“数据类型”的关系。

从程序设计的角度来说,类是一种复杂的自定义数据类型,对象是属于这种数据类型的变量。

3、什么是面向对象程序设计?面向对象程序设计方法具有哪些基本特征?请比较面向对象程序设计和面向对象过程程序设计有何异同?4、何谓成员变量?何谓成员函数?C++将对象的属性抽象为数据成员,将对象的行为抽象为成员函数。

5、C++中结构和类之间有何异同?结构在默认情况下的成员是公共的,而类在默认情况下的成员是私有的。

在C++中,结构是特殊的类。

6、在C++中如何定义类?如何实现定义的类?如何利用类申明对象?7、类的成员的访问权限有哪几种?请说明它们分别有什么作用?三种,privte:类的私有成员,只能被本类的成员函数访问或调用。

Public:公有成员,可以被本类的成员或其他类的成员函数(通过对象)访问或调用。

Protected:保护成员,可以被本类的成员函数或派生类的成员函数访问或调用。

8、何谓构造函数?何谓析构函数?请说明它们分别有什么作用?构造函数:不需要用户程序调用,就能在创建对象时由系统自动调用,其作用是在对象被创建时利用初始值去构造对象,使得在声明对象时就能自动完成对象的初始化。

析构函数:在对象的生存周期即将结束时由系统自动调用的,其作用是用来在对象被删除前做一些清理工作和数据保存工作。

9、如何定义一个内联成员函数?内联函:内联函数必须是和函数体申明在一起,才有效。

UML课后习题答案

UML课后习题答案

UML课后习题答案UML习题答案第⼀章⾯向对象设计与UML1.填空题(1)基本构造块UML规则公共机制(2)名字属性操作(3)封装继承多态(4)继承(5)瀑布模型喷泉模型基于组件的开发模型XP开发模型2. 选择题(1)C(2)A B C D(3)A B C D(4)A B C(5)A3.简答题(1)类是具有相同或相似结构、操作和约束规则的对象组成的集合,⽽对象是某⼀类的具体化实例,每⼀个类都是具有某些共同特征的对象的抽象。

类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,⽽对⼀类对象的抽象就是类.类描述了⼀组有相同特性和相同⾏为的对象。

(2)1.UML是⼀种语⾔。

2. UML是⽤来建模的。

3.UML是统⼀的标准。

(3)建模能够帮助我们按照实际情况或按我们需要的形式对系统进⾏可视化;提供⼀种详细说明系统的结构或⾏为的⽅法;给出⼀个指导系统构造的模板;对我们所做出的决策进⾏⽂档化。

在建模时应遵循以下原则:选择要创建什么模型对如何动⼿解决问题和如何形成解决⽅案有着意义深远的影响;每⼀种模型可以在不同的精度级别上表⽰;最好的模型是与现实相联系的;单个模型不充分;对每个重要的系统最好⽤⼀组⼏乎独⽴的模型去处理。

(4)UML和⾯向对象软件开发之间有紧密的关系,可以说是⾯向对象软件开发促使了UML 的产⽣。

但是由于在UML标准化的过程中,吸收了业务建模、⼯作流建模和数据库建模等领域的标准规范,形成了适应性很强的标准。

(5)在软件设计过程中,使⽤UML建模是为了能够更好地理解正在开发的系统。

通过UML 建模,可以达到以下⽬的:有助于按照实际情况或按照所需要的样式对系统进⾏可视化;能够规约系统的结构或⾏为;给出了指导构造系统的模板;对做出的决策进⾏⽂档化。

第⼆章UML通⽤知识点综述1.填空题(1)依赖泛化关联实现(2)视图图模型元素(3)实现视图部署视图(4)构造型标记值约束(5)规格说明修饰通⽤划分2. 选择题(2)C(3)A(4)A B(5)D3.简答题(1)在UML中,定义了四种基本的⾯向对象的事物,分别是结构事物、⾏为事物、分组事物和注释事物等。

类与对象习题

类与对象习题

类与对象习题类与对象选择题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 )。

选择题(类与对象)

选择题(类与对象)

1:下列有关类的说法不正确的是()。

A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。

2:下面()项是对构造函数和析构函数的正确定义。

A.void X::X(), void X::~X()B.X::X(参数), X::~X()C.X::X(参数), X::~X(参数)D.void X::X(参数), void X::~X(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。

3:()的功能是对象进行初始化。

A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数答案:C分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;4:下列表达方式正确的是()。

A.class P{ B. class P{public: public:int x=15; int x;void show(){cout<<x;} void show(){cout<<x;}}; }C. class P{ D. class P{int f; public:}; int a;f=25; void Seta (int x) {a=x;}答案:D分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。

5:拷贝构造函数具有的下列特点中,()是错误的。

A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B.拷贝构造函数只有一个参数,并且是该类对象的引用C.拷贝构造函数是一种成员函数D.拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。

实验5 类和对象1答案

实验5 类和对象1答案

实验5:Java类与对象一、实验目的(1)使用类来封装对象的属性和功能;(2)掌握Java类的定义。

(3)java对象的使用二、实验任务(1)按要求编写一个Java程序。

(2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。

三、实验内容1.编写一个Java程序片断,以定义一个表示学生的类Student。

这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。

2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。

编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。

class Student{long studentID;int classID;String name;String sex;int age;public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID;this.classID=classID;=name;this.sex=sex;this.age=age;}public long getStudentID(){return studentID;}public int getClassID(){return classID;}public String getName(){return name;}public String getSex(){return sex;}public int getAge(){return age;}public String toString(){return "学号:"+getStudentID()+"\n班号:"+getClassID()+"\n姓名:"+getName()+"\n性别:"+getSex()+"\n年龄:"+getAge();}}public class StudentDemo{public static void main(String[] args){Student s1=new Student(90221,2,"Tom","male",20);System.out.println(s1.toString());}}运行结果:学号:90221班号:2姓名:Tom性别:male年龄:202.程序填空,程序中包含以下内容:一个学生类(Student),包含:属性:学号s_No,姓名s_Name,性别s_Sex,年龄s_Age。

《JAVA》11类与对象

《JAVA》11类与对象
心坐标和半径后,程序能够判断这两个圆是否
是相交圆。
Point.java
演示
Retangle3.java 演示
实例数据域与静态数据域的区别是:
实例数据域属于特定的对象,一个类 可
以使用new运算符创建很多对象,每个 对
象独立拥有自己的实例数据域。本例无 论创
建多少个矩形对象,每个对象都独立 拥有自
己的实例数据域width和height。
实例数据域与静态数据域的区别是: 静态数据域是类拥有的,所有创建 的矩形对象以共享方式访问。本中的静
局部变量是指在类的方法中定义的变量,不能使
用访问修饰符限制作用域,其作用域为定义变量
的语句开始到该语句所属的语句块的右大括号。
类的数据域在类内部的作用域与访问修饰符无关,无论在 类的任何位置定义数据域,其作用域均为整个类范围,见图
(a)。一个特殊情况是某数据域的初始化时使用了另一个数据
域,此时被使用的数据域必须定义在前面,如图 (b)所示。
public class TestPackage {
void printMessage(){ System.out.println("Welcome to java."); } }
使用包管理应用程序的类时,如果两个 类不在同一包中,有两种方式: 第一种方式是使用类的命名。 如: javax.Swing.JOptionPane 第二种方式是使用import语句导入类。
public void set属性名(数据类型 形参){…}
特别地,数据类型为boolean时,访问器方法定 义为如下形式: public 数据类型 is属性名(){…} 方法定义中数据类型通常为所封装的数据域的类 型,访问器方法的代码直接返回数据域的值,修改器 方法的代码直接把形参赋值给数据域。 Retangle2.java

【习题】类与对象(2)

【习题】类与对象(2)

类和对象(2)【实验目的】:1. 掌握类的构造函数和析构函数的使用方法。

2. 掌握类的拷贝构造函数的使用方法。

【实验内容】:1.读以下程序,为下列程序添加注释,并给出程序运行结果。

并解释为什么得到这样的结果。

上机验证你的结果是否正确。

2. 完成下列要求。

1) 读以下程序,为下列程序添加注释,并给出程序运行结果。

并解释为什么得到这样的结果。

上机验证你的结果是否正确。

2) 将Coordinate 类中带有两个参数的构造函数进行修改,在函数体内添加下述语句:cout << “Constructor is called.\n “; 写出程序的运行结果,并解释输出的结果。

3) 按下列要求进行调试:在主函数体内,添加下述语句:Coordinate p4;Coordinate p5(2); 调试程序时会出现什么错误?为什么?如何对已有的构造函数进行适当的修改?4) 经过以上2)和3)步的修改后,结合运行结果分析:创建不同的对象时会调用不同的构造函数。

□Bine 1 udr< i n>・ t 「•豪 nAUflnf Z ・M!|J*(^ 3.(4; Ma 名% DiDniiriitft^tr<public:CDftrdinatfflnlr wl.iftt ・1)>7尸诵魯;詐杠话巧筑X-K.1 ir/; mot << "C-anWriiirtBr i<; callf i d An*1; 、Coord indtc (O OHHTI I imitvCi p) M"托口 构這函魏^Cwr Ji Mt« <) {eflirt <C C r struct or is c »llea\n ,,s}//折玛=比 int Get X( ){r&itur«i u; } lnt GrlYOi 『@f ii y ;y privet*:int » P V P :>sCeinriiinLdi-r;: Coo r flin^i t p( £n<i r rf i n-a t F fi p)*K S P-M ;FP-JI*£0Lkit<C"C*py -irdtiall 足Nt:左MI 3r )Et 『■亡>t<j 『 Is called^n^stfet FldtAf) {CQOTdlMtf p 12沁屛"谓用 穽蚩些1电世文PV21& coardln^if ”"":"弔1裤11|用想1构令1音餐P#聊刊 EDWdinatv ■$-從討忌二疣轴角將良呜造盛竅 Cuurdlndlt! >;Covrdin.ilr 闷7*的;M 丘ff if ■—介/■■-歆卜咗1洁> 牌 cout^C k |ii-(*<<p3 .G ^IX()«*• ,*«JK 3-fi&tV<<«) Vn B,; 亍ct.ru3. 假使在程序中已经声明了类point ,并建立了其对象 pl 和p4。

计算机软件技术基础教程(第二版)习题及答案

计算机软件技术基础教程(第二版)习题及答案

第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。

2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。

3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。

4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。

1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。

2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。

1)软件规模越来越大,结构越来越复杂。

2)软件开发管理困难而复杂。

3)软件开发费用不断增加。

4)软件开发技术落后。

5)生产方式落后。

6)开发工具落后,生产率提高缓慢。

3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。

2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。

可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题一:程序执行结果是
问题二:本程序中,y、z 是 class Test{ public: static int Data; }; int Test::Data=100; //A void main(void) { Test t1,t2; t1.Data=200; t2.Data=300; //B //C
2、写出程序的输出结果。 #include <iostream> #include <cstring> using namespace std; class SomeClass { int One , Two; public: SomeClass(int a = 1, int b = 1) { One = a; Two = b; cout << "Structor" << endl; } SomeClass(SomeClass &obj) { { cout<<NumA<<'\t'<<"is Destructor."<<endl; } }; int main() { MyTestClass Myclass1(5), Myclass2.Print(); return 0; } 程序的运行结果为: Myclass2(Myclass1);
,第二行是
A.show( ); } 15 10 三、程序填空题
B.show( );
1、完成如下的类,在横线中填写合适的内容。 #include <iostream> #include <cstring> using namespace std; enum Esex{mid , man , woman};//枚举请自学 2.7 class Person { int Num; //编号 char Name[12]; //姓名 Esex Sex; //性别 float Weight; //体重 public: Person(int , char * , Esex , float); Person(); ~Person() {} void PrintInfo(); int Workdays(); }; Person::Person( { Num = id; int id ,char *name , Esex s , float w)
A类
的对象,它们的访问权属于
私有
5、分析下面程序,写出程序的运行结果。
cout<<"t1.Data="<<t1.Data<<'\n'; cout<<"t2.Data="<<t2.Data<<'\n'; cout<<"Test::Data="<<Test::Data<<'\n'; }
6、分析下面程序,写出程序的运行结果。 #include<iostream.h> class Test{ static int x,y; public: Test(int a=2,int b=4){x+=a;y+=b;} void show(){cout<<"x="<<x<<"\ty="<<y<<'\n';} }; int Test::x=5; int Test::y=10; void main() { Test a1(100,200),a2; a1.show(); a2.show(); //A
8、下列程序的输出结果第一行是 class S{ int n; public: S(int i){n=i;} operator++( ){n+=10;} operator++(int){n+=5;} void show( ){cout<<n<<endl;} }; void main(void) { S A(5), B(5); ++A; B++;
A.类与对象没有区别 B.要为类和对象分配存储空间 C.对象是类的实例,为对象分配存储空间而不为类分配存储空间 D.类是对象的实例,为类分配存储空间而不为对象分配存储空间 5、在 C++中,数据封装要解决的问题是 A.数据的规范化 B.便于数据转换 C.避免数据丢失 D
D.防止不同模块之间数据的非法访问 C
B. a 和 b 必须为对象 D. a 和 b 均可为整数或实数
C

A.使基类公有成员在子类中可以被访问。 B.this 指针必须写成显式的。 C.this 指针总指向要调用的其成员函数的对象。 D.静态成员函数也存在 this 指针 二、程序阅读题 1、#include<iostream> using namespace std; class MyTestClass { private: int NumA; public: MyTestClass(int a) { cout<<a<<'\t'<<"is Constructor."<<endl; NumA=a; } MyTestClass(MyTestClass &b) { cout<<"Copy Constructor."<<endl; NumA=b.NumA; } void Print() { cout<<"The private data is: NumA="<<NumA<<endl; }
A. a 必须为对象,b 可为整数或实数 C. b 必须为对象,a 可为整数或实数 9、若有类定义 class Term{ …… public: int addterm(); }; 作用域运算符::正确使用的是 A.int Term::addterm(){……} B.int ::Termaddterm(){……} C.int Termaddterm()::{……} D.int Termaddterm:: (){……} 10、以下关于 this 指针描述正确的是 A
《类与对象》习题
学号 一、选择题
姓名
1、下列关于成员函数特性的描述中, A.成员函数可以重载 B.成员函数一定为内联函数 C.成员函数可以是静态的 D.成员函数可以设置参数的默认值
B
是不正确的。
2、有关类的说法不正确的是 C A.类是一种用户自定义的数据类型 B.只有类中的成员函数才能直接存取本类中的私有数据 C.类的构造函数与析构函数均可以重载 D.类的成员函数可以是重载函数,或者是有缺省参数的函数 3、关于默认构造函数的说法,下面哪个是错误的 C A.系统自动产生的构造函数为默认构造函数 B.不接受任何参数的构造函数为默认构造函数 C.当用户没有定义默认构造函数,编译器就自动提供默认构造函数 D.用户可以自己定义默认构造函数 4、下列有关类和对象的说法中,正确的是 C
3、写出程序的输出结果 #include <iostream> using namespace std; class Coord { private: int x,y; public: Coord(int i = 0 , int j = 0) { x = i; y = j; } void Print() { cout << "x=" << x << ",y=" << y << endl; } friend Coord operator++(Coord op); }; Coord operator++(Coord op) { ++op.x;
Two = obj.Two; cout << "Copy Structor" << endl; } void show() { cout << "One=" << One << ';' << "Two=" << Two << '\n'; } SomeClass operator^(SomeClass c) { SomeClass Temp(One - c.One , Two * c.Two); return Temp; } ~SomeClass() { }; int main() { SomeClass obj1,obj2(9 , 4); obj2 = obj2 ^ obj1; obj2.show(); cin.get(); return 0; } cout << "Destructor" << endl;}
++op.y; return op; } int main() { Coord obj1(1 , 2) , obj2; obj1.Print(); ++obj1; obj2 = ++obj1; obj1.Print(); obj2.Print(); cin.get(); return 0; }
4、写出程序的输出结果 class A { public: A(int a) { x=a; cout<<"x="<<x<<'\t'<<"class_A"<<'\n'; } ~A() { cout<<"class_~A"<<'\n'; } private: int x; }; class B { A y,z; int s; public: B(int a,int b,int c): y(a+b+c),z(3-a) { s=c-b; cout<<"s="<<s<<'\t'<<"class_B"<<'\n'; } ~B() { cout<<"class_~B"<<'\n'; } }; void main(void) { B s(1,2,3); }
相关文档
最新文档