一、填空题
1、面向对象的特征是 、 、 和 。 2、面向对象有三个基本要素,它们是 、 和 。 3、类具有属性,它是 的抽象,用 来描述类的属性。 4、类具有操作,它是 的抽象,用 和 实现来描述。 5、在类层次中,子类只继承一个父类的属性和方法,则称为 。子类继承了多个父类的属性和方法,则称为 。 6、OMT方法是RumBaugh等人提出的面向对象开发方法。开发工作的基础是对 ,然后围绕这些对象使用 来进行独立于语言的设计。 7、Coad和Yourdon方法完成了从需求角度出发的 认定工作,面向对象设计可以在此基础上,从设计的角度进一步进行 的认定。 8、Booch方法通过分析问题陈述正文,将其中的 映射为对象,将其中的 映射为方法,从而为对象和方法的认定提供了一种简单的策略,虽然Booch方法原是面向 的语言,但仍处于面向对象开发方法的奠基性地位。 9、 不仅统一了Booch方法、OMT方法、OOSE方法的表示方法,而且对其作了进一步的发展,最终成为为国际对象组织(OMG)认可的同一建模语言。 10、在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即 和整体-部分关系。 11、在面向对象设计中存在三种内聚,即 、 和 。
二、单选填空题
1、对象是面向对象开发方法的基本成分,每个对象可用它本身的一组( )和它可以执行的一组操作来定义。 A. 服务 B. 参数 C. 属性 D. 调用 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. 控制 7、操作是类中对象所使用的一种功能或变换。类中的各个对象可以共享操作,方法是类中操作的( )。 A. 别名 B. 实现步骤 C. 功能 D. 脚本 8、( )应当在应用分析之前进行,因为我们在了解问题之前应对问题敞开思想考虑,不应加以限制。 A. 论域分析 B. 高层设计 C. 实例建立 D. 类的开发 9、应用程序可以通过执行对象的操作来改变对象的属性值,但它必须通过( )的传递。 A. 接口 B. 控制 C. 消息 D. 实例 10、在软件开发过程中,抽取和整理用户要求并建立问题论域精确模型的过程叫做( )。 A. 生存期 B. 面向对象分析 C. 面向对象程序设计 D. 面向对象设计 11、Rumbaugh等人提出的对象模型化技术OMT把分析时收集到的信息组织在三种模型中,即对象模型、动态模型和( )。 A. 信息模型 B. 控制模型 C. 功能模型 D. 行为模型 12、对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构。它是从现实世界实体的相互关系的角度来描述、表现对象间的相互关系。该模型主要关心系统中对象的结构、属性和操作,使用了( )的工具来刻划。 A. E-R图 B. 对象图 C. 系统流程图 D. 系统结构图 13、组装关系是一种“整体-部分” 关系。在这种关系中,有整体类和部分类之分。组装关系中最重要的性质是( ),它还具有逆对称性。 A. 局部性 B. 完整性 C. 一致性 D. 传递性 14、分类关系是“一般化-特殊化”关系。一般化类又称为父类,特殊化类又称为子类。分类关系和( )是同时存在的。 A. 传递性 B. 逐步求精 C. 继承性 D. 全局性 15、继承有单继承和多继承。单继承指的是子类只有一个父类,在一个类层次结构中若只有单继承,则该类层次结构是树形结构。多继承指的是子类可以有多个父类,在一个类层次结构中若有多继承,则该类层次结构是( )层次结构。 A. 树形 B. 星形 C. 网状 D. 环形 16、动态模型描述与时间和变化有关的系统的性质。该模型描述了系统的控制结构,表示了瞬时的行为化的系统控制性质,它关心的是系统的控制、操作的执行顺序。它从系统涉及的事件和对象的( )出发,表现了对象及对象间的相互行为。 A. 状态 B. 属性 C. 操作 D. 控制 17、动态模型描述的系统属性是触发事件、事件序列、状态、事件和状态的组织。使用( )作为描述工具。 A. 状态图 B. 顺序图 C. 活动图 D. 进程图 18、功能模型用来说明值是如何计算的,表明值之间的依赖关系及其相关的功能。数据流图有助于表示功能依赖关系,其中的处理对应于状态图中的活动和动作,数据流对应于对象图中的( )。 A. 实例连接 B. 对象或属性 C. 消息传递 D. 关联 19、操作与对象模型中的属性和关联的查询有关,与动态模型中的( )有关,与功能模型中的加工有关。 A. 事件 B. 状态 C. 变换 D. 处理 20、面向对象设计阶段中的高层设计是要确定实现系统的策略和目标系统的( )。 A. 体系结构 B. 算法设计 C. 类结构 D. 类设计 21、面向对象设计阶段中的类设计是要确定实现方案中的类、关联和接口形式及实现操作的( )。 A. 逻辑 B. 顺序 C. 控制 D. 算法 22、状态是对象属性值的抽象,状态指明了对象对( )的响应。 A. 输入事件 B. 输入信息 C. 输入数据 D. 输入序列 23、活动是一种有时间间隔的操作,它是依附于状态的操作。动作是一种瞬时操作,它是与( )联系在一起的操作。 A. 时间 B. 事件 C. 控制 D. 状态 24、事件可以看成是信息从一个对象到另一个对象的单向传送。因此要确定各事件的发送对象和接收对象。( )用来表示事件、事件的接收对象和发送对象。 A. 事件追踪图 B. 进程图 C. 脚本 D. 状态序列图
三、选择填空题
1、从供选择的答案中选择适合下面有关范型的叙述的正确答案,将答案编号与叙述的题号对应起来。 (1) 问题的解决是基于规则的,它把有关问题的知识分解成一组具体规则,用语言的if_then等结构来表示这些规则。 (2) 问题的解决把软件视为由一系列步骤构成的算法。每一步骤都是带有预定输入和特定输出的一个过程,连贯起来产生合理的稳定的贯通于整个程序的控制流。 (3) 把一个问题分解成独立执行的模块。让不只一个程序(进程)同时运行。这些进程互相配合,解决问题。 (4) 把标识和模型化问题论域中的主要实体做为系统开发的起点,主要考虑对象的行为而不是必须执行的一系列动作。 供选择的答案: ① 面向存取 ② 面向对象 ③ 过程性 ④ 逻辑性 ⑤ 函数型 ⑥ 面向进程 ⑦ 说明型 ⑧ 原型
2、从供选择的答案中选出与下面有关面向对象范型的叙述最适合的答案,将其编号填入相应的括号内。 �对象是面向对象范型的( A )。每个对象可用它自己的一组( B )和它可以执行的一组( C )来表征。应用执行对象的( C )可以改变该对象的( B )。它的应用必须通过( D )的传递。可以认为,这种( D )的传递大致等价于过程性范型中的函数调用。某些语言提供了特殊功能,允许对象引用自己。若一个对象没有显式地被引用,则可让该对象( E )。 供选择的答案: A. � ① 基本单位 ② 最小单位 ③ 最大单位 ④ 语法单位 B~C. ① 行为 ② 功能 ③ 操作 ④ 数据 ⑤ 属性 D. � ① 接口 ② 消息 ③ 信息 ④ 操作 ⑤ 过程 E. � ① 撤消 ② 歇着 ③ 缺省 ④ 隐式引用 ⑤ 引用自己
3、从供选择的答案中选出与下面有关面向对象开发过程的叙述最适合的答案,将其编号填入相应的括号内。 �在面向对象软件开发过程中特别重视复用。软件构件应独立于当初开发它们的应用而存在。在以后的应用开发中,可以调整这些独立构件以适应新问题的需要。因此,应使得类成为一个( A )的单元。这样就有一个( B )生存期问题。( B )生存期有自己的步骤,与任一特定应用的开发( C )。按照这些步骤,可以完整地描述一个基本( D )。而不仅仅考虑当前正在开发的系统。系统开发的各个阶段都可能会标识新的类。随着各个新类的标识,( B )生存期引导开发工作逐个阶段循序渐进。 �在设计与实现类时,应尽可能利用既存类提供为当前应用所需要的功能,利用既存类的三个可能途径是:( E )复用既存类;对既存类进行( F )以得到满足要求的类;重新开始进行开发。 供选择的答案: A. ① 可复用 ② 可测试 ③ 可适用 ④ 可靠 B. ① 应用 ② 寿命 ③ 类 ④ 软件 C. ① 相关 ② 密切相关 ③ 负相关 ④ 无关 D. ① 概念 ② 实体 ③ 事件 ④ 事情 E, F. ① 修改 ② 更新 ③ 照原样 ④ 演化
4、从供选择的答案中选出与下面有关类设计的叙述最适合的答案,将其编号填入相应的括号内。 �类常常被看做是一个抽象数据类型的实现,更合适的是把类看做是某种( A )的一个模型。事实上,类是单个的( B )语义单元。类的用户能够操纵的操作叫做类的( C )。类定义的其余部分给出数据定义和辅助功能定义,包括类的实现。 类的实现常常包括了其它类的实例,这些实例( D )被其它对象存取,包括同一个类的其它实例。类的实现可能还包括某些私有方法,实现它们的类可以使用,而其它任何对象都不能使用。 �类,就它是一个数据值的聚合的意义上来看,与Pascal中的记录或C中的结构类似,但又有差别。类扩展了通常的记录语义,可提供各种级别的( E )。类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。 供选择的答案: A. ① 功能 ② 概念 ③ 结构 ④ 数据 B. ① 语法 ② 词法 ③ 语义 ④ 上下文环境 C. ① 界面 ② 操作 ③ 行为 ④ 活动 D. ① 可自由地 ② 可有控制地 ③ 可通过继承 ④ 应受保护不 E. ① 可移植性 ② 可重复性 ③ 可访问性 ④ 继承性
5、从供选择的答案中选出与下面有关需求定义的叙述最适合的答案,将其编号填入相应的括号内。 有一种非形式的技术,对于捕获信息有时很有用,它就是CRC卡片。CRC是( A )、( B )和( C )的缩写。它可以用来组织在每一个子系统中的类。以CRC卡片为辅助工具的设计有以下几个步骤:识别( A )和( B ),分配( B ),找寻( C ), 细化。CRC的作者强调模拟在执行每个基本功能时系统内部出现的( D ),以此推动细化工作的进行。在这个过程中,CRC卡片是十分重要的一个工具。 用CRC卡片来进行设计,既不是传统的“自上而下”,也不是“自下而上”,而是从已知到未知的逐步( E )的过程。 供选择的答案: A~C. ① 控制 ② 协作者 ③ 可靠性 ④ 类 ���⑤ 计算 ⑥ 职责 ⑦ 比较 ⑧ 上下文环境 D. � ① 场景 ② 算法 ③ 进程 ④ 变换 E. � ① 演化 ② 进展 ③ 展开 ④ 认识
6、从供选择的答案中选出与下面有关论域分析的叙述最适合的答案,将其编号填入相应的括号内。 �论域分析的( A )和对应用分析和高层设计的( B )就构成问题论域的模型。已有许多建立这种模型的技术,一种特别适用的技术就是语义数据模型。 �语义数据模型来源于Codd的( C )数据模型和实体―联系模型,并对这类模型进行了扩充和一般化。语义数据模型可以表达问题论域的内涵,还可以表示复杂对象和对象之间的联系。语义数据模型与( C )数据模型本来都是在( D )设计时使用的,但它们的范围已经扩展到系统的开发。作为( D )结构标准的ANSI/SPARC建议提出了三层模型:外部模型、概念模型和( E )模型。这三层可以被映象到面向对象设计的三个层次上去。外部模型与概念模型层相当于高层设计阶段。 供选择的答案: A, B. ① 控制 ② 输出 ③ 输入 ④ 处理 ���⑤ 计算 ⑥ 解释 ⑦ 比较 ⑧ 创建 C. � ① 变换 ② 关系 ③ 抽象 ④ 事务 D.��① 网络 ② 程序 ③ 算法 ④ 数据库 E.��① 低层 ② 底层 ③ 内部 ④ 存储
7、从供选择的答案中选出与下面的叙述最适合的答案,将其编号填入相应的括号内。 �从分析到设计的过程流如图所示。一旦已经开发完成一个合理完整的( A )模型后,就要着手( B )的设计。这需要描述( B )的特征,以准确表达待实现的用户需求,以及实现需求所必须的支持环境。一旦定义了各个( B ),就开始( C )设计,这时,可利用CRC卡片,将属性转换为( D ),将关系转换为( E )。 供选择的答案: A~C. ① 分析 ② 系统设计 ③ 模块设计 ④ 子系统设计 ���⑤ 对象设计 ⑥ 数据设计 ⑦ 操作设计 ⑧ 行为设计 D~E. ① 对象 ② 数据结构 ③ 算法 ④ 消息传递 ���⑤ 控制 ⑥ 并发处理 ⑦ 进程 ⑧ 过程
8、从供选择的答案中选出与下面有关面向对象分析的叙述最适合的答案,将其编号填入相应的括号内。 �由RumBaugh等人提出的一种面向对象方法叫做对象模型化技术(OMT),即三视点技术,它要求把分析时收集的信息建立在三个模型中。第一个模型是( A ),它的作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。第二个模型是( B ),它描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。( B )包括两种图, 即( C )和( D )。( C )描述每一类对象的行为,( D )描述发生于系统执行过程中的某一特定场景。第三个模型是( E ),它着重于描述系统内部数据的传送与处理,它由多个数据流图组成。 供选择的答案: A,B,E: ① 数据模型 ② 功能模型 ③ 行为模型 ④ 信息模型 ����⑤ 原型 ⑥ 动态模型 ⑦ 对象模型 ⑧ 逻辑模型 ����⑨ 控制模型 ⑩ 仿真模型 C,D:� ① 对象图 ② 概念模型图 ③ 状态迁移图 ④ 数据流程图 ����⑤ 时序图 ⑥ 事件追踪图 ⑦ 控制流程图 ⑧ 逻辑模拟图 ⑨ 仿真图 ⑩ 行为图
9、从供选择的答案中选出与下面有关面向对象设计的叙述最适合的答案,将其编号填入相应的括号内。 �在面向对象软件设计过程中,应按如下要求进行类的设计:只有类的共有界面的成员才能成为使用类的操作,这就是软件设计的( A )原则。当且仅当一个操作对类的实例的用户有用时,它才是类公共界面的一个成员,这是软件设计的( B )原则。由同属一个类的操作负担存取或加工类的数据,这是软件设计的( C )原则。两个类之间的交互应当仅涉及参数表,这是软件设计的( D )原则。每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集,这是软件设计的( E )原则。 供选择的答案: A:① 过程抽象 ② 功能抽象 ③ 信息隐蔽 ④ 共享性 � ⑤ 连通性 B:① 标准调用 ② 最小界面 ③ 高耦合 ④ 高效率 � ⑤ 可读性 C:① 数据抽象 ② 低内聚 ③ 高内聚 ④ 低复杂度 � ⑤ 低强度 D:① 显式信息传递 ② 高内聚 ③ 低内聚 ④ 相互操作性 � ⑤ 连接性 E:① 动态联编 ② 异质表 ③ 信息隐蔽 ④ 多态性 � ⑤ 继承性
10、从供选择的答案中选出与下面有关面向对象程序设计的叙述最适合的答案,将其编号填入相应的括号内。 �面向对象的程序设计语言具有数据抽象、信息隐蔽、( A )等特征。作为运算单位的对象应具有下列特性:( B )、( C )、( D )。( E )是面向对象的语言。 供选择的答案: A:① 对象调用 ② 对象变换 ③ 非过程性 � ④ 信息继承 ⑤ 并发性 B~D:① 对象把数据和处理数据的操作结合为一体 ���② 在程序运行时对象都处于活动状态 ���③ 对象在计算中可向其他对象发送消息 ���④ 接受消息的对象必须给消息发送者以回答 ���⑤ 对象的内部状态只根据外部送来的消息才操作 E:① C++,SMALLTALK,object C ② C,Ada,Modula2 � ③ PASCAL,C++,APL ④ Ada,object C,C
四、问答题
1、什么叫面向对象?面向对象方法的特点是什么?为什么要用面向对象方法开发软件?
2、什么是“对象”?识别对象时将潜在对象分成7类,试给出这7类对象的名称,并举例说明。
3、什么是“类”? “类”与传统的数据类型有什么关系?有什么区别?
4、基于复用的面向对象开发过程分为哪几个阶段?每一个阶段需要做哪些事情?
5、按照类生存期,类的开发有哪几种方式?每一种方式需要做哪些事情?
6、面向对象开发方法与面向数据流的结构化开发方法有什么不同?使用面向对象开发方法的优点在什么地方?
7、基于复用的面向对象的需求分析过程主要分为两个阶段:论域分析和应用分析。试讨论它们各自承担什么任务?如何衔接?
8、建立分析和设计模型的一种重要方法是UML。试问UML是一种什么样的建模方法?它如何表示一个系统?
9、使用面向对象设计方法进行高层设计,以建立系统的体系结构。这样的结构有哪几种主要的组成部分?每一部分所承担的职责是什么?
10、在类的设计中需要遵循的方针是什么?三个主要的设计准则:抽象、信息隐蔽和模块化如何才能作到?
11、在类的通过复用的设计中,主要的继承关系有哪几种?试举例说明。
五、应用题
1、建立窗口系统的对象模型,问题陈述如下: “窗口分为对话窗、图形窗、滚动窗三种。对话窗中有若干对话项,由唯一的项名字来确定;对话项分为按钮、选择项和正文项三种,选择项中有若干选择项入口。图形窗中有若干形状元素,形状元素分为一维形状和二维形状。一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中折线与多边形由若干有序顶点组成。正文窗是滚动窗的一种,而图形滚动窗既是图形窗又是滚动窗。”
2、在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种交互的行为。