📄 200603101726185.html
字号:
<P> 动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构,它表示了瞬间的、行为化的系统控制<BR>性质,它关心的是系统的控制,操作的执行顺序,它表示从对象的事件和状态的角度出发,表现了对象的相互行为。<BR>该模型描述的系统属性是触发事件、事件序列、状态、事件与状态的组织。使用<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604161451045.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604161451045.html'" tppabs="http://www.itisedu.com/phrase/200604161451045.html" target="_new">状态图</a>作为描述工具。它涉及到事件、状态、操作等重要概念。<BR> 1.事件<BR> 事件是指定时刻发生的某件事。</P>
<P><IMG src="2006310222938590.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/2006310222938590.jpg" border=0></P>
<P> 2.状态<BR> 状态是对象属性值的抽象。对象的属性值按照影响对象显著行为的性质将其归并到一个状态中去。状态指明了对象<BR>对输入事件的响应。</P>
<P> 3.状态图</P>
<P> 状态图是一个标准的计算机概念,他是有限自动机的图形表示,这里把状态图作为建立动态模型的图形工具。<BR> 状态图反映了状态与事件的关系。当接收一事件时,下一状态就取决于当前状态和所接收的该事件,由该事件引起的状态变化称为转换。<BR> 状态图是一种图,用结点表示状态,结点用圆圈表示;圆圈内有状态名,用箭头连线表示状态的转换,上面标记事件名,箭头方向表示转换的方向。</P>
<P><IMG src="2006310223014498.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/2006310223014498.jpg" border=0></P>
<P><STRONG>·功能模型</STRONG></P>
<P> 功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入值得到输出值,它不考虑计算的次序。功能模型由多张数据流图组成。数据流图用来表示从源对象到目标对象的数据值的流向,它不包含控制信息,控制信息在动态模型中表示,同时数据流图也不表示对象中值的组织,值的组织在对象模型中表示。图10-15给出了一个窗口系统的图标显示的数据流图。</P>
<P><IMG src="2006310223114280.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/2006310223114280.jpg" border=0></P>
<P> 数据流图中包含有处理、数据流、动作对象和数据存储对象。</P>
<P> 1.处理<BR> 数据流图中的处理用来改变数据值。最低层处理是纯粹的函数,一张完整的数据流图是一个高层处理。</P>
<P><IMG src="2006310223135110.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/2006310223135110.jpg" border=0></P>
<P> 2.数据流<BR> 数据流图中的数据流将对象的输出与处理、处理与对象的输入、处理与处理联系起来。在一个计算机中,用数据流来表示一中间数据值,数据流不能改变数据值。</P>
<P> 3.动作对象<BR> 动作对象是一种主动对象,它通过生成或者使用数据值来驱动数据流图。</P>
<P> 4.数据存储对象<BR> 数据流图中的数据存储是被动对象,它用来存储数据。它与动作对象不一样,数据存储本身不产生任何操作,它只响应存储和访问的要求。 </P><FONT face=Verdana>
<P><BR><STRONG>六、面向对象的分析</STRONG></P>
<P> <a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231254345.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231254345.html'" tppabs="http://www.itisedu.com/phrase/200604231254345.html" target="_new">面向对象分析</a>的目的是对客观世界的系统进行建模。本节以上面介绍的模型概念为基础,结合“银行网络系统”的具体实例来构造客观世界问题的准确、严密的分析模型。<BR> 分析模型有三种用途:用来明确问题需求;为用户和开发人员提供明确需求;为用户和开发人员提供一个协商的基础,作为后继的设计和实现的框架。</P>
<P>(一) 面向对象的分析</P>
<P><IMG src="20063102300722.gif" tppabs="http://www.itisedu.com/manage/Upload/image/20063102300722.gif" border=0></P>
<P> 系统分析的第一步是:陈述需求。分析者必须同用户一块工作来提炼需求,因为这样才表示了用户的真实意图,其中涉及对需求的分析及查找丢失的信息。下面以“银行网络系统”为例,用<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200602281513385.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200602281513385.html'" tppabs="http://www.itisedu.com/phrase/200602281513385.html" target="_new">面向对象方法</a>进行开发。<BR>银行网络系统问题陈述: 设计支持银行网络的软件,银行网络包括人工出纳站和分行共享的自动出纳机。每个分理处用分理处计算机来保存各自的帐户,处理各自的事务;各自分理处的出纳站与分理处计算机通信,出纳站录入帐户和事务数据;自动出纳机与分行计算机通信,分行计算机与拨款分理处结帐,自动出纳机与用户接口接受现金卡,与分行计算机通信完成事务,发放现金,打印收据;系统需要记录保管和安全措施;系统必须正确处理同一帐户的并发访问;每个分处理为自己的计算机准备软件,银行网络费用根据顾客和现金卡的数目分摊给各分理处。<BR>图10-18给出银行网络系统的示意图。</P>
<P><IMG src="200631023322647.gif" tppabs="http://www.itisedu.com/manage/Upload/image/200631023322647.gif" border=0><BR>(二)建立对象模型</P>
<P> 首先标识和关联,因为它们影响了整体结构和解决问题的方法,其次是增加属性,进一步描述类和关联的基本网络,使用继承合并和组织类,最后操作增加到类中去作为构造动态模型和功能模型的副产品。</P>
<P> 1.确定类</P>
<P> 构造对象模型的第一步是标出来自问题域的相关的对象类,对象包括物理实体和概念。所有类在应用中都必须有意义,在问题陈述中,并非所有类都是明显给出的。有些是隐含在问题域或一般知识中的。</P>
<P>按图10-19所示的过程确定类<BR><IMG src="200631023340346.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/200631023340346.jpg" border=0> </P>
<P>查找问题陈述中的所有名词,产生如下的暂定类。<BR> 软件 银行网络 出纳员 自动出纳机 分行<BR> 分处理 分处理计算机 帐户 事务 出纳站<BR> 事务数据 分行计算机 现金卡 用户 现金<BR> 收据 系统 顾客 费用 帐户数据<BR> 访问 安全措施 记录保管</P>
<P> 根据下列标准,去掉不必要的类和不正确的类。<BR> (1) 冗余类:若两个类表述了同一个信息 ,保留最富有描述能力的类。如"用户"和"顾客"就是重复的描述,因为"顾客"最富有描述性,因此保留它。<BR> (2) 不相干的类:除掉与问题没有关系或根本无关的类。例如,摊派费用超出了银行网络的范围。<BR> (3) 模糊类:类必须是确定的,有些暂定类边界定义模糊或范围太广,如"记录保管"就模糊类,它是"事务"中的一部分。<BR> (4) 属性:某些名词描述的是其他对象的属性,则从暂定类中删除。如果某一性质的独立性很重要,就应该把他归属到类,而不把它作为属性。<BR> (5) 操作:如果问题陈述中的名词有动作含义,则描述的操作就不是类。但是具有自身性质而且需要独立存在的操作应该描述成类。如我们只构造电话模型,"拨号"就是动态模型的一部分而不是类,但在电话拨号系统中,"拨号"是一个重要的类,它日期、时间、受话地点等属性。</P>
<P> 在银行网络系统中,模糊类是"系统"、"安全措施"、"记录保管"、"银行网络"等。属于属性的有:"帐户数据"、"收据"、"现金"、"事务数据"。属于实现的如:"访问"、"软件"等。这些均应除去。</P>
<P> 2.准备数据字典</P>
<P> 为所有建模实体准备一个数据字典。准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制。</P>
<P> 3.确定关联</P>
<P> 两个或多个类之间的相互依赖就是关联。一种依赖表示一种关联,可用各种方式来实现关联,但在分析模型中应删除实现的考虑,以便设计时更为灵活。关联常用描述性动词或动词词组来表示,其中有物理位置的表示、传导的动作、通信、所有者关系、条件的满足等。从问题陈述中抽取所有可能的关联表述,把它们记下来,但不要过早去细化这些表述。</P>
<P> 下面是银行网络系统中所有可能的关联,大多数是直接抽取问题中的动词词组而得到的。在陈述中,有些动词词组表述的关联是不明显的。最后,还有一些关联与客观世界或人的假设有关,必须同用户一起核实这种关联,因为这种关联在问题陈述中找不到。</P>
<P> 银行网络问题陈述中的关联:<BR> ·银行网络包括出纳站和自动出纳机;<BR> ·分行共享自动出纳机;<BR> ·分理处提供分理处计算机;<BR> ·分理处计算机保存帐户;<BR> ·分理处计算机处理帐户支付事务;<BR> ·分理处拥有出纳站;<BR> ·出纳站与分理处计算机通信;<BR> ·出纳员为帐户录入事务;<BR> ·自动出纳机接受现金卡;<BR> ·自动出纳机与用户接口;<BR> ·自动出纳机发放现金;<BR> ·自动出纳机打印收据;<BR> ·系统处理并发访问;<BR> ·分理处提供软件;<BR> ·费用分摊给分理处。<BR> 隐含的动词词组:<BR> ·分行由分理处组成;<BR> ·分理处拥有帐户;<BR> ·分行拥有分行计算机;<BR> ·系统提供记录保管;<BR> ·系统提供安全;<BR> ·顾客有现金卡。<BR> 基于问题域知识的关联:<BR> ·分理处雇佣出纳员;<BR> ·现金卡访问帐户。</P>
<P> 使用下列标准去掉不必要和不正确的关联:</P>
<P> (1) 若某个类已被删除,那么与它有关的关联也必须删除或者用其它类来重新表述。在例中,我们删除了"银行网络",相关的关联也要删除。<BR> (2) 不相干的关联或实现阶段的关联:删除所有问题域之外的关联或涉及实现结构中的关联。如"系统处理并发访问"就是一种实现的概念。<BR> (3) 动作:关联应该描述应用域的结构性质而不是瞬时事件,因此应删除"自动出纳机接受现金卡","自动出纳机与用户接口"等。<BR> (4) 派生关联:省略那些可以用其他关联来定义的关联。因为这种关联是冗余的。银行网络系统的初步<a href="200604161646065.html" tppabs="http://www.itisedu.com/phrase/200604161646065.html" target="_new">对象图</a>如图10-20所示。其中含有关联。</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -