《面向对象分析与设计》习题及部分答案 第一章概论1.什么是面向对象方法?面向对象的基本原则主要有哪些?答:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思维方式来构造软件系统,这与传统的结构化方法从功能入手和信息工程化方法从信息入手是不一样的。面向对象的基本思想主要有:1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象)2)用对象的属性表示事物的性质;用对象的操作表示事物的行为。(属性与操作)3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。(对象的封装)4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。(分类)5)复杂的对象可以用简单的对象作为其构成部分。(聚合)6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档。(继承)7)对象之间通过消息进行通讯,以实现对象之间的动态联系。(消息)8)通过关联表示类(一组对象)之间的静态关系。(关联)2.与传统开发方法比,面向对象方法有什么优点?答:面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思维方式来构造软件系统,这与传统的结构化方法从功能入手和信息工程化方法从信息入手是不一样的。与传统方法相比,面向对象的方法主要优点有:1)从认识论的角度可以看出,面向对象方法改变了人们认识世界的方式;2)语言的发展——鸿沟变窄;3)面向对象方法使得从问题域到计算机间的鸿沟变窄;4)面向对象方法有助于软件的维护与复用;1(1)把易变的数据结构和部分功能封装在对象内并加以隐藏,一是保证了对象行为的可靠性;二是对它们的修改并不会影响其他的对象,有利于维护,对需求变化有较强的适应性。(2)封装性和继承性有利于复用对象。把对象的属性和操作捆绑在一起,提高了对象(作为模块)的内聚性,减少了与其他对象的耦合,这为复用对象提供了可能性和方便性。在继承结构中,特殊类对一般类的继承,本身就是对一般类的属性和操作的复用。5)面向对象方法有助于提高软件的质量和生产率。第二章什么是面向对象分析3.简述OOA模型及OOA过程。答:OOA模型如下图所示:包括基本模型(类图),需求模型(用况图),辅助模型(顺序图、活动图、状态图等)OOA过程如下图所示:关系层特征层对象层基本模型(类图)需求模型用况图辅助模型顺序图活动图状态图包图……模型规约给出所有与问题域和系统责任有定义每个对象类的属性通过已定义的关系描述对象对模型中的所有元对关系密切的元素打包,帮助理解系统模型。一幅顺序图表现完成某一项特定功能的一组对象之间的详细交互;一辐状态图描述了一个对象的状态变迁。活动图描述了一OOA模型捕捕获获与与描描述述用用户户的的要要求求个服务的流程或业务流程。 22各过程简单说明如下:建立需求模型:即定义用况,是辅助模型,可选。用用况对用户需求进行规范化描述。建立类图:基本模型,主要完成任务包括:*发现对象、定义对象类*识别对象的内部特征*识别对象的外部关系原型开发:可选,结合其他活动反复进行。建立交互图、状态图和活动图等:是辅助模型,可选。建立模型规约或详细说明:对模型中的成分进行规范的定义和文字说明。可以集中进行,也可分散在各个活动中。以上各个OOA过程总体来说是一个反复进行,不断完善的过程,以建立基本模型为中心,进行需求模型、基本模型、辅助模型的建立、修改与完善。4.简述问题域与系统责任间的关系。第三章用况图5.简述用况之间的包含关系、扩展关系与继承关系。答:1)包含关系基用况在它内部说明的某一(些)位置上显式地使用供应者用况的行为的结果。2)扩展关系3按基用况中指定的扩展条件,把扩展用况的行为插入到由基用况中的扩展点定义的位置。3)继承子用况继承父用况的行为和含义;子用况还可以增加或覆盖父用况的行为;子用况可以出现在父用况出现的任何位置(父和子均有具体的实例)。三种关系图例如下:基用况供应者《include》基用况扩展用况《exclude》一般用况特殊用况包含关系扩展关系继承关系6.论述用况图在面向对象方法中的地位。答:用况图主要用于对系统(子系统)的功能行为进行建模。画出用况图及描述用况是需求分析阶段的主要任务。建立用况图的主要益处有:•通过表示在语境中参与者如何与系统交互,使得系统、子系统和类对于用户和开发者易于探讨和理解。•易于对需求规范化•有利于进行OOA•有助于发现主动对象•对系统测试来说,产生测试用例。•有助于人机界面设计•……7.通常自动售货机会按用户的要求进行自动售货。供货员会巡查向其内供货,取款员会定时取款。请建立用况图,并描述各个用况,建立类图。答:(1)用况图4售货供货取货款顾客供货人取款员自动售货机系统(2)用况简单描述:售货:【前置条件】自动售货机系统启动成功,显示主界面,提示用户选择操作;顾客选择购物;选择商品;系统提示购物清单列表及总价;顾客确认后,投币;系统验证金额;如正确,则吐出商品。如金额不足,则退回钱币,提示金额不足。顾客确认后或超时(30秒无操作);系统返回主界面。供货:【前置条件】自动售货机系统启动成功,显示主界面,提示用户选择操作;供货人选择供货;系统提示供货人输入用户名和密码;供货人输入用户名和密码;系统进行验证,如通过则打开供货门,给出供货界面,否则显示输入错误;如通过,供货人可放入货品,并输入单价及数量;系统确认后,显示供货成功。供货人确认后或超时(30秒无操作);系统返回主界面。取货款:5【前置条件】自动售货机系统启动成功,显示主界面,提示用户选择操作;取款员选择取款;系统提示取款员输入用户名和密码;取款员输入用户名和密码;系统进行验证,如通过则打开款箱,否则显示输入错误;如通过,取款员取款;系统确认后,显示取款成功。取款员确认后或超时(30秒无操作);系统返回主界面。(3)类图顾客商品订单货款取款员供货员供货记录1..*1..*购买1..*1..*供货商品编号商品名称单价数量供货出货订单号订单时间订单明细订单金额支付状态生成订单支付订单取消订单供货编号时间明细生成供货记录帐户名称帐户密码身份验证金额取款付款帐户名称帐户密码身份验证11..*11..*取款付款第四章类图8.用关联类为公司和雇员之间的薪水关系建模。答:6公司雇员1..*1..*雇主职工工作公司工龄薪水9.为人们之间的婚姻关系建模。答:10.论述类与对象之间的关系.关联与链之间的关系。:是对象的集合;对象是类的具体实例。是建立对象之间关系的一种手段。实例11.包是由面包片组成的。讨论面包及其切片之间的关系是聚合还是组合。:包与面包片之间是组合关系。因为面包与面包片是整体与部分的关系,如果面答类关联是建立类之间关系的一种手段,而链则链表示对象间的物理与概念联结,关联表示类之间的一种关系,链是关联的,关联是链的抽象。面答面包没有了,面包片也就没有了。人0..10..1婚姻性别7聚合和组合的区别在于生命周期。组合中,随着A类的生命周期结束,B,C也结12.对下述问题,建立一个类图:有两种顾客,一种是常客,享受公司的一些五章建立辅助模型3.使用信用卡可以在AMT机上进行取款,针对一次取款,建立类图、顺序图。制一个类图(不要过于复杂)类图2)顺序图束。必须在A类里面使用。聚合中,随着A类的生命周期结束,B,C不一定结束。因此,面包与面包片之间是组合关系。针优惠待遇;另一种是散户。第1注意ATM机是与银行连网的。要求:(1)绘(2)绘制顺序图答:(1)略(813.提供清单12.请取钱11.提供货币10.想主系统提出要求9.输入金额8.取钱数量7验证正确6.验证密码5.输密码4.请输密码3.验证正确2.读取信息,并传送到主系统1.插卡用户:ATM系统:银行系统13.提供清单12.请取钱11.提供货币10.想主系统提出要求9.输入金额8.取钱数量7验证正确6.验证密码5.输密码4.请输密码3.验证正确2.读取信息,并传送到主系统1.插卡14.几台计算机公用一台打印机,打印机由打印服务器管理,请建立顺序图。答:9:计算机:打印服务器:打印机打印请求打印打印结束打印响应空闲:忙:等待忙15.针对简易电梯,建立状态图。答:16.在图书馆中,购入的书在半个月内为新书,以后为旧书。书无论新旧,都可以向外借阅。针对上述要求建立状态图。答:10新书旧书借阅购入半个月后借阅归还借阅归还期末考试题型一、填空(20分)二、判断对错(20分)三、简答题(40分)四、分析设计题(20分)11