软工题第七章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章习题一、选择题1.表示对象相互行为的模型是()模型。A.动态模型B.功能模型C.对象模型D.静态模型2.类常常被看做是一个抽象数据类型的实现,更合适的是把类看做是某种(A)的一个模型。事实上,类是单个的(B)语义单元。类的用户能够操纵的操作叫做类的(C)。类定义的其余部分给出数据定义和辅助功能定义,包括类的实现。类的实现常常包括了其它类的实例,这些实例(D)被其它对象存取,包括同一个类的其它实例。类的实现可能还包括某些私有方法,实现它们的类可以使用,而其它任何对象都不能使用。类,就它是一个数据值的聚合的意义上来看,与Pascal中的记录或C中的结构类似,但又有差别。类扩展了通常的记录语义,可提供各种级别的(E)。类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。供选择的答案:A.①功能②概念③结构④数据B.①语法②词法③语义④上下文环境C.①界面②操作③行为④活动D.①可自由地②可有控制地③可通过继承④应受保护不E.①可移植性②可重复性③可访问性④继承性二、简答题1.应该根据什么准则来评价用例图?2.应该根据什么准则来评价脚本?3.应该根据什么准则来评价状态图?4.用非正式分析法分析确定下述杂货店问题中的对象。一家杂货店想使其库存管理自动化。这家杂货店拥有能够记录顾客购买的所有商品的名称和数量的销售终端。顾客服务台也有类似的终端,以处理顾客的退货。它在码头有另一个终端处理供应商发货。肉食部和农产品部有终端用于输入由于损耗导致的损失和折扣。5.确定第4题所述杂货店问题中对象类之间可能有的继承关系。6.建立下述牙科诊所管理系统的对象模型:王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。7.建立第6题所述牙科诊所管理系统的用例模型。8.用数据流图建立第6题所述牙科诊所管理系统的功能模型。9.写出第6题所述牙科诊所管理系统的脚本。10.画出第6题所述牙科诊所管理系统的状态图。第七章习题解答一、选择题1.A2.答案:A.②,B.③,C.①,D.④,E.③分析:类常常被看做是一个抽象数据类型的实现。这个定义不太够,更合适的是把类看做是某种概念的一个模型。事实上,类是单个的语义单元,它可以更自然地管理系统中的对象,匹配数据定义与操作。许多面向对象范型的语言都提供数据抽象机制。这个机制为类定义提供了一个手段,以指明类的用户能够操纵的操作。这组操作叫做类的界面。类定义的其余部分给出数据定义和辅助功能定义,包括类的实现。这种分离把类的用户与类内部修改的影响隔离开来。类的实现常常包括了其它类的实例,它们往往提供了新类所需要的服务。这些实例应受保护不被其它对象存取,包括同一个类的其它实例。类的实现可能还包括某些私有方法,实现它们的类可以使用,而其它任何对象都不能使用。类,就它是一个数据值的聚合的意义上来看,与Pascal中的记录或C中的结构类似,但又有差别。类扩展了通常的记录语义,可提供各种级别的可访问性。也就是说,记录的某些成份可能是不可访问的,而这些成份对于本记录型来说具有可访问性。类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。二、简答题1.答:用例图从用户的观点来描述系统的功能,因此,必须包含用户关心的所有关键功能。2.答:脚本必须从用户的观点来描述每个重要的功能序列,因此,脚本应该能够说明系统的一类重要功能或具体的使用方法。3.答:状态图应该描绘所有可能的状态转换。图中每条弧都要有一个引起状态转换的事件。从开始结点(初态)到每个结点(中间状态),以及从每个结点到最终结点(终态),都必须有一条路径。4.答:非正式分析也称为词法分析,这种方法把用自然语言书写的需求陈述中的名称作为候选的对象。从对杂货店问题的描述中,可以找出下列名称作为对象的候选者:杂货店,库存,顾客,商品,名称,数量,销售终端,服务台,终端,退货,码头,供应商,发货,肉食部,农产品部,损耗,损失,折扣。其中,“退货”粗看起来是动词,好像应该作为操作的候选者,但是,经仔细分析可知,退货包含货物名称、数量、价格等属性,实际上是一类对象。类似地,“发货”也应该作为一类对象。词法分析仅仅帮助我们找到一些候选的对象,接下来应该严格考察每个候选对象,从中删去不正确的或不必要的,只保留确实应该记录其信息或需要其提供服务的那些对象。具体说到杂货店问题,“名称”和“数量”实际上是顾客所购买的商品的属性,不是独立存在的对象;“销售终端”和“终端”是同样的硬件设备,使用统一的名字“终端”就可以了;“服务台”和“码头”是放置某些终端的地点,它们与本软件关系不大,应该删掉;“肉食部”和“农产品部”是杂货店的两个部门,本软件并不处理杂货店的组织管理问题,因此,它们不是本问题域中的对象,但是,从这两个部门可以想到,杂货店有“肉食品”和“农产品”这样两类特殊的商品,应该把这两类商品作为问题域中的两类对象。损耗是导致损失和折扣的原因,不是独立的对象。综上所述,杂货店问题域中的对象有:杂货店,库存,顾客,商品,终端,退货,供应商,发货,肉食品,农产品,损失,折扣。5.答:继承关系是“A_KIND_OF”(“是一种”)关系,也就是说,基类是公共的对象类,派生类是一种特殊的基类。通常,有两种常用的方法可以确定问题域中对象类之间可能存在的继承关系:自顶向下方法通过研究已知的对象类在问题域中的行为和作用,找出在某些情况下需要特殊处理并且具有特殊属性的对象,从而把现有的对象类细化成更具体的子类。自底向上方法与自顶向下方法相反,这种方法对类似的对象类进行分组,然后寻找它们之间的共性,所有相似的类的交集构成基类。也就是说,自底向上方法抽象出某些相似的类的共同特性(属性和操作),泛化出父类。具体到杂货店问题,自顶向下方法有助于使我们认识到,销售肉食品和销售农产品的方法并不相同,它们是两类不同的商品。因此,应该把商品作为父类,把肉食品和农产品作为由它派生出的子类。如果询问杂货店经理,还能知道更多的商品种类,也就是说,可以确定商品类的更多派生类。使用自底向上方法可以发现,“损失”、“折扣”、“退货”、“商品”等对象类有共同性质(例如,名称、数量、金额),因此,应该设立一个基类“交易”,从它派生出具体的交易类。图7.1描绘了杂货店问题域中类之间的继承关系。图7.1杂货店问题域中类的继承关系在图7.1中仅画出了存在继承关系的那些类,没有画出没有继承关系的类。6.答:从对牙科诊所问题的陈述中个,可以找出下列名称作为对象的候选者:王大夫,小镇,牙科诊所,牙科助手,牙科保育员,接待员,软件系统,预约,病人,预约登记表,就诊时间,预约时间,约定时间,系统,名字,记录的病人数据,病历号,姓名,日期,预约信息,病人清单,病人记录,电话号码,每天工作安排,每周工作安排。通常,通过词法分析找到的候选对象中有许多并不是问题域中真正有意义的对象,因此,必须对这些候选对象进行严格的筛选,从中删去不正确的或不必要的,只保留确实应该记录其信息或需要其提供服务的那些对象。具体说到牙科诊所问题,“王大夫”只不过是牙医的一个实例,实际上,本软件系统的主要功能是管理病人的预约,并不关心诊所内每名工作人员的分工,因此,牙医、牙科助手、牙科保育员和接待员都不是问题域中的对象;“小镇”是牙科诊所的地址属性,不是独立的对象;“软件系统”和“系统”是同义词,指的是将要开发的软件产品,不是问题域中的对象;“就诊时间”、“预约时间”和“约定时间”在本问题陈述中的含义相同,指的都是预约的就诊时间,实际上,预约的就诊时间既包括日期又包括时间,但是,它们是预约登记表包含的属性,不是问题域中的独立的对象;“名字”和“姓名”是同义词,应该作为病人和预约登记表的属性;“记录的病人数据”实际上就是“病人记录”,可以统一使用“病人记录”作为对象名;“病历号”和“电话号码”是病人记录的属性,不是独立的对象;从问题陈述可知,“病人清单”是已预约但尚未就诊的病人名单,应该包含病人姓名、预约的就诊时间等内容,它和“预约信息”包含的内容基本相同,可以只保留“病人清单”作为问题域中的对象。接下来分析确定问题域中对象彼此之间的关系。“每天工作安排”和“每周工作安排”有许多共同点,可以从它们泛化出一个父类“工作安排”。此外,问题域的对象之间还有下述关联关系:牙科诊所诊治多名病人;一位病人有一份病人记录;一位病人可能预约多次也可能一次也没预约;牙科诊所在一段时间内将打印出多份病人清单;牙科诊所开业以来已经建立了多份预约登记表;预约登记表中记录了多位病人的预约;根据预约登记表在不同时间可以制定出不同的工作安排。综上所述,可以画出图7.2所示的牙科诊所管理系统的对象模型。图7.2牙科诊所对象模型7.答:用例图从用户角度描述系统的功能,它必须包含用户关心的所有关键功能。用户通常就是用例图中的行为者。为了画出系统的用例图,首先应该找出系统的用户,然后根据用户对系统功能的需求确定用例。从对牙科诊所问题的陈述可知,接待员负责处理病人预约事务,为此他需要访问预约登记表和病人记录,接待员也可以取消预约,此外,接待员还可以根据预约登记表打印出关于所有病人的每天和每周的工作安排,牙医将按照工作安排诊治病人;在病人就诊后,助手和保育员将标记相应的预约诊治已完成,必要时还将安排病人下次再来,也就是说,他们将更新预约登记表的内容;系统能够按照病人姓名和日期查询预约信息,这项功能需求虽然没有指明行为者,但是这并不意味着没有行为者也可以有用例,事实上,一个用例至少必须与一个行为者相关联,可以认为“查询预约”这个用例的行为者是牙科诊所的职员。在牙科诊所问题中,没有必要区分接待员、助手和保育员在业务工作中扮演的不同角色,可以把他们统称为职员。综上所述,可以画出图7.3所示的牙科诊所管理系统的用例图。图7.3牙科诊所管理系统的用例图8.答:从牙科诊所管理系统的需求陈述得知,当进行预约时病人提供姓名、希望的就诊日期等数据,系统查询预约登记表,以确定一个有效的就诊日期,此外,系统还将查询病人记录以获得病历号等病人数据。在每次预约诊治完成之后,应该更新预约登记表,以标记相应的预约诊治已经完成,必要时将约定下次就诊日期。诊所职员可以按照病人姓名和日期查询预约信息,也可以取消预约。此外,系统可以打印出每天和每周的工作安排给牙医。根据上述的系统功能,可以画出图7.4所示的牙科诊所管理系统的数据流图。图7.4牙科诊所管理系统的数据流图9.答:脚本从用户角度描述系统典型的工作过程。根据对牙医诊所管理系统的需求,至少可以设想出下述3个脚本。(1)正常情况病人甲请求预约。系统识别出病人的姓名。系统建议一个就诊时间。病人同意该时间,接待员输入该预约。在预约的就诊日期来到之前两天,系统输出一份包含病人姓名和电话号码等信息的提醒单。接待员打电话提醒病人。病人如约来到。治疗完之后,牙医助手安排该病人的下一次预约。(2)新病人病人乙请求预约。系统不认识该病人的名字,必须把该病人的信息输入到病人记录系统中并为他建立一个记录。(3)多个预约病人丙请求在未来两年内进行16次预约。接待员将其姓名输入到系统中,系统提出建议的预约就诊时间,病人同意后接待员输入病人认可的预约。10.答:状态图描绘系统可能有的状态转换。牙科诊所管理系统的主要功能是实现病人预约,根据需求陈述和

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功