您好,欢迎访问三七文档
案例分析第9章一、银行网络系统ATM二、医院病房监护系统三、会议管理系统案例采用OMT(ObjectModelTechnology)方法对银行网络系统ATM(AutoTradeMachine)进行分析和设计。一、问题的陈述银行网络系统包括人工出纳和分行共享的自动出纳机;各分理处用自己的计算机处理业务(保存帐户、处理事务等);各分理处与出纳站通过网络通信;出纳站录入帐户和事务数据;自动出纳机与分行计算机通信;自动出纳机与用户接口,接受现金卡;发放现金;打印收据;分行计算机与拨款分理处结帐。要求系统正确处理同一帐户的并发访问;网络费用平均摊派给各分理处。图1给出了银行网络系统的示意图。银行网络系统ATM(AutoTradeMachine)自动出纳机自动出纳机自动出纳机出纳站分理处计算机分理处计算机出纳站帐户帐户图1银行网络系统的示意图用户分行计算机退出首页下页末页案例一二、类的识别方法常用的识别类的方法有:名词识别法、系统实体识别法、使用重用、从用例中识别类等。1、名词识别法识别问题域中的实体,实体的描述通常用名词、名词短语、名词性代词的形式出现。用指定语言对系统进行描述;从系统描述中标识名词、名词短语、名词性代词;识别确定(取、舍)类。2、系统实体识别法不关心系统的运作流程及实体之间的通信状态,而只考虑系统中的人员、组织、地点、表格、报告等实体,经过分析将他们识别为类(或对象)。被标识的实体有:系统需要存储、分析、处理的信息实体、系统内部需要处理的设备、与系统交互的外部系统、系统相关人员、系统的组织实体。在确定类时,常使用两类技术:⑴分解技术将整体类和组合类分解。可控制单个类的规模。⑵抽象技术根据一些类的相似性建立抽象类,并建立抽象类与这些类之间的继承关系。抽象类实现了系统内部的重用,很好地控制了复杂性,并为所有子类定义了一个公共的界面,使设计局部化,提高系统的可修改性和可维护性。退出上页首页下页末页三、建立对象模型根据下述原则进一步确定类:①去掉冗余类:如两个类表述同一信息,应保留最具有描述能力的类,如“用户”与“顾客”是重复的描述,由于“顾客”更具有描述性,故保留它,删除“用户”。②去掉不相干的类:删除与问题无关或关系不大的类,如“费用”。③删除模糊的类:有些初始类边界定义不确切,或范围太广,应该删除。如“系统”、“安全措施”、“记录保管”、“银行网络”。④删除那些性质独立性不强的,而应该是类“属性”的候选类:如“帐户数据”、“收据”、“现金”、“事务数据”。⑤所描述的操作不适宜作为对象类,并被其自身所操纵,所描述的只是实现过程中的暂时的对象,应删去。如“软件”,“访问”。(一)确定类采用名词识别法:检查问题陈述中的所有名词,得到初始类:软件银行网络分行计算机系统分行出纳站分理处分理处计算机自动出纳机出纳员帐户数据帐户现金卡事务数据用户顾客收据记录保管事务费用安全措施访问现金最终确定的类为:分行计算机分行出纳站出纳员分理处分理处计算机自动出纳机帐户现金卡事务顾客退出上页首页下页末页(二)为每个建模实体准备数据词典—描述模板对类进行精确描述,如ATM系统中类的范围、成员、方法的限制等。(三)确定关联两个或多个类之间的相互依赖关系就是关联,实现关联的方式有多种。关联通常用描述性动词和动词词组表示。可以从问题陈述中抽去所有可能的关联表述,在银行网络系统示例中所有可能的关联,大多数是直接抽取问题中的动词词组而得到的。但在陈述中,有些动词词组表述的关联是不明显的,或在问题陈述中是找不到的,还有一些关联与客观世界或人的假设有关,必须同用户一起确定这种关联。即关联通常由以下方面确定:1、银行网络系统问题陈述中抽取可能的关联(动词词组)2、隐含的动词词组3、基于问题域的知识4、去掉不必要和不正确的关联三、建立对象模型退出上页首页下页末页1、银行网络系统问题陈述中的关联银行网络包括出纳站和自动出纳机。分行共享自动出纳机分理处提供分理处计算机分理处计算机保存帐户分理处计算机处理帐户支付事务分理处拥有出纳站出纳站与分行计算机通信出纳员为帐户录入事务自动出纳机接受现金卡自动出纳机与用户接口自动出纳机发放现金自动出纳机打印收据系统处理并发访问分理处提供软件费用分摊给分理处3、基于问题域的知识分理处雇佣的出纳员现金卡访问帐户2、隐含的动词词组分行由分理处组成分理处拥有帐户分行拥有分行计算机系统提供记录保管系统提供安全顾客有现金卡(三)确定关联退出上页首页下页末页4、去掉不必要和不正确的关联使用下列标准去掉不必要和不正确的关联:(1)若某个类已被删除,那么与它有关的关联也必须删除或者用其他类来重新表述。在示例中,删除了“银行网络”,相关的关联也要删除。(2)不相干的关联或实现阶段的关联。删除所有问题域之外的关联或涉及实现结构中的关联,如“系统处理并发访问”就是一种实现的概念。(3)动作。关联应描述应用域的结构性质而不是瞬时事件,因此应删除“自动出纳机接受现金卡”,“自动出纳机与用户接口”等。(4)派生关联,省略那些可以用其他关联来定义的关联。因为这种关联是冗余的。银行网络系统的初步对象图如图2所示,其中含有关联。(三)确定关联退出上页首页下页末页图2初始对象图建立对象模型图2银行网络系统的初始对象类图分行分理处帐户顾客分行计算机自动出纳机远程事务分理处计算机出纳员现金卡出纳站出纳事务通信通信所有所有所有雇佣涉及涉及访问认可有有拥有组成录入由录入录入退出上页首页下页末页(四)确定类属性属性通常用修饰性的名词词组来表示。属性一般不可能在问题陈述中完全表述出来,应分析应用领域,并考虑最主要的属性。只考虑与具体应用直接相关的属性,不要考虑那些超出问题范围的属性;找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字。按下列标准删除不必要的和不正确的属性:(1)限定词:若属性值固定下来后,能减少关联的重数,则可考虑把该属性重新表述为一个限定词。如银行码、站代码及雇员号等是限定词,不作为属性。(2)内部值:若属性描述了对象的非公开的内部状态,则应从对象模型中删除该属性。(3)细化:在分析阶段应忽略那些不可能对大多数操作有影响的属性。图3给出了银行网络系统对象模型的部分属性。退出上页首页下页末页确定类属性退出上页首页下页末页图3银行网络系统的部分属性自动出纳机分发现金远程事务种类,日期,时间,数量顾客名字地址现金卡密码雇员号站代码分理处名字帐户号卡片码银行码分理处计算机帐户余额、类型贷款限定出纳员名字出纳事务出纳站银行码分行分行计算机银行码站代码(五)使用继承来细化类使用继承来共享公共结构,以此来重新组织类:1、自底而上将现有类的共性一般化为父类。找出具有相同属性、关联、操作的类,来发现继承,例如:“出纳事务”和“远程事务”其属性与主要操作是是类似的,则将它们的共性一般化,得到父类“事务”。2、自顶而下将现有类细化为更具体的子类。若假设的具体化与现有的类发生冲突,则说明该类结构不恰当,当同一关联名多次出现,且意义也相同时,应尽量具体化为相联系的类。例如“事务”从“出纳站”和“自动出纳机”进入,“录入站”就是“出纳站”和“自动出纳机”的一般化。图4给出了加入继承后银行网络系统的对象模型。退出上页首页下页末页图4使用继承来细化类退出上页首页下页末页图4银行网络系统的对象模型银行码出纳站录入站远程事务帐户余额、类型贷款限定顾客名字地址出纳员名字现金卡密码事务种类,日期,时间,数量分行计算机银行码站代码银行码分行自动出纳机分发现金出纳事务雇员号站代码分理处名字帐户号卡片码银行码分理处计算机(六)完善对象模型在软件开发的全过程中,需要不断地完善对象模型。可以从以下几方面考虑:1、检查是否有缺少的对象如果一个类中,存在毫无关系的属性和操作,则应该分解这个类。一般化体系不清楚,可分离为两个类。存在名称及目的相同的冗余关联,则通过一般化创建一个父类,并组织关联。2、查找多余的类若类中缺少属性、操作和关联,删除该类。3、查找缺少的关联4、系统的改进⑴现金卡有多个独立的特性,分解为卡片权限和现金卡。卡片权限是银行用来鉴别用户访问权限的卡片,表示一个或多个用户帐户的访问权限;各个卡片权限对象中可能具有好几个现金卡,每张都带有安全码、卡片码,它们附在现金卡上,表示银行的卡片权限。现金卡是自动出纳机得到标识码的数据卡片,它也是银行代码和现金卡代码的数据载体。⑵为了“事务”与“帐户”之间的传输描述具有一般性,增加“更新”。因为一般在每个帐户中,一个“事务”包括一个或多个“更新”,一个“更新”是对帐户的一个动作,它们是取款、存款、查询之一。即事务由若干更新组成,更多涉及到帐户。⑶由于“分理处”与“分理处计算机”之间的区别不影响分析,可将“分理处计算机”并入“分理处”。同理,将“分行计算机”并入“分行”。以上改进如图5所示。退出上页首页下页末页图5完善对象模型退出上页首页下页末页图5修改后的对象模型录入站远程事务现金卡银行名、卡片码安全号出纳员事务出纳员名字出纳站分行银行码站代码帐户余额、类型贷款限定顾客名字地址自动出纳机分发现金事务种类、日期、时间、数量卡片权限密码、限制更新数量、类型雇员号站代码分理处名字帐户号卡片码录入组成拥有拥有雇用访问标识发行被录入开始涉及维持有有四、建立动态模型动态分析从寻找外部可见的模拟和响应事件开始,确定各对象的可能事件的顺序,在分析阶段不考虑算法的执行,它是实现模型的一部分。通常动态模型有:事件跟踪表、状态图。建立动态模型的步骤分为4步:1、准备典型的对话脚本脚本是事件序列,每当系统中的对象与外部用户发生互换信息时,就产生一个事件,所互换的信息值就是该事件的参数。对于各事件,应确定触发事件的动作对象和该事件的参数。包括“正常脚本”、“例外脚本”,自动出纳机与用户交互的正常的脚本如下所示:⑴自动出纳机请求用户插入卡片;用户插入现金卡。⑵自动出纳机接受卡片并读出它的卡号。⑶自动出纳机要求密码,用户键入密码“4011”。⑷自动出纳机与分行确认卡号和密码;分理处检查它并通知承兑的自动出纳机。⑸自动出纳机要求选择事务类型(取款、存款、转户及查询),用户选择取款。⑹自动出纳机要求现金数量;用户输入¥100。⑺自动出纳机要求分行处理事务;分行把要求转给分理处,确认事务成功。⑻自动出纳机分发现金并且要求用户取现金;用户取现金。⑼自动出纳机提示用户是否想继续;用户指出不继续。⑽自动出纳机打印收据,退出卡,并请求用户取出它们;用户拿走收据和卡。⑾自动出纳机请求用户插入。退出上页首页下页末页自动出纳机与用户交互的例外的脚本如下所示:⑴自动出纳机请求用户插入卡;用户插入现金卡。⑵自动出纳机接受卡并读它的卡号。⑶自动出纳机要求密码;用户键入:9999:。⑷自动出纳机与分行确认卡号和密码,在咨询分理处后拒绝它。⑸自动出纳机指示密码错并要求重新键入;用户键入:4011:,分行确认成功。⑹自动出纳机请求用户选择事务类型;用户选择取款。⑺自动出纳机请求键入现金数量;用户改变选择并键入“CANCEL”(取消)。⑻自动出纳机退出卡并且请求用户拿走卡;用户取出卡。⑼自动出纳机请求用户插入卡。2、确定事件根据脚本确定所有的外部事件,事件包括:发送者、接收者、外设信号、输入、中断、转换和动作等。使用脚本可以发现正常事件,但不要遗漏条件和异常事件。3、画出事件跟踪表把脚本表示成一个事件跟踪表,即不同对象间的事件排序表,图6给出了银行网络系统的事件跟踪表。图7给出了事件流图,它给出类之间的所有事件。事件流图是对象图的一个动态对照,对象图中路径反映了可能的信息流,而事件流图反映了可能的控制流。退出上页首页下页末页退出上页首页下页末页图6银行网络系统的事件追综图用户自动出纳机分行分理处确认帐号插入卡要求密码输入密码要求类型输入类型要求数量输入数量分发现金要求取现金取现金提示继续终止打印收椐退出卡要求取卡取卡显示屏确认银行卡银行帐户正确处理银行事务银行事务成功帐户正确处理
本文标题:面向对象案例分析
链接地址:https://www.777doc.com/doc-7408776 .html