第10章类和对象
- 格式:docx
- 大小:51.98 KB
- 文档页数:25
第10章面向对象分析一、选择题1._____是系统一个特定执行期间所发生的事件序列。
【答案】脚本2.功能模型描述系统内的计算,它和_____、_____共同构成系统模型结构的三大支柱。
【答案】对象模型;动态模型3.状态是对象的_____、_____的一种抽象。
【答案】属性值;链接4.在对象模型中,访问操作是直接从类的_____和_____中导出的。
【答案】属性;关联5.对象模型为建立_____和_____,提供了实质性框架。
【答案】动态模型;功能模型6.功能模型由多个_____组成,每个_____说明了操作和结束的含义。
【答案】数据流图;数据流图7.功能模型由多张数据流图组成。
数据流图中包含_____、_____、_____对象和_____对象。
【答案】处理;数据流;动作;数据存储8.事件跟踪图用来表示_____、_____对象和_____对象。
_____和_____可用一条垂直线表示,各_____用水平箭头表示,箭头方向是从_____对象指向_____对象。
【答案】事件;事件的接收;发送;接收对象;发送对象;事件;发送;接收9.状态转换图是_____的重要工具。
【答案】启发分析员认识对象服务10.说明一个状态可采用_____、_____、_____、_____、_____等内容描述。
【答案】状态名;状态目的描述;产生该状态的事件序列;表示状态特征的事件;在状态中接收的条件二、填空题1.一个()能用不同的方法表示它的特征。
A.事件B.抽象C.状态D.脚本【答案】C【解析】状态是对象的属性值和链接的一种抽象。
根据影响对象总的行为的性质,一系列组合在一起是一个状态。
它能用不同的方法表示它的特征。
2.在对象模型中,访问操作是直接从类的属性和关联中导出的。
下列不是对象模型的访问操作的是()。
A.查询B.动作C.抽象D.活动【答案】C【解析】对象模型的访问操作主要包括三大类:查询、活动和动作。
3.()对整个对象的状态/行为关系的图示,它附属于该对象的类描述模板。
第10章例题分析与解答作者:不详来源:2006年9月4日发表评论进入社区一、填空题1.面向对象方法认为系统是由应用域的______组成。
2.对象具有状态,描述对象的状态用它的______。
3.对象的抽象是______。
4.类之间有两种结构关系,它们是分类关系和______关系。
5.面向对象程序设计语言与其他程序设计语言的最主要差别是它具有______。
6.动态模型描述了系统的______。
二、选择题1.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( )关系。
A.组装B.整体成员C.has aD.一般具体2.面向对象分析阶段建立的三个模型中,核心的模型是( )模型。
A.功能B.动态C.对象D.分析3.对象模型的描述工具是( )。
A.状态图B.数据流图C.对象图D.结构图4.在有多重继承的类层次结构中,它的类层次结构是( )层次结构。
A.树型B.网状型C.环型D.星型5.描述类中对象的行为,反映了状态与事件关系的是( )。
A.对象图B.状态图C.流程图D.结构图6.在确定属性时,所有( )是候选的属性。
A.动词B.名词C.修饰性名词词组D.词组三、应用题1.建立窗口系统的对象模型。
问题陈述如下:窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项、正文项三种,选择项中有若干对话项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。
2.在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种查询的交互行为。
答案:一、填空题1.对象2.属性值3.类4.组装5.继承性6.动态行为二、选择题1.D2.C3.C4.B5.B6.C三、应用题1.2.第10章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.对象2.类3.属性4.操作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.动作对象31.数据存储对象 32.重用性二、填空题1.对象具有封装性,实现了______的结合。
习题第十章面向对象的程序设计一、选择题1.以下关于visual foxpro类的说法,不正确的是()。
A.类具有继承性和封装性B.用户必须给基类定义属性,否则出错C.子类一定具有父类的全部属性D.用户可以按照已有的类派生出多个子类2.下面关于“类”的描述,错误的是()。
A.一个类包含了相似的有关对象的特征和行为方法B.类只是实例对象的抽象C.类可以按所定义的属性、事件和方法进行实际的行为操作D.类并不进行任何行为操作,它仅仅表明该怎样做3.类是一组具有相同属性和相同操作的对象的集合,类之间共享属性和操作的机制称为()。
A.多态性B.动态绑定C.静态绑定D.继承4.命令按钮组是()。
A.控件B.容器C.控件类对象D.容器类对象5.下列关于面向对象程序设计(OOP)的叙述,错误的是()。
A. OOP的中心工作是程序代码的编写B. OOP以对象及其数据结构为中心展开工作C. OOP以“方法”表现处理事物的过程。
D. OOP以“对象”表示各种事物,以“类”表示对象的抽象。
6.下列基类中是容器类的是()。
A.表单B.命令按钮C.列表框D.单选按钮7.在VISUAL FOXPRO系统中,以下关于事件的叙述错误的是()。
A.事件是每个对象可以识别和相应的某些行为和动作B.事件不能适用于多种控件C.事件是通过用户的操作性为引发的D.当事件发生时,将执行包含在事件过程中的全部代码8.下面关于属性、方法和事件的叙述中,错误的是()。
A.属性用于描述对象的状态,方法用于表示对象的行为B.基于同一个类产生的两个对象可以分别设置自己的属性值C.在新建一个表但是,可以添加新的属性、方法和事件D.事件代码也可以像方法一样被显示调用9.任何对象都有自己的属性,下列关于属性的叙述中,正确的是()。
A.属性是对象所具有的固有特征,通常用各种类型的数据来表示B.属性是对象所具有的内部特征,通常用各种类型的数据来表示C.属性是对象所具有的外部特征,通常用各种类型的数据来表示D.属性是对象所具有的固有方法,通常用各种程序代码来表示10.下列说法中错误的是()。
第10章类和对象本章工作任务➢实现学校类,并描述学校的信息➢实现教员类,并输出教员的信息➢实现学生类,并输出学生的信息本章技能目标➢掌握类和对象的特征➢理解封装➢会创建和使用对象使用Java理解程序逻辑本章单词请在预习时学会下列单词的含义和发音,并填写在横线处。
1.class:2.object:3.OOP:4.return:5.encapsulation:6.null:7.initial:8.type:类和对象本章简介在前面章节中,我们学习了程序设计的基本知识和流程控制语句。
通过这些内容的学习,大家能够用Java语言进行程序设计,但这些程序的规模都很小,一般只有几十行代码。
假设我们要编程解决一个很大的问题,需要写几万行代码,如果按照以前的做法,将这些代码都放在一个Java文件中,可以想象这个文件会非常冗长,而且很难维护。
因此,在下面的课程中,你将看到Java程序设计的另一道风景——面向对象程序设计,英语缩写为OOP。
面向对象程序设计是一个里程碑,Alan Kay因为设计了世界上第一个面向对象语言Smalltalk而获得图灵奖。
Java之父James Gosling结合Internet背景设计了完全面向对象的Java语言。
本章将带领你进入面向对象的世界,学习什么是对象和类,以及如何创建和使用类的对象。
10.1 对象首先问你一个问题,“世界是由什么组成的?”。
如果你是一个化学家,你可能会说,“世界是由分子、原子、离子等这些化学物质组成的”。
如果你是一个画家,你可能会说,“世界是由不同的颜色组成的”。
不同的人会有不同的回答。
但如果你是一个分类学家,你会说,“这个世界是由不同类别的事物组成的”,如图10.1所示。
图10.1 世界的组成其实,这个问题本身就比较抽象,我们说物以类聚,所以可以说世界是由不同类别的事物构成,如图10.1中所示,世界由动物、植物、物品、人和名胜等组成。
动物可以分为脊椎动物和无脊椎动物。
脊椎动物又可以分为哺乳类、鱼类、爬行类、鸟类和两栖类。
爬行类又可以分为有足类和无足类……,就这样可以继续分下去。
当我们提到某一个分类时,就可以找到属于该分类的一个具体的事物。
比如乌龟就属于爬行类中的有足类,使用Java理解程序逻辑眼镜蛇就属于爬行类中的无足类。
当我们提到这些具体动物时,会在脑海浮现出它们的形象。
这些现实世界中客观存在的事物就称为对象。
在Java的世界中,“万物皆对象”!作为面向对象的程序员,我们要站在分类学家的角度去思考问题。
根据要解决的问题,将事物进行分类。
说明分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类。
比如我们可以将食物分为可食的和不可食的,将交通工具分为车、船、飞机等。
分类就是按照事物的性质、特点、用途等作为区分的标准,将符合同一标准的事物归为一类,不同的则分开。
比如上文对动物的分类中,根据动物有无脊椎可分为脊椎动物和无脊椎动物,如果根据动物是水生还是陆生,又可分为水生动物和陆生动物。
因此,在实际应用中,我们要根据待解决问题的需要,选择合适的标准或角度对问题中出现的事物进行分类。
10.1.1 身边的对象现实世界中客观存在的任何事物都可以被看作对象。
它可以是有形的,比如一辆汽车;它也可以是无形的,比如一项计划。
因此对象无处不在。
Java是一种面向对象的语言,因此我们要学会用面向对象的思想考虑问题和编写程序。
在面向对象中,对象是用来描述客观事物的一个实体。
用面向对象方法解决问题时,首先要对现实世界中的对象进行分析与归纳,找出哪些对象与我们要解决的问题是相关的。
下面以商场中的两个对象为例,看看我们身边的对象,如图10.2所示。
张浩在超市购物后要刷卡结账,收银员李明负责收款并打印账单。
在这个问题中,张浩和李明就是我们所关心的对象。
下面选择一个角度对他们分类,比如两人的角色不同,张浩是顾客,而李明是收银员,因此可以说,张浩是“顾客”对象,而李明是“收银员”对象。
图10.2 “顾客”对象和“收银员”对象既然他们都是对象,如何区分呢?其实每一个对象都有自己的特征,包括静态特征和动态特征。
静态特征是可以用某些数据来描述的特征,比如人的姓名、年龄等。
动态特征类和对象是对象所表现的行为或对象所具有的功能,比如购物、收款等。
对上面的例子,我们可以得到表10-1。
表10-1 不同对象的静态特征和行为对照表对象静态特征静态特征的值动态特征“顾客”对象姓名张浩购买商品张浩年龄 20体重 60kg“收银员”对象员工号 10001 收款李明姓名李明打印账单部门财务部通过表10-1,我们可以看到,不同类别中的对象具有不同的静态特征和动态特征。
如果要将上面的信息存储在计算机中,该如何做呢?10.1.2 对象的属性和方法通过超市购物的例子可以看到,正是因为对象拥有了这些静态特征和动态特征才使得他们与众不同。
在面向对象的编程思想中,我们把对象的静态特征和动态特征分别称为对象的属性和方法,它们是构成对象的两个主要因素。
其中属性是用来描述对象静态特征的一个数据项,该数据项的值即属性值。
比如上面例子中,“顾客”对象有一个属性是姓名,属性值是张浩。
而方法是用来描述对象动态特征(行为)的一个动作序列。
比如“收银员”对象的行为有收款和打印账单,这些都是对象的方法。
在编程中,对象的属性被存储在一些变量里,比如可以将“姓名”存储在一个字符串类型的变量中,将“员工号”存储在一个整型变量中。
对象的行为则通过定义方法来实现,比如“收款”、“打印账单”都可以定义为一个方法。
解释对象:用来描述客观事物的一个实体,由一组属性和方法构成。
10.1.3 封装顾名思义,封装(Encapsulation)就是把一个事物包装起来,并尽可能隐藏内部细节,如图10.3所示。
图10.3 法拉利跑车使用Java理解程序逻辑图10.3中是一辆法拉利跑车。
在这辆车未组装前,是一堆零散的部件,比如发动机、方向盘等,仅仅这些部件是不能发动的。
当把这些部件组装完成后,才具有发动的动能。
显然,这辆法拉利跑车是一个对象,而零部件就是该对象的属性,发动、加速、刹车等行为就是该对象所具有的方法。
通过上面的分析可以看到,对象的属性和方法是相辅相成,不可分割的,它们共同组成了实体对象。
因此,对象具有封装性。
10.2 类上面提到了一位顾客“张浩”,但在现实世界中有很多顾客,张三、李四、王五等。
因此,“张浩”只是顾客这一类人中的一个实例。
又如,“法拉利跑车”是一个对象,但现实世界中还有奔驰、保时捷、凯迪拉克等车,因此“法拉利跑车”只是车这一类别中的一个实例。
不论哪种车,都有一些共同的属性,比如品牌、颜色等,也有一些共同的行为,比如发动、加速、刹车等,在这里我们将这些共同的属性和行为组织到一个单元中,就得到了类。
解释类:具有相同属性和方法的一组对象的集合。
类定义了对象将会拥有的特征(属性)和行为(方法)。
类的属性:对象所拥有的静态特征在类中表示时称为类的属性。
例如,所有顾客都有姓名,因此姓名可以称为“顾客类”的属性,只是不同对象的这一属性值不同,比如,顾客张三和顾客李四的姓名不同。
类的方法:对象执行的操作称为类的方法。
例如,所有顾客都有购物行为,因此购物就是“顾客类”的一个方法。
10.2.1 类和对象的关系了解了类和对象的概念,你会发现它们之间既有区别又有联系,例如,如图10.4所示为用模具做球状冰淇淋的过程。
图10.4 制作球状冰淇淋类和对象制作球状冰淇淋的模具是类,它定义了如下信息(属性)。
➢球的半径。
➢冰淇淋的口味。
使用这个模具做出来的不同大小和口味的冰淇淋是对象。
在Java面向对象编程中,我们就用这个类模型创建出类的一个实例,即创建类的一个对象。
因此,类和对象的关系就如同模具和用这个模具制作出的物品之间的关系。
一个类为它的全部对象给出了一个统一的定义,而它的每个对象则是符合这种定义的一个实体。
因此类和对象的关系就是抽象和具体的关系。
类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例。
图10.5展示了在我们生活的现实世界,大脑中的概念世界和程序运行的计算机世界中,类和对象的关系。
图10.5 现实世界、概念世界和计算机世界中的类与对象在我们生活的“现实世界”中,有一个个具体的“实体”。
以超市中为例,在超市中有很多顾客,张三、李四、王五等,而“顾客”这个角色就是在我们大脑的“概念世界”中形成的“抽象概念”。
当我们需要把顾客这一“抽象概念”定义到计算机中时,就形成了“计算机世界”中的“类”,也就是我们上面内容所讲的类。
而用类创建的一个实例就是“对象”,它和“现实世界”中的“实体”是一一对应的。
10.2.2 类是对象的类型到目前为止,我们已经学习了很多数据类型,比如整型(int)、双精度浮点型(double)、字符型(char)等。
这些都是Java语言已经定义好的类型,我们编程时只需要用这些类型声明变量即可。
那么,如果想描述顾客“张浩”,他的数据类型是什么呢?字符型还是字符串型?其实都不是。
“张浩”的类型就是“顾客”,也就是说,类就是对象的类型。
使用Java理解程序逻辑事实上,定义类就是定义了一个自己的数据类型。
例如“顾客”类、“人”类、“动物”类等。
10.3 Java是面向对象的语言在面向对象程序设计中,类是程序的基本单元,Java是完全面向对象的语言,所有程序都是以类为组织单元的。
回想一下你写过的每一个程序,基本框架是不是如示例1所示的样子。
示例1public class HelloWorld{public static void main(String[] args){System.out.println(“Hello World”);}}分析示例1,程序框架最外层的作用就是定义了一个类HelloWorld,我们在第1章曾提到HelloWorld是一个类名,原因就在此。
10.3.1 Java的类模板学习了类,对象的相关知识,那如何在Java中描述它们呢?Java中的类将现实世界中的概念模拟到计算机中,因此我们需要在类中描述类所具有的所有属性和方法。
Java的类模板如下所示。
语法public class <类名>{//定义属性部分属性1的类型属性1;属性2的类型属性2;……属性3的类型属性3;//定义方法部分方法1;方法2;……方法n;}类和对象在Java中要创建一个类,需要使用一个class,一个类名和一对表示程序体的大括号。
其中,class是创建类的关键字。
在class前有一个public,表示“公有”的意思。
编写程序时,要注意编码规范,不要漏写public。
在class关键字的后面要给定义的类命名,然后写上一对大括号,类的主体部分就写在{}中。
类似于给变量命名,类的命名也要遵循一定的规则。