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

合集下载

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. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。

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

C++程序设计(第二版吴乃陵况迎辉)答案——第四章

C++程序设计(第二版吴乃陵况迎辉)答案——第四章
(4) 函数来访问(读和写)。这些函数统称为
和 (3) (5) 。
。私有数据通常由
答案: (1) public(公有的) (2) private(私有的) (3) protected(保护的) (4) 公有的成员函数 (5) 类的接口 4.1.3 通常在逻辑上,同一类的每个对象都有 (1) 代码区,用以存储成员函数。而
(4) 中,全局域被包括在 (5) 中。using 指示符以关键字 using 开头,后面是 关键字 (6) ,最后是 (7) 。这样表示以后在该名字空间中所有成员都 (8) 。如不使用 using 指示符则在使用时要加::,称为 (9) 运算符。
答案: (1) 局部域(local scope) (2) 名字空间域(namespace scope) (3) 类域(class scope) (4) 局部域 (5) 名字空间域 (6) namespace (7) 名字空间名
第四章 类与对象习题
3
封装性增加了对象的独立性,C++通过建立数据类型——类,来支持封装和数据隐藏。 一个定义完好的类一旦建立,就可看成完全的封装体,作为一个整体单元使用,用户不需要 知道这个类是如何工作的,而只需要知道如何使用就行。另一方面,封装增加了数据的可靠 性,保护类中的数据不被类以外的程序随意使用。这两个优点十分有利于程序的调试和维护。
4.2.14 对象的第一特征是封装,那么由对象组成的面向对象的程序怎样建立各对象之间的 有效联系?面向对象程序的组织与面向过程有什么不同? 答:因为对象的操作主要用来响应外来消息并为其他对象提供服务,所以面向对象的程序利 用消息传递机制来建立各对象之间的有效联系,协调各对象的运行。一个对象可以向其他对 象发送消息以请求服务,也可以响应其他对象传来的消息,完成自身固有的某些操作,从而 服务于其他对象。

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

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

1.一台自动售货机能提供 6 种不同的饮料,售货机上有 6 个不同的按钮,分别对应这 6 种不同的饮料,顾客通过这些按钮选择不同的饮料。售货机有一个硬币槽和找零槽,分别 用来收钱和找钱。现在为这个系统设计一个用例图?
选择饮料
投币
顾客
找零
2.现有一个产品销售系统,其总体需求如下: 系统允许管理员生成存货清单报告。 管理员可以更新存货清单。 销售员记录正常的销售情况。 交易可以使用信用卡或支标,系统需要对其进行验证。 每次交易后都需要更新存货清单。 分析其总体需求,并绘制出其用例图?
EmptyOrder ValidOrder Canclled
Processing Processed
其中,后两个类是 Student 类的子类。 (2)为“在校生可以是助教的一种”建立模型,即建立 UnderGraduate 类的另一个超
类 Tutor。 (3)通过创建从 Tutor 到 Student 的关联(名为 tutors),建立一名助教指导一名学生的
模型。 (4)将“教师和教授属于不同级别的教员”建模为 3 个类:Instructor、Teacher 和 Professor,
13.显示9.可显4.显选示示的服请取务求款类密金型码额
输入设备
2.接收 IC卡
6.传送密码 11.传送取款请求
15.传送金额
38..查查12询询.查密服询码务取类款型金额
77..21..确验16认证.修密密改码码账合号法金性额 客户管理
显示屏
事务管理 点钞机
第 7 章 时序图
2.为下面打印文件时的系统交互建模时序图。添加时间约束后的各工作过程如下: 用户通过计算机指定要打印的文件,系统反映时间 1s。 打印服务器根据打印机是否空闲,操作打印机打印文件。 如果打印机空闲,则打印机打印文件; 如果打印机忙,则将打印消息存放在队列中等待,打印消息等待 120s 后,如果未

面向对象技术高级教程习题课

面向对象技术高级教程习题课
用况描述示例:供货员供货
打开货柜
在商品更换表中登记更换的商品名称和数量并 更换商品
在商品补充表中登记补充的商品名称和数量并 补充商品
关闭货柜
2021/3/27
14
第二次作业 类图
2021/3/27
15
第1题:论述类与对象之间的关系以及关联与链之间的关系。 这四者之间还有什么关系吗?
参考答案
8
第2题:论述用况图在面向对象方法中的地位
参考答案
用况图用于在需求分析阶段建立需求模型 用况图对系统的功能及与系统进行交互的外部
事物建模。使得用户能够理解未来的系统,开 发者也能够正确地理解需求并实现系统。 用况图有助于系统开发参与者在需求的理解上 达到一致。 用况图是进行OOA的第一步工作,对OOD阶段 的人机交互设计和系统测试也非常重要。
2021/3/27
9
第2题:论述用况图在面向对象方法中的地位
作业情况
论述不清晰 用况图的作用不明确 用况图的地位不清楚,以“重要”来敷衍 没有找到关键点
2021/3/27
10
第3题: 通常情况下,自动售货机会按用户的要求进行自动 售货,供货员会巡查并向自动售货机供货,取款员会定时取 款。请针对上述要求建立用况图,并描述各个用况。
面向对象技术高级教程 习题课
何慧虹 2010-6-17
2021/3/27
1
作业提交情况
第一次
00648246、00648168
第二次
00748198、 00648168 、 00748285、00746143、
第三次
00748285、00648168、00748198、PN092040、 00746143
对象是系统中用来描述客观事物的一个实体, 它是构成系统的一个基本单位,由一组属性和施 加于这组属性的一组操作构成。

(完整word版)UML面向对象分析与设计教程课后习题答案(胡荷芬高斐)选择题部分

(完整word版)UML面向对象分析与设计教程课后习题答案(胡荷芬高斐)选择题部分

UML面向对象分析与设计教程课后习题答案选择题第一章(1) 对象程序的基本特征是(ABCD)A.抽象B.封装C.继承D。

多态(2)类包含的要素有(ABC)A.名字B。

属性 C.操作D。

编号(3)下列关于类与对象的关系说法不正确的是(A)A.有些对象是不能被抽象成类的B。

类给出了属于该类的全部对象的抽象定义C.类是对象集合的再抽象D.类是用来在内存中开辟一个数据区,存储新对象的属性(4)面向对象方法中的(C)机制给予子类可以自动的拥有(复制)父类全部属性和操作.A。

抽象B。

封装C。

继承D。

多态(5)建立对象的动态模型一般包含的步骤有(ABCD)A。

准备脚本B。

确定事件C.准备事件跟踪表D.构造状态图第二章⑴UML中的关系元素包括(ABCD).A.依赖B。

关联C.泛化D。

实现⑵在UML中,定义了面向对象的事物,这些事物分为(ABCD).。

A。

结构事物B。

行为事物C。

分组事物D.注释事物⑶UML中的图包括(ABC)。

A.用例图B。

类图C。

状态图D。

流程图⑷UML的视图不包括(BCD).A.用例视图B。

类视图C。

状态视图D。

物理视图⑸下面不属于UML中的静态视图的是(ABC).A. 状态图B.用例图C.对象图D. 类图第三章(1)下列说法正确的是(ACD)A.在用例视图下可以创建类图B.在逻辑视图下可以创建构件图C.在逻辑视图下可以创建包D.在构件视图下可以创建构件(2)在Rational Rose 的逻辑视图下可以创建(ABCD) A.类图 B.构件图C.包 D.活动图(3)Rational Rose 建模工具可以执行的任务有(ABCD) A.非一致性检查 B.生成C++语言代码C.报告功能 D.审查功能(4)Rational Rose 中支持的视图不包括(D)A.逻辑视图 B.构件视图C.部署视图D。

机构视图(5)在构建视图下的元素可以包括(ABC)A.构件 B.构件图C.包 D.类第四章(1)类中的方法的可见性包括(ABC)A.privateB.publicC.protectedD.abstract(2)下面属于UML中类元的类型的是(ABCD)A.类B.对象C.构件D.接口(3)类之间的关系包括(ABCD)A.泛化B.关联C.实现D.依赖(4)下列关于接口的关系说法正确的是(ABCD)?A.接口是一种特殊的类B.所有接口都是有构造型<<interface>〉的类C.一个类可以通过实现接口从而支持接口所指定的行为D.在程序运行的时候,其他对象可以不仅需要依赖与此接口,还需要知道该类对接口实现的其他信息(5)下列关于类方法的声明正确的是(AB)A.方法定义了类所许可的行为B.从一个类所创建的所有对象可以使用同一组属性和方法C.每个方法应该有一个参数D.如果在同一个类中定义了类似的操作,则他们的行为应该是类似的第五章1.在Rational Rose 2003中,支持(ABCD)的构造模型A。

《UML系统建模基础教程(第3版)》课后习题

《UML系统建模基础教程(第3版)》课后习题

《UML系统建模基础教程(第3版)》课后习题习题 1填空题:(1)______是⾯向对象技术领域内占主导地位的标准建模语⾔,它统⼀了过去相互独⽴的数⼗种⾯向对象的建模语⾔共同存在的局⾯,形成了⼀个统⼀的、公共的、具有⼴泛适⽤性的建模语⾔。

(2)类的定义要包含_____、_____、_____要素。

(3)⾯向对象程序的三⼤要素是_____、_____和_____。

(4)⾯向对象⽅法中的_____机制使⼦类可以⾃动地拥有(复制)⽗类全部属性和操作。

(5)⾯向对象⽅法中系统分析要确定地3个系统模型是_____、_____和_____。

选择题:(1)如果想对⼀个类的意义进⾏描述,那么应该采⽤_____。

A. 标记值B. 规格描述C. 注释D. 构造型(2)建⽴对象的动态模型的步骤有_____。

A. 准备脚本B. 确定事件C. 构造状态图D. 准备事件跟踪表(3)软件的开发模式有_____。

A. 瀑布模型B. XP开发模型C. 喷泉模型D. 构建开发模型(4)下列关于类与对象的关系说法正确的是_____。

A. 有些对象是不能被抽象成类的B. 类给出了属于该类的全部对象的抽象定义C. 类是对象集合的再抽象D. 类是⽤来在内存中开辟⼀个数据区,存储新对象的属性(5)_____模型的缺点是缺乏灵活性,特别是⽆法解决软件需求不明确或不准确的问题。

A. 瀑布模型B. 增量模型C. 原型模型D. 螺旋模型(1)UML(2)名字 属性 操作(3)封装 继承 多态(4)继承(5)对象模型 功能模型 动态模型选择题:(1)C(2)ABCD(3)ABCD(4)BCD(5)A习题 2填空题:(1)UML中主要包含4种关系,分别是_____、_____、_____、_____。

(2)从可视化的⾓度来对UML的概念和模型进⾏划分,可将UML的概念和模型划分为_____、_____、_____。

(3)物理视图包含两种视图,分别是_____、_____。

java类与对象练习题

java类与对象练习题

java类与对象练习题一、题目描述在学习Java类与对象的过程中,通过练习题可以更好地巩固所学知识。

本文将提供一些Java类与对象的练习题,帮助读者进一步理解和应用相关概念。

二、题目一:汽车类请设计一个名为"Car"的Java类,该类具有以下属性和方法:属性:- 品牌(brand):字符串类型- 颜色(color):字符串类型- 速度(speed):整数类型方法:- 启动(start):输出"Car is starting."- 加速(accelerate):将速度增加10,并输出"Speed increase 10."- 减速(decelerate):将速度减少5,并输出"Speed decrease 5."- 停止(stop):输出"Car is stopped."请在"Car"类的构造方法中初始化品牌、颜色和速度,并编写主程序测试该类。

三、题目二:手机类请设计一个名为"Phone"的Java类,该类具有以下属性和方法:属性:- 品牌(brand):字符串类型- 型号(model):字符串类型- 价格(price):浮点数类型方法:- 打电话(call):输入一个手机号码,输出"Calling xxx."(其中xxx是输入的手机号码)- 发短信(sendMessage):输入一个手机号码和短信内容,输出"Sending message to xxx: 【短信内容】."(其中xxx是输入的手机号码,【短信内容】是输入的短信内容)- 展示信息(display):输出手机的品牌、型号和价格请在"Phone"类的构造方法中初始化品牌、型号和价格,并编写主程序测试该类。

四、题目三:学生类请设计一个名为"Student"的Java类,该类具有以下属性和方法:属性:- 姓名(name):字符串类型- 学号(studentId):字符串类型- 年龄(age):整数类型- 成绩(score):浮点数类型方法:- 自我介绍(introduce):输出"大家好,我是XXX,今年YYY岁,学号为ZZZ,平时成绩优秀,希望与大家相处愉快!"(其中XXX为姓名,YYY为年龄,ZZZ为学号)- 考试成绩(exam):输入一个考试分数,将其赋值给成绩属性,并输出"我的考试分数是:XXX."(其中XXX为输入的考试分数)- 获奖(award):输入一个奖项名称,输出"恭喜我获得了XXX奖!"(其中XXX为输入的奖项名称)请在"Student"类的构造方法中初始化姓名、学号、年龄和成绩,并编写主程序测试该类。

C++程序设计(第二版_吴乃陵_况迎辉)课后答案

C++程序设计(第二版_吴乃陵_况迎辉)课后答案

第一章C++基础知识习题1第一章C++基础知识习题判断下列标识符的合法性。

sin book 5arry _name main$1 class_cpp a3 x*y my name答:合法的:sin book _name main class_cpp a3非法的:5arry $1 x*y my name假定有下列变量:int a=3,b=5,c=0;float x=,y=,z=;char ch1=’a’,ch2=’5’,ch3=’0’,ch4;求下列表达式的值,以及运算后表达式所涉及的各变量的值。

x+(int)y%a x=z*b++,b=b*x,b++ ch4=ch3-ch2+ch1int(y/z)+(int)y/(int)z !(a>b)&&c&&(x*=y)&&b++ch3||(b+=a*c)||c++ z=(a<<2)/(b>>1)答:x+(int)y%a 表达式值为:,运算后x、y、a的值不变,仍分别为、、3。

提示:运算时取出y变量的数值强制转化为整型数放入寄存器参加运算,但内存中y 本身的数值不变化。

只有赋值运算和自增、自减运算才改变变量本身的值x=z*b++,b=b*x,b++ 表达式值为:42,运算后x为,b为43。

提示:逗号表达式,依次运算,表达式的值是最后一次运算的值。

后++是变量先参加运算然后变量自身加1,所以第1步x等于*5,即,然后b增为6;第2步b赋值为42;第3步,表达式的值是上一步后b的值42,但随后b的值自增1,成为43。

ch4=ch3-ch2+ch1 表达式值为:’\\’,字符外斜杠。

运算后ch1、ch2、ch3值不变。

提示:字符型的变量实质是范围很小的整型量。

int(y/z)+(int)y/(int)z 表达式值为:13。

y和z自身的值不变。

提示:int(y/z)是完成实数除法后,商强制转化为整型,(int)y/(int)z则是数值先转换,完成的是整除。

C++程序设计与应用基础第二章 类和对象习题答案

C++程序设计与应用基础第二章 类和对象习题答案

C++程序设计与应用基础第二章类和对象习题答案1、请完成下列填空题1)在C语言中,编程的单位是___函数__:在C++语言中,编程的单位是____类__。

2)在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。

#include <iostream.h>class MyClass{pub1ic:——MyClass(int a){x=a;}//为x置值——int GetNum(){return x;} //取x值private:int x;};void main(){Myclass my(10);Cout<<my.GetNum()<<end;}3)在类中定义和实现的函数称为__内联函数_______。

4)对类中的成员函数和属性的访问是通过___public___、___protected___和___private___这3个关键字来控制的。

5) ___new___运算符对指定类型对象动态分配内存并返回该类型的__指针___。

6)假定用户没有给一个名为MyClass的类定义构造函数,则系统对其定义的默认构造函数形式为___MyClass()_____。

2、编程题1)定义一个复数类imaginary。

用友元函数实现该类的加、减、乘和除运算。

答案:class Imaginary{public:Imaginary(float a,float b);friend Imaginary Add(Imaginary& img1,Imaginary& img2);friend Imaginary Sub(Imaginary& img1,Imaginary& img2);friend Imaginary Mul(Imaginary& img1,Imaginary& img2);friend Imaginary Div(Imaginary& img1,Imaginary& img2);private:float x,y;};Imaginary::Imaginary(float a,float b){x=a;y=b;}Imaginary Add(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x+img2.x;b=img1.y+img2.y;return Imaginary(a,b);}Imaginary Sub(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x-img2.x;b=img1.y-img2.y;return Imaginary(a,b);}Imaginary Mul(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x*img2.x-img1.y*img2.y;b=img1.x*img2.y+img1.y*img2.x;return Imaginary(a,b);}Imaginary Div(Imaginary& img1,Imaginary& img2) {float a,b;if((img2.x*img2.x+img2.y*img2.y)!=0){a=(img1.x*img2.x+img1.y*img2.y)/(img2.x*img2.x+img2.y*img2.y); b=(img1.y*img2.x-img1.x*img2.y)/(img2.x*img2.x+img2.y*img2.y); return Imaginary(a,b);}elsereturn Imaginary(0.0,0.0);}2)定义类Rational。

  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); }
相关文档
最新文档