文档库 最新最全的文档下载
当前位置:文档库 › 面向对象_练习

面向对象_练习

面向对象_练习
面向对象_练习

课堂练习

一、填空题

1、对象是抽象的类,类的具体化就是()。

2、继承性是父类和子类之间()和消息的机制。

3、面向对象的设计的主要目标是提高生产效率,提高质量和提高()。

4、对象模型描述了系统的(),它是从客观世界实体的对象关系角度来描述,

表现了对象的相互关系。

5、面向对象技术中的“类”,是比较理想的()。

参考答案:1.对象2、共享数据结构3、可维护性4、静态结构

5、可重用软构件

二、判断题

1、继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种

关系。()

2、多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建

立通用软件,多态性和继承性相结合使软件具有更广泛的重用性和可扩充性。( )

3、面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。( )

4、面向对象的设计的主要目标是提高生产效率,提高质量和提高可维护性。()

5、对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,

它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。()参考答案:1、(×) 2、(×) 3、(√) 4、(√) 5、(√)

三、多项选择题

1、面向对象程序设计的基本机制()。

A) 继承B) 消息C) 方法D) 结构E)抽象

2、下列属于Coad方法中面向对象的分析模型的层次有()。

A) 主题层B) 对象层C) 应用层D) 接口层E)数据层

3、一个类属性依其特征划分,其类型有()。

A) 描述型B) 定义型C) 派生型D) 参考型E)应用型

4、在进行面向对象分析时,所采用的模型有()。

A) 对象模型B) 动态模型C) 静态模型D) 功能模型E)接口模型

5、状态是对象属性的值的一种抽象,它的性质有()。

A) 时间性B) 持续性C) 有序性D) 有穷性E)无序性

参考答案:1、ABC 2、AB 3、ABCD 4、ABD 5、AB 四、问答题

1、什么是面向对象方法学?它有哪些优点?

参考答案:

面向对象方法是一种运用对象、类、继承、封装、聚合、消息、多态等概念来构造系统的软件开发方法。

面向对象方法的优点是:符合人们习惯的思维方式、稳定性好、可重用性好、可维护性好、容易开发大型的软件产品。

2、什么是动态模型?建动态模型要用哪些图形符号?这些符号的含义是什么?

参考答案:

动态模型是表示系统和对象的行为,是对系统的动态进行可视化的、详述的构造和文档化,可以用自然语言和动态行为图来描述。动态模型对于开发交互式系统极为重要。它表示系统的瞬时的、行为化的控制性质,规定了对象模型中的对象的合法变化序列。

动态模型着重于系统的控制逻辑。所使用的图形符号有二种:一种是状态图,一种是事件追踪图。

其符号的含义是:

状态图表示需要考察的对象的动态行为。

事件追踪图则表示其运行规律和行为规则。

3、什么是UML语言?它有哪些特点?UML语言图形有哪些?

参考答案:

统一建模语言UML(Unified Modeling Language)是一种用于描述、构造可视化和文档软件系统的图形语言。

(1)统一标准

UML统一了Booch、OMT和OOSE等方法中的概念,吸取了面向对象技术领域中其他流派的长处。UML使用的符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,同时也添加了一些新的符号,提供了标准的面向对象模型元素的定义和表示法,并已经成为OMG的标准。

(2)面向对象

UML支持面向对象技术,并提供了一批基本的表示模型元素的符号和方法,简洁明了地表达了面向对象的各种概念和模型元素。

(3)可视化

UML是一种图形化语言,用UML表示的模型图形能清晰地表示系统的逻辑模型和实现模型,在每一个图形表示符号后面都有良好定义的语义。UML还提供了语言的扩展机制,用户可以根据需要增加定义自己的构造模型、标记值和约束等。它的

强大表达力使它可以用于各种复杂的软件系统的建模。

用例视图、逻辑视图、并发视图、组件视图、配置视图等。

4、用面向对象方法分析研究银行储蓄系统,画出对象建模模型。

参考答案:

银行储蓄系统的系统描述如下:顾客可以通过终端查询帐户信息,进行储蓄操作,上级接口用来建立和删除帐户信息,并对帐户信息进行维护。

首先找出系统中的用户,然后根据用户对系统功能的需求确定用例。由陈述可知,用户为顾客和上级接口,顾客的行为为储蓄,上级接口对帐户信息进行维护,据此可以画出如下的用例图:

对系统进行分析,可以得到如下对象:顾客,终端,帐户信息,上级接口。抽象为:customer, terminal,account info,upper interface四个类。

分析类之间的关联:顾客登录终端,两者是一对一的关系,查询帐户信息,进行存取操作;上级接口对账户信息进行建立和维护。

可得到如下的对象模型:

+1

5、为什么测试活动应该从面向对象分析和面向对象设计活动开始?

参考答案:

面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA

),面向对象设计(OOD),和面向对象编程(OOP)三个阶段。由于整个开发过程是围绕对象组成的,目的是保证分析工作中的消息不会丢失或改变,一次对于生命周期各个阶段的划分就不重要了、不明显了。针对这种开发模型,将软件测试融合到软件开发的各个阶段,结合传统的测试步骤的划分,把面向对象的软件测试也划分为:面向对象分析的测试,面向对象设计的测试,面向对象编程的测试,面向对象单元测试,面向对象集成测试,面向对象系统测试。由此可以看出,在面向对象技术中,测试过程融入了面向对象技术的全过程,所以测试活动应该从面向对象分析和面向对象设计活动就开始。

五、应用题

交通工具分为空中、陆地、水上交通工具,空中交通工具分为客机、货机、专用轻型机,陆地交通工具分为列车、汽车;列车又分为旅客列车、客运列车;

汽车又分为客车、货车;水上交通工具分为客轮、货轮、客货混合轮。请建立交通工具的对象模型。

参考答案:

[解答] 交通工具的对象模型如下图所示。

Java面向对象编程-练习题

1【练习题】类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 2【练习题】类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 3【练习题】类的成员变量与方法、构造方法 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 4【练习题】构造方法 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 5【练习题】构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年

面向对象专题练习

**专题5 面向对象 一、填空题 1.如果一个方法不返回任何值,则该方法的返回值类型为 void 。(//有无返回值的意义何在???) 2.如果子类中的某个方法名、返回值类型和_参数列表_____与父类中的某个方法完全一致,则称子类中的这个方法覆盖了父类的同名方法。 3.接口中所有的属性均为_public_、_final_____和_static__的,方法(public abstract ) 4.抽象方法是一种仅有方法声明,没有具体方法体和操作实现的方法,该方法必须在具体类之中定义。 5.在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。 6.一般Java程序的类主体由两部分组成:一部分是属性,另一部分是方法。 7.分别用 class 关键字来定义类,用 new 关键字来分配实例存储空间。8.当一个类的修饰符为 final 时,说明该类不能被继承,即不能有子类。9.在Java中,能实现多重继承效果的方式是接口。 二、选择题 1.方法内定义的变量(B)。 A.一定在方法内所有位置可见 B.可能在方法的局部位置可见(for循环)C.在方法外可以使用 D.在方法外可见 2.方法的形参()。 A.可以没有B.至少有一个 C.必须定义多个形参D.只能是简单变量 3.return语句()。 A.不能用来返回对象B.只可以返回数值 C.方法都必须含有D.一个方法中可以有多个(但是返

回只有一个) 4.main()方法的返回值类型是() A.boolean B.int C.void D.static 5.编译并运行下面的程序,运行结果是()。 public class A{ public static void main(String args[]){ A a=new A(); a.method(8); } void method(int i){ System.out.println(“int: ”+i); } void method(long i){ System.out.println(“long: ”+i); } A.程序可以编译运行,输出结果为:“int: 8” B.程序可以编译运行,输出结果为:“long: 8” C.程序有编译错误,因为两个method()方法必须定义为静态(static)的D.程序可以编译运行,但是没有输出 6.能作为类及其成员的修饰符是()。 A.interface B.class C.protected D.public 7.下列方法定义中,方法头不正确的是()。 A.public static x(double a){…} B.public static int x(double y){…} C.void x(double d){…} D.public int x(){…} 8.构造方法在()时被调用。 A.类定义时B.使用对象的变量时 C.调用对象方法时D.创建对象时 9.下列哪个类声明是正确的()。 A.public abstract class Car{…} B.abstract private move(){…} C.protected private number; D.abstract final class H1{…} 10.下列不属于面向对象程序设计的基本特征的是()。 A.抽象B.封装 C.继承D.静态 11.请看下面的程序段

面向对象程序设计的基本思想

课题:面向对象程序设计的基本思想 (一)教学设计思想与理论依据: 《算法与程序设计》模块的教学强调通过该模块的学习,学生应该体验客 观世界的计算机对象化表征和算法思维,掌握几种基本算法;能运用面向对 象的方法,设计解决简单问题的算法,并能初步使用一种面向对象的程序设 计语言,编制程序实现算法解决该问题。 (二)教学内容分析 教材以广东教育出版社出版的信息技术(选修一)《算法与程序设计》第五章第一节内容为结构框架,本节主要介绍面向对象思想产生的必然性和面向对象思想的机制,以及通过对同一个问题采取面向过程和面向对象两种不同思想解决的区别,让学生感受到面向对象程序设计的优越性。 (三)学生情况分析: 学生已学完教材前四章内容,基本掌握了传统的面向过程结构化程序设计方法,有一定的程序设计基础。 (四)教学策略与模式: 采用讲解、任务驱动、实践和学生自主学习相结合的教学方式 (五)教学资源: 硬件:多媒体电脑教室,投影仪,广播系统 软件:学生机安装vb6.0 (六)教学目标: 知识与技能 1.了解面向对象程序设计的基本思想和面向对象思想的由来,并能够举例说 明现实世界与面向对象系统之间的对应关系。 2.了解面向对象程序设计的优越性并初步理解其实现的机制。 过程与方法 经历分析、调试解决同一问题的两种不同实现思想的程序,初步理解面向对象程序设计的优势及面向过程程序设计的缺陷。 情感态度和价值观 (1)关注传统结构化程序设计存在的问题。 (2)产生学习面向对象程序设计技术的愿望。 (3)关注面向对象技术是当前程序设计的重要发展方向。 (七)重点难点 教学重点 (1)传统结构化程序设计存在的问题 (2)面向对象程序设计所具有的优点。 教学难点 (1)面向对象思想的产生。 (2)传统结构化程序设计与面向对象程序设计的基本点比较。 (3)实现面向对象程序设计的基本机制。 教学过程:

面向对象的设计方法与C++编程

北京邮电大学200X-200X学年第一学期 《面向对象的设计方法与C++编程》期末考试试卷+扩展+复习题 试题一:填空题(没空一分,共20分) 请在括号内填入你认为正确的内容。 1.软件工程是指导(计算机软件)开发和维护的(工程学科)。 2.应用软件工程方法开发软件系统的根本目的是为了改善下述四项软件品质因素: 提高所开发的软件系统的(效率); 降低所开发的软件系统的(成本); 改善所开发的软件系统的(质量); 缩短所开发的软件系统的(开发周期)。 3.抽象的对象模型由(属性)和(方法)两个部分构成。 4.一个消息必须具备的两个要素是(接受消息的对象标识)和(接受消息的对象的方 法标识)。 5.一个对象拥有另一个对象的(部分)或(全部)的属性和方法的关系则称为(继 承)关系。 6.失去(创建具体对象实例的(制造对象))能力的类成为抽象类。 7.一个类的属性不能出现对象拷贝则被称为(类属性)。 8.面向对象技术的三大特征是(封装)、(继承)和(多态)。 9.共生包容关系中的被包容类对象与包容类对象是(同时连带)生成的。 10.同时出现在两个具有关联关系的对象内的相同属性被称为(连接属性)。 课程复习--补充题: 1.软件的生存周期是一个软件产品从(定义)、(开发)、(使用)到(废弃)的时 间的总合。 2.C++语言中的静态成员函数是(类方法)的具体实现。 3.连接属性是(关联/链接)关系的两个对象内的属性。 4.边界类与(actor(角色))对呈一一对应关系。 5.复合聚合关系中的(聚合)类对象极其依赖(被聚合)类对象,在实现上往往具有 被同时(构造)的特征,因而具有极高的(耦合度)。 试题二:是非判断题(每题1分,共20分) 请在题后的括号内填入√(你认为正确时)或×(你认为错误时)。 1.消息必须含有返回信息。(错) 2.一个类必然具有生成对象的能力。(错)(抽象类不具备) 3.在包容关系中的被包容类也具有封装性。(对) 4.关联关系只是一个动作的抽象。(错) (表示两个类之间的联系,通过这种联系,一个类可以访问到另外一个类的属性和方法。) 5.一个类也可以接收消息。(对) 6.关联关系中的作用名标识了该关联关系的终点对象的恰当地位。(对)

Java面向对象习题

选择题 1、下列关于变量的叙述哪个是错的?() A. 实例变量是类的成员变量。 B. 在方法中定义的局部变量在该方法被执行时创建。 C. 实例变量用关键字static声明。 D. 局部变量在使用前必须被初始化。 2、在Java语言中,下列哪个包是编译器自动导入的?() A. java.applet B. https://www.wendangku.net/doc/6c6020459.html,ng C. java.io D. java.awt 3、当类的成员未用访问权限修饰符时,Java认为此成员的访问权限为()。 A. private B. protected C.friendly D.public 4、下面哪个关键字不是用来控制对类成员的访问的?() A. public B. protected C. default D. private 5、下面哪一个特性不是面向对象编程主要体现的()。 A. 封装性 B. 继承 C. 多态 D. 类 6、不允许作为类及类成员的访问控制符的是()。 A. public B. private C. static D. protected 7、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB 作为前缀就可以调用它,该方法头的形式为()。 A、static void method( ) B、public void method( ) C、final void method( ) D、abstract void method( ) 8、可以在下面代码段point x处写入的是?() //point x public class Interesting{ //do something } A. String str; B. static int PI=3.14; C. public class MyClass{//do other thing…} D. import java.awt.*; 9、下列关于变量的叙述哪个是错的?() A、实例变量是类的成员变量。 B、在方法中定义的局部变量在该方法被执行时创建。 C、实例变量用关键字static声明。 D、局部变量在使用前必须被初始化。 10、下列哪个类声明是正确的?() A、abstract final class HI{} B、abstract private move(){} C、protected private number; D、public abstract class Car{}

《面向对象程序设计》教学大纲资料

面向对象程序设计教学大纲西北民族大学数学与计算机科学学院 制定的时间:二〇一二年五月

面向对象程序设计教学大纲 一、课程基本资料 主讲教师:曹永春、蔡正琦、顿毅杰 主教材:《C++面向对象程序设计》中国铁道出版社,陈维兴、林小茶编著,第2版,2009 辅助教材: 1.《C++编程思想》机械工业出版社,美Bruce Eckel,Chuck Alliso著,刘宗田,袁兆山,潘秋菱等译; 第1版,2011年 2. 《C++程序设计教程》机械工业出版社,美H.M.Deitel P.J.deitel 薛万鹏等译,2000年 3.《C++程序设计语言》,机械工业出版社,美Bjarne Stroustrup 著,裘宗燕译,2005年 4.《C++面向对象程序设计习题解析与上机指导》清华大学出版社,陈维兴主编,第2版,2009年 实验教材及参考书: 同上 课程性质:学科选修课 学分:4分 课时:72学时,其中理论课54学时,上机实验18学时 先修课程:计算机导论、C语言程序设计 课程结构:多媒体教学,课堂讨论、课内实验、课后作业 评价方案:(考核依据、评分的办法、权重的分布) ?平时成绩:10% 课堂表现(课堂提问、考勤、作业等) ?实验成绩:20%(实验报告、实验考试)

?期中成绩:20%(闭卷考试) .期末成绩:50%(闭卷考试) 参考书目: 名称编著者出版社出版年月《C++编程思想》刘宗田,袁兆山,潘 机械工业出版社2011年 秋菱等译 机械工业出版社2000年 《C++程序设计教程》H.M.Deitel, P.J.deitel 著,薛万鹏等译 《C++程序设计语言》Bjarne Stroustrup 机械工业出版社2005年 著,裘宗燕译 陈维兴主编清华大学出版社2009年 《C++面向对象程序设计 习题解析与上机指导》 推荐刊物: 1、《计算机学报》 2.《软件学报》 3.《程序员杂志》 4.《码农周刊》 5.《快乐码农》 相关网站: 1. 中国计算机学会https://www.wendangku.net/doc/6c6020459.html,/sites/ccf/ 2. 计算机爱好者协会https://www.wendangku.net/doc/6c6020459.html,/forum.php 3.C语言中文网https://www.wendangku.net/doc/6c6020459.html,/cpp 5.中国悠悠期刊网https://www.wendangku.net/doc/6c6020459.html,/ 6. 中国知网https://www.wendangku.net/doc/6c6020459.html,/ 文献 1.谭浩强.C程序设计.第4版.北京:清华大学出版社,2010

面向对象的三个基本特征讲解

面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程(OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类

都可以继承Person 类。但是Leg 类却不能继承Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字Interface 而不是Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 概念讲解 泛化(Generalization)

Java面向对象练习经典题

JA V A程序作业题 1、设计一个包含多个构造函数的类,并分别用这些构造函数实例化对象。 2、编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。 3、建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。 4、编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。 5. 编写一个控制台应用程序,定义一个类MyClass,类中包含有public、private以及protected数据成员及方法。然后定义一个从MyClass类继承的类MyMain,将Main方法放在MyMain中,在Main方法中创建MyClass类的一个对象,并分别访问类中的数据成员及方法。要求注明在试图访问所有类成员时哪些语句会产生编译错误。 7.创建一个类包含有protected数据。在相同的文件里创建第二个类,用一个方法操纵第一个类里的protected数据 9 编写一个控制台应用程序,完成下列功能,并回答提出的问题。 1) 创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。 2) 从A继承一个名为C的新类,并在C内创建一个成员变量B。不要为C创建构造函数。 3) 在Main方法中创建类C的一个对象,写出运行程序后输出的结果。 4) 如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么? 10 编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。 1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。 2) 再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。 3) 在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。 11. 创建一个类,它存储一个int数据成员MyNumber,并给该数据成员创建属性,当该数据成员被存储时,将其乘以100;当其被读取时,将其除以100。 12. 定义一个车辆(Vehicle)基类,具有Run、Stop等方法,具有Speed(速度)、MaxSpeed (最大速度)、Weight(重量)等字段。然后以该类为基类,派生出bicycle、car等类。并编

面向对象程序设计教程 (马石安版)

第 1 章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题(1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为:程序=对象+消息在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。 (3) 结构化程序设计方法中,把数据结构和算法分离为相互独立的实体。在面向对象程序设计中,数据结构和算法是封装在一起,结合成一个独立的单位,即对象,并尽可能隐蔽对象的内部细节。对象的私有属性只能由这个对象的行为来读取和修改,与外部的联系通过公有行为充当外部接口。 第 2 章习题答案

《面向对象》练习题.

一、单项选择题 1. 类的构造函数被自动调用执行的情况是在定义该类的() A. 成员函数时 B. 数据成员时 C. 对象时 D. 友元函数时 2. 假定一个类的构造函数为“A(int i=4, int j=0) {a=i;b=j;}”, 则执行“A x (1);”语句后,x.a和x.b的值分别为() A. 1和0 B. 1和4 C. 4和0 D. 4和1 3. 所谓多态性是指() A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数 C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象 4. 构造函数不具备的特征是() A. 构造函数的函数名与类名相同 B. 构造函数可以重载 C. 构造函数可以设置默认参数 D. 构造函数必须指定类型说明 5. 在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限() A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 6. C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是() A. 增加了一些新的运算符 B. 允许函数重载,并允许设置缺省参数 C. 规定函数说明符必须用原型 D. 引进了类和对象的概念 7. 在类中说明的成员可以使用关键字的是() A. public B. extern C. cpu D. register

8. C++语言中所有在函数中定义的变量,连同形式参数,都属于() A. 全局变量 B. 局部变量 C. 静态变量 D. 函数 9. 在私有继承的情况下,基类成员在派生类中的访问权限() A. 受限制 B. 保持不变 C. 为共有 D. 为保护 10. 使用引用作为函数参数,下列说法正确的是() A. 实参是形参的备份 B. 实参与形参无联系 C. 形参是实参的备份 D. 实参与形参是同一对象 11. C++的继承性允许派生类继承基类的() A. 部分特性,并允许增加新的特性或重定义基类的特性 B. 部分特性,但不允许增加新的特性或重定义基类的特性 C. 所有特性,并允许增加新的特性或重定义基类的特性 D. 所有特性,但不允许增加新的特性或重定义基类的特性 12. 以下基类中的成员函数表示纯虚函数的是() A. virtual void tt()=0 B. void tt(int)=0 C. virtual void tt(int) D. virtual void tt(int){} 二、填空题(请在每小题的空格中填上正确答案。错填、不填均无分。) 1. 抽象类中至少要有一个_纯虚__函数。 2. 编译时的多态性通过_重载__函数实现。 3. 基类的公有成员在派生类中的访问权限由_继承方式__决定。 4. 假设类X的对象x是类Y的成员对象,则“Y Obj”语句执行时,先调用类___的构造函数。 5. 下列程序段的输出结果是___。 6. C++中有两种继承:单继承和_多重继承__。 7. C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取引用___方式。 8. 将指向对象的引用作为函数的形参,形参是对象的引用,实参是_对象名__。

面向对象-练习题

【练习题】01.类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】02.类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】03类的成员方法 创建一个账户Account类,该类有id:账户号码(长整数) name:真实姓名字符串类型,balance:账户余额double 类型.方法:deposit: 存款方法,参数是double 型的金额;withdraw:取款方法,参数是double型的金额. 在main方法中创建Account类的对象,调用各个方法,并显示存取款结果。 【练习题】04.构造方法 编写Java程序,模拟简单的计算器。12 3 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为公共。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】05.构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。 在main方法中创建人类的实例,然后将信息显示。

面向对象技术

《面向对象技术(本)》课程第一阶段练习题 一.填充题 1.Java源程序文件的扩展名是java;Java源程序经编译后生成Java字节码文件,其扩展名是class。 2.Java程序可分为Application和Applet两大种类。 3.开发与运行Java程序需要经过的三个主要步骤为编写源程序、 编译源程序和解释运行字节码文件。 4.在Java程序中定义的类有两种成员:成员变量、成员方法。 5.一个Application源程序文件名为MyPro.java,如果使用Sun公司的Java开发工具SDK编译该源程序文件并使用其虚拟机运行这个程序的字节码文件,应该顺序执行如下两个命令: javac MyPro.java 、 java MyPro 。 6.定义初值为123456789的长整型变量 var 的语句是__long var=123456789L;__。 7.在Java语言中,逻辑常量值除了true之外另一个是false。 8.表达式15+4*5-12的运算结果是23。 二.选择题 1.编译Java源程序文件后所产生的字节码文件的扩展名为: C A.java B. html C.class D. exe 2. main方法是Java Application程序执行的入口点,以下main方法头部合法的是:B A. public static void main() B. public static void main(String args[]) C. public static int main(String[] arg) D. public void main(String arg[]) 3.下面的Java源文件代码片断是不正确的定义次序的是: D A.package mypack; public class Demo{//do something…

Java面向对象编程上机-练习题汇总

【练习题】类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】类的成员变量与方法、构造方法 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】构造方法 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。

面向对象复习题

第一部分面向对象方法概述 一、填空题 1.对象的抽象是,类的实例是。 2.动态模型描述了系统的结构。 3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流, 有、和三种外部事件控制流。控制流是一个处理内 部的控制,均可结构化。 4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象 的那些类的实例。 5.继承性是自动共享父类属性和的机制。 6.对象具有封装性,实现了的组合。 7.在面向对象方法中,信息隐藏通过对象的来实现。类结构分离了 和,从而支持了信息隐藏。 8.抽象是指强调实体的、,忽略一些无关紧要的属性。类实现了对象 的和的抽象,它是对象的共性的抽象。 9.子类只继承的属性和操作,称为单重继承。 10.对象的抽象是,类的具体化就是,也可以说类的实例 是。 11.类具有,它是的行动的抽象。 12.对象具有状态,对象用来描述它的状态。 13.概念模型描述了系统的。功能模型指出,动态模型确定, 而对象模型确定。功能模型由组成。 14.面向对象有三个基本要素,它们是、、。 15.面向对象技术在三个级别上促进了共享,它们是、、。 16.活动是一种有时间间隔的操作,它是依附于。动作是一种瞬时操作,它 是与联系在一起的操作。 17.封装性是指所有软件部件内部都有明确的以及清楚的。每个软 件部件都有友好的,软件部件的与分离。 18.主要的对象类型有、、和。 19.同一个类中的共享是指同一个类中的对象有着相同的和相同 的。 20.结构化方法的本质是,其、可修改性和可重用性都比较差。 21.对象还有,用于改变对象的状态。对象实现了和的 结合。 22.面向对象方法认为系统是由应用域的组成。 23.对象具有状态,描述对象的状态用它的。 24.类具有属性,描述类的属性用。 25.一个方法有、和。 26.动态模型描述了系统的。 27.对象模型的主要元素是类,关联和。 28.通过这种机制和构造来实现不同应用中的信息共享。 29.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。 30.对象具有很强的能力和功能。

Java面向对象编程练习试题包括答案.docx

【练习题】 01. 类的成员变量: 猜数字游戏:一个类 A 有一个成员变量 v,有一个初值 100。定义一个类,对 A 类的成员变量 v 进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。import .*; class A{ int v = 100; A(){ =v; } } public class b01 { public static void main(String args[]){ A a = new A(); Scanner intput = new Scanner; int intputvalue = (); if(intputvalue> "你的输入大于这个值 "); if(intputvalue< "你的输入小于这个值 "); if(intputvalue== "猜测成功 "); } } 【练习题】 02. 类的成员变量: 请定义一个交通工具 (Vehicle)的类,其中有: 属性:速度 (speed) ,体积 (size)等等 方法:移动 (move()) ,设置速度 (setSpeed(int speed)),加速speedUp(),减速speedDown()等等 . 最后在测试类Vehicle 它初始化 speed,size 对速度进行改变。 中的 main() 中实例化一个交通工具对象,并通过方法给的值,并且通过打印出来。另外,调用加速,减速的方法 class Vehicle {int speed; int size; void move(){ }; void setSpeed(int speed){ = speed; } void speedUp(){ speed = speed+1;

面向对象的C++理论与实践 复习题

复习题 一、全面复习课程内容和所有平时布置的作业、课堂讲过的例题 二、练习下列题型示例。要求掌握各种基本概念和基本原理,学会灵活应用。 1、简要回答下列问题 (1)什么是面向对象的程序设计? (2)什么是对象?它有哪些特征?什么是类?对象与类的关系是什么? (3)什么是消息?如何区分公有消息与私有消息?消息具有什么性质? (4)什么是多态性?在面向对象系统中多态性表现在哪些方面? (5)什么是继承性?继承的作用是什么? (6)C++是如何实现数据封装和信息隐藏的?若类间具有继承关系,则它们之间具有什么特征? (7)为什么要引入构造函数和析构函数?它们各有什么特性? (8)this指针的主要作用是什么?静态成员有哪些特性? (9)使用内部(内置)函数的优点是什么? (10)假设在程序中已经声明了类point,并建立了其对象p1和p4。请回答以下几个语句有什么区别? ①point p2,p3; ②point p2=p1; ③point p2(p1); ④p4=p1; (11)友元函数有什么作用? (12)用成员函数重载运算符和用友元重载运算符,在定义和使用上有什么不同? (13)什么是重载?函数重载有几种表现形式? (14)为什么要引入引用概念,在程序设计中它经常被用在什么场合? (15)简述引用与指针的异同。 (16)派生有几种方式,每种方式中派生类对基类成员的继承性如何? (17)派生类构造函数和析构函数的构造规则是什么?执行顺序怎样? (18)什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的? (19)在C++中的何种情况下要引入虚基类?虚基类的构造函数的调用顺序是如何规定的? (20)保护段成员与公有段成员有何差别?在派生类中如何继承? (21)什么是虚函数?函数重载与虚函数有哪些异同? (22)什么是纯虚函数?什么是抽象类? (23)在什么情况下要引入抽象类?抽象类有什么特点? (24)什么是多重继承的名字冲突?怎样解决多重继承的名字冲突? (25)C++中多态性体现在哪几方面? (26)为什么使用模板?函数模板声明的一般形式是什么? (27)函数模板与同名的非模板函数重载时,调用的顺序是怎样的? 2、填空 (1)面向对象的程序设计具有等特征。 (2)构造函数是和同名的函数。 (3)假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为_______。(4)类的私有成员只能被它的成员函数和_________访问。 (5)如果类C的一个成员函数访问func( ) 时,无法确定是访问基类A还是基类B,就出现二义性。使用可以消除二义性。 (6)假定AB为一个类,则语句AB( AB &x );为该类_________构造函数的原型说明。 (7)继承机制的作用是。 (8)在C++程序中,对象之间的相互通讯通过实现。 (9)对于任意一个类,析构函数最多可以有个,而构造函数可以有个。

面向对象程序设计复习试题(答案)

语法扩充 1.1选择题 在C++中用( D )能够实现将参数值带回。 a)数组b)指针c)引用d)上述ABC都可 考虑函数原型void test(int a,int b=7,char *ch="*"),下面的函数调用中,属于不合法调用的是:( C ) A)test(5) B)test(5,8) C)test(6,"#") D)test(0,0,"*"); 已知: int m=10;下列表示引用的方法中,正确的是:( C ) A)int &Z;B)int &t=10;C)int &X=m;D)float &f=&m; 下列不是函数重载所要求的条件是:( D ) A)函数名相同B)参数个数不同 C)参数类型不同D)函数返回值类型不同 在C++中执行以下4条语句后输出rad值为:( C ) static int hot=200; int &rad=hot; hot=hot+100; cout<

相关文档