《软件工程》第六章对象习题.docx
《《软件工程》第六章对象习题.docx》由会员分享,可在线阅读,更多相关《《软件工程》第六章对象习题.docx(14页珍藏版)》请在冰豆网上搜索。
![《软件工程》第六章对象习题.docx](https://file1.bdocx.com/fileroot1/2022-12/11/2c00098b-5a95-43e0-b166-1bb7a11a3aec/2c00098b-5a95-43e0-b166-1bb7a11a3aec1.gif)
《软件工程》第六章对象习题
《软件工程》第六章对象习题
一、判断题
Twoclassesareassociatedwhentheyoccurtogether,andwhentherelationshipmustbepreservedforsomeperiodoftime.(T)
二、填空题
1、面向对象的特征是(对象惟一性)、(分类性)、(继承性)和(多态性)。
2、面向对象有三个基本要素,它们是(抽象)、(信息隐蔽)和(共享性)。
3、类具有属性,它是(对象状态)的抽象,用(数据结构)来描述类的属性。
4、类具有操作,它是(对象行为)的抽象,用(操作名)和(操作方法)实现来描述。
5、在类层次中,子类只继承一个父类的属性和方法,则称为(单继承)。
子类继承了多个父类的属性和方法,则称为(多继承)。
6、(UML)不仅统一了Booch方法、OMT方法、OOSE方法的表示方法,而且对其作了进一步的发展,最终成为为国际对象组织(OMG)认可的同一建模语言。
7、在客观世界中有若干类,这些类之间有一定的结构关系。
通常有两种主要的结构关系,即(一般化-特殊化关系)和整体-部分关系。
8、在面向对象设计中存在三种内聚,即(操作内聚)、(类内聚)和(一般化-特殊化内聚)。
三、单选题
1、对象是面向对象开发方法的基本成分,每个对象可用它本身的一组( C)和它可以执行的一组操作来定义。
A.服务
B.参数
C.属性
D.调用
2、在面向对象方法中,把一组具有相同数据结构和相同操作的对象的集合定义为( B )。
此定义包括一组数据属性和在数据上的一组合法操作。
A.聚合
B.类
C.结构
D.主题
3、面向对象技术的许多强有力的功能和突出的优点都来源于把系统组织成一个类的层次结构。
一个类的上层可以有父类,下层可以有子类。
这种系统的类层次结构的一个重要性质是( D ),通过它,一个类可共享其父类的全部数据和操作。
A.传递性
B.复用性
C.并行性
D.继承性
4、一个面向对象软件的体系结构通过它的成分对象及各对象之间的关系来确定,与传统的结构化开发方法相比,它具有( A )的优点。
A.设计稳定
B.性能稳定
C.模块独立
D.硬件独立
5、封装性是指所有软件部件都有明确的范围以及清楚的外部边界。
每个软件部件都有友好的( B ),软件部件的内部实现和外部使用分离。
A.使用方式
B.界面
C.调用
D.继承
6、属性指的是类中对象具有的特性(数据)。
不同对象的同一属性可具有相同的或不同的( A)。
A.属性值
B.操作
C.服务
D.控制
7、操作是类中对象所使用的一种功能或变换。
类中的各个对象可以共享操作,方法是类中操作的( B )。
A.别名
B.实现步骤
C.功能
D.脚本
8、应用程序可以通过执行对象的操作来改变对象的属性值,但它必须通过( C )的传递。
A.接口
B.控制
C.消息
D.实例
9、在软件开发过程中,抽取和整理用户要求并建立问题论域精确模型的过程叫做( D )。
A.生存期
B.面向对象分析
C.面向对象程序设计
D.面向对象设计
10、对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构。
它是从现实世界实体的相互关系的角度来描述、表现对象间的相互关系。
该模型主要关心系统中对象的结构、属性和操作,使用了( B )的工具来刻划。
A.E-R图
B.对象图
C.系统流程图
D.系统结构图
11、组装关系是一种“整体-部分”关系。
在这种关系中,有整体类和部分类之分。
组装关系中最重要的性质是( D ),它还具有逆对称性。
A.局部性
B.完整性
C.一致性
D.传递性
12、分类关系是“一般化-特殊化”关系。
一般化类又称为父类,特殊化类又称为子类。
分类关系和( C )是同时存在的。
A.传递性
B.逐步求精
C.继承性
D.全局性
13、继承有单继承和多继承。
单继承指的是子类只有一个父类,在一个类层次结构中若只有单继承,则该类层次结构是树形结构。
多继承指的是子类可以有多个父类,在一个类层次结构中若有多继承,则该类层次结构是( C)层次结构。
A.树形
B.星形
C.网状
D.环形
14、动态模型描述与时间和变化有关的系统的性质。
该模型描述了系统的控制结构,表示了瞬时的行为化的系统控制性质,它关心的是系统的控制、操作的执行顺序。
它从系统涉及的事件和对象的( A)出发,表现了对象及对象间的相互行为。
A.状态
B.属性
C.操作
D.控制
15、动态模型描述的系统属性是触发事件、事件序列、状态、事件和状态的组织。
使用( A )作为描述工具。
A.状态图
B.顺序图
C.活动图
D.进程图
16、功能模型用来说明值是如何计算的,表明值之间的依赖关系及其相关的功能。
数据流图有助于表示功能依赖关系,其中的处理对应于状态图中的活动和动作,数据流对应于对象图中的( B )。
A.实例连接
B.对象或属性
C.消息传递
D.关联
17、操作与对象模型中的属性和关联的查询有关,与动态模型中的( A )有关,与功能模型中的加工有关。
A.事件
B.状态
C.变换
D.处理
18、面向对象设计阶段中的高层设计是要确定实现系统的策略和目标系统的( A )。
A.体系结构
B.算法设计
C.类结构
D.类设计
19、面向对象设计阶段中的类设计是要确定实现方案中的类、关联和接口形式及实现操作的( D )。
A.逻辑
B.顺序
C.控制
D.算法
20、状态是对象属性值的抽象,状态指明了对象对( A )的响应。
A.输入事件
B.输入信息
C.输入数据
D.输入序列
21、活动是一种有时间间隔的操作,它是依附于状态的操作。
动作是一种瞬时操作,它是与( B)联系在一起的操作。
A.时间
B.事件
C.控制
D.状态
22、事件可以看成是信息从一个对象到另一个对象的单向传送。
因此要确定各事件的发送对象和接收对象。
( A )用来表示事件、事件的接收对象和发送对象。
A.事件追踪图
B.进程图
C.脚本
D.状态序列图
四、选择填空题
1、从供选择的答案中选出与下面有关面向对象范型的叙述最适合的答案,将其编号填入相应的括号内。
对象是面向对象范型的( A ①)。
每个对象可用它自己的一组( B ⑤)和它可以执行的一组( C ③)来表征。
应用执行对象的( C ③)可以改变该对象的( B ⑤)。
它的应用必须通过( D ②)的传递。
可以认为,这种( D ②)的传递大致等价于过程性范型中的函数调用。
某些语言提供了特殊功能,允许对象引用自己。
若一个对象没有显式地被引用,则可让该对象( E ③)。
供选择的答案:
A. ①基本单位 ②最小单位 ③最大单位 ④语法单位
B~C.①行为 ②功能 ③操作 ④数据 ⑤属性
D. ①接口 ②消息 ③信息 ④操作 ⑤过程
E. ①撤消 ②歇着 ③缺省 ④隐式引用 ⑤引用自己
2、从供选择的答案中选出与下面有关面向对象开发过程的叙述最适合的答案,将其编号填入相应的括号内。
在面向对象软件开发过程中特别重视复用。
软件构件应独立于当初开发它们的应用而存在。
在以后的应用开发中,可以调整这些独立构件以适应新问题的需要。
因此,应使得类成为一个( A ①)的单元。
这样就有一个( B ③)生存期问题。
( B ③)生存期有自己的步骤,与任一特定应用的开发( C ④)。
按照这些步骤,可以完整地描述一个基本( D ②)。
而不仅仅考虑当前正在开发的系统。
系统开发的各个阶段都可能会标识新的类。
随着各个新类的标识,( B ③)生存期引导开发工作逐个阶段循序渐进。
在设计与实现类时,应尽可能利用既存类提供为当前应用所需要的功能,利用既存类的三个可能途径是:
( E ③)复用既存类;对既存类进行( F ④)以得到满足要求的类;重新开始进行开发。
供选择的答案:
A. ①可复用 ②可测试 ③可适用 ④可靠
B. ①应用 ②寿命 ③类 ④软件
C. ①相关 ②密切相关 ③负相关 ④无关
D. ①概念 ②实体 ③事件 ④事情
E,F.①修改 ②更新 ③照原样 ④演化
3、从供选择的答案中选出与下面有关类设计的叙述最适合的答案,将其编号填入相应的括号内。
类常常被看做是一个抽象数据类型的实现,更合适的是把类看做是某种( A ②)的一个模型。
事实上,类是单个的( B ③)单元。
类的用户能够操纵的操作叫做类的( C ①)。
类定义的其余部分给出数据定义和辅助功能定义,包括类的实现。
类的实现常常包括了其它类的实例,这些实例( D ④)被其它对象存取,包括同一个类的其它实例。
类的实现可能还包括某些私有方法,实现它们的类可以使用,而其它任何对象都不能使用。
类,就它是一个数据值的聚合的意义上来看,与中的结构类似,但又有差别。
类扩展了通常的记录语义,可提供各种级别的( E ③)。
类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。
供选择的答案:
A. ①功能 ②概念 ③结构 ④数据
B. ①语法 ②词法 ③语义 ④上下文环境
C. ①界面 ②操作 ③行为 ④活动
D. ①可自由地 ②可有控制地 ③可通过继承 ④应受保护不
E. ①可移植性 ②可重复性 ③可访问性 ④继承性
4、从供选择的答案中选出与下面有关面向对象设计的叙述最适合的答案,将其编号填入相应的括号内。
在面向对象软件设计过程中,应按如下要求进行类的设计:
只有类的共有界面的成员才能成为使用类的操作,这就是软件设计的( A ③)原则。
当且仅当一个操作对类的实例的用户有用时,它才是类公共界面的一个成员,这是软件设计的( B ②)原则。
由同属一个类的操作负担存取或加工类的数据,这是软件设计的( C ③)原则。
两个类之间的交互应当仅涉及参数表,这是软件设计的( D ①)原则。
每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集,这是软件设计的( E ⑤)原则。
供选择的答案:
A:
①过程抽象 ②功能抽象 ③信息隐蔽 ④共享性 ⑤连通性
B:
①标准调用 ②最小界面 ③高耦合 ④高效率 ⑤可读性
C:
①数据抽象 ②低内聚 ③高内聚 ④低复杂度 ⑤低强度
D:
①显式信息传递 ②高内聚 ③低内聚 ④相互操作性 ⑤连接性
E:
①动态联编 ②异质表 ③信息隐蔽 ④多态性 ⑤继承性
5、从供选择的答案中选出与下面有关面向对象程序设计的叙述最适合的答案,将其编号填入相应的括号内。
面向对象的程序设计语言具有数据抽象、信息隐蔽、( A ④)等特征。
作为运算单位的对象应具有下列特性:
( B ①)、( C ③)、( D ④)。
供选择的答案:
A:
①对象调用 ②对象变换 ③非过程性 ④信息继承 ⑤并发性
B~D:
①对象把数据和处理数据的操作结合为一体
②在程序运行时对象都处于活动状态
③对象在计算中可向其他对象发送消息
④接受消息的对象必须给消息发送者以回答
⑤对象的内部状态只根据外部送来的消息才操作
五、简答题
1、Usecase
Ausecasedescribesparticularfunctionalitythatasystemissupposedtoperformorexhibitbymodelingthedialogthatauser,externalsystem,orotherentitywillhavewiththesystemtobedeveloped.用例是用模型化会话的方式来描述系统可能会执行或显示的特定功能,这些会话发生在用户、外部系统或其它实体与将开发的系统之间。
2、Listatleast7kindsofUML
类图、对象图、用例图、顺序图、协作图、状态图、活动图、构件图、配置图(实施图)
3、whatisUseCase?
Whatelementsdoseithave?
Ausecasedescribesparticularfunctionalitythatasystemissupposedtoperformorexhibitbymodelingthedialogthatauser,externalsystem,orotherentitywillhavewiththesystemtobedeveloped.
UsecaseDiagramshavefourelements:
Actors执行者(与系统交互的实体)
Cases实例(对系统功能某方面的描述)
Extensions扩充(对用例的扩充)
Uses使用(复用已定义的用例)
4、比较结构化软件设计方法与面向对象软件设计方法的特点。
从概念方面看
结构化软件是功能的集合,通过模块以及模块和模块之间的分层调用关系实现;
面向对象软件是事物的集合,通过对象以及对象和对象之间的通讯联系实现;
从构成方面看
结构化软件=过程+数据,以过程为中心;
面向对象软件=(数据+相应操作)的封装,以数据为中心;
从运行控制方面看
结构化软件采用顺序处理方式,由过程驱动控制;
面向对象软件采用交互式、并行处理方式,由消息驱动控制;
从开发方面看
结构化方法的工作重点是设计;
面向对象方法的工作重点是分析;在结构化方法中,分析阶段和设计阶段采用了不相吻合的表达方式,需要把在分析阶段采用的具有网络特征的数据流图转换为设计阶段采用的具有分层特征的结构图,在面向对象方法中则不存在这一问题。
从应用方面看
结构化方法更加适合数据类型比较简单的数值计算和数据统计管理软件的开发;
面向对象方法更加适合大型复杂的人机交互式软件和数据统计管理软件的开发。
5、什么叫面向对象?
面向对象方法的特点是什么?
关于“面向对象”,有许多不同的看法。
Coad和Yourdon给出了一个定义:
“面向对象=对象+类+继承+消息通信”。
如果一个软件系统是使用这样4个概念设计和实现的,则认为这个软件系统是面向对象的。
面向对象方法的特点是:
方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。
从生存期的一个阶段到下一个阶段的高度连续性,即生存期后一阶段的成果只是在前一阶段成果的补充和修改。
把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。
6、什么是“对象”?
识别对象时将潜在对象分成7类,试给出这7类对象的名称。
对象的定义:
对象是面向对象开发模式的基本成分,是现实世界中个体或事物的抽象表示。
每个对象可由一组属性和它可以执行的一组操作来定义。
可能的潜在对象有7类:
外部实体:
它们产生或接受为目标系统所使用的信息。
如各种物理设备、使用人员、其它相关的子系统。
事物:
问题的信息域所涉及的概念实体。
如各种报告、显示、文字、信号、规格说明等。
事件:
系统运行时发生的并需要系统记忆的事件。
如状态转换、物理运动等。
角色:
与系统有交互的各种人员所扮演的角色。
如经理、工程师、销售人员等。
场所或位置:
建立系统整体环境或问题上下文的场所、位置。
如基于计算机的系统的安装场所等。
部门、组织、组织机构:
与应用有关的组织机构。
结构:
定义由一组成分对象组成的聚合对象,或在极端情况下,定义对象的相关类。
如传感器、四轮驱动车、计算机等。
7、什么是“类”?
“类”与传统的数据类型有什么关系?
有什么区别?
把具有相同特征和行为的对象归在一起就形成了类。
类成为某些对象的模板,抽象地描述了属于该类的全部对象的属性和操作。
类,就它是一个数据值的聚合的意义上来看,与Pascal中的记录或C中的结构类似,但又有差别。
类扩展了通常的记录语义,可提供各种级别的可访问性。
类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。
8、按照类生存期,类的开发有哪几种方式?
按照类生存期,类的开发有三种方式。
(1)既存类的复用
(2)从既存类进行演化
(3)从废弃型进行开发
9、在类的设计中需要遵循的方针是什么?
三个主要的设计准则:
抽象、信息隐蔽和模块化如何才能作到?
在设计类时需要遵循的方针是:
信息隐蔽:
通过信息隐蔽可保护类的存储表示不被其它类的实例直接存取。
消息限制:
该类实例的用户应当只能使用界面提供的操作。
狭窄界面:
只有对其它类的实例是必要的操作才放到界面上。
强内聚:
模块内部各个部分之间应有较强的关系,它们不能分别标识。
弱耦合:
一个单独模块应尽量不依赖于其它模块。
显式信息传递:
两个类之间的交互应当仅涉及显式信息传递。
派生类当做派生类型:
每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集。
抽象类:
某些语言提供了一个类,用它做为继承结构的开始点,所有用户定义的类都直接或间接以这个类为基类。
为了在类的设计中做到抽象、信息隐蔽和模块化要以类作为系统的基本模块单元,通过一般化―特殊化关系和整体―部分关系,搭建整个系统的类层次结构,实现数据抽象和过程抽象;将数据和相关的操作封装在类内部,建立共有、私有和子类型等存取级别,将数据表示定义成为类的私有成员,实现信息隐蔽。
通过建立类属性(类模板),将某些有可复用要求的类设计成在数据类型上通用的可复用的软件构件,这样有助于实现模块化。
10、在类的通过复用的设计中,主要的继承关系有哪几种?
在类的通过复用的设计中,主要的继承关系有两大类:
配置:
利用既存类来设计类,可能会要求由既存类的实例提供类的某些特性。
通过把相应类的实例声明为新类的属性来配置新类。
演变:
要开发的新类可能与一个既存类非常类似,但不完全相同。
此时可以从一个既存类演变成一个新类,可以利用继承机制来表示一般化―特殊化的关系。
特殊化处理有三种可能的方式。
六、应用题
1、在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种交互的行为
首先建立事件追踪图,用于描述用户与系统的一次交互行为。
在图中,按时间的先后次序以及事件的发送和接收顺序,自上而下画出。
根据事件追踪图建立的状态图如下:
2、开发一个学生指纹考勤系统对学生上课的出勤率进行统计,学生在每次上课前和下课后使用该系统进行指纹识别,即系统识别学生的指纹,然后将识别的指纹信息与系统中保存的学生指纹信息进行匹配,如果匹配成功则将识别出的学生身份和当前日期、时间等信息保存到学生出勤数据库中;如果匹配不成功,则返回错误信息,学生需再次进行指纹输入;教务人员可以在需要的时候使用该系统生成学生的出勤情况统计分析表。
假设在该学生指纹考勤系统中,有一个用例名为“上课登记”。
此用例允许学生在上课前使用系统识别自己的指纹信息进而识别自己的身份,同时系统可以将登录信息存储在数据库中。
“上课登记”用例的主要事件流如下:
学生从系统菜单中选择“上课登记”(studentselect“entranceregistry”fromthesystemmenu);
系统显示指纹识别界面;(thesystemdisplaythefingerprintrecognizeinterface)
学生将手指放置于界面上;(studentpresstherightfingerontheinterface)
系统捕获并识别学生的指纹,向学生返回识别的身份信息;(thesystemcaptureandrecognizethestudent’sfingerprintandreturntherecognizedidentityinformation)
学生选择“确认”按钮;(studentselectthe“confirm”button)
系统生成一个关于该登记学生及当前日期、时间的新记录,并将该记录保存到数据库中。
(thesystemcreateanewrecordaboutthestudent,dateandtime,andsavethisrecordinformationtothedatabase)
要求:
(1)画出状态图;
(2)画出UML顺序图;(3)画出分层的数据流图。