欢迎来到天天文库
浏览记录
ID:21159318
大小:745.50 KB
页数:78页
时间:2018-10-20
《uml第6章 功能模型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章功能模型6.1功能模型6.2数据流图6.3指定的操作6.4约束6.5数据库应用中的功能模型6.6功能模型的实例6.7功能模型与对象模型和动态模型的关系功能模型描述系统内的计算。它和对象模型、动态模型共同构成系统模型结构的三大支柱。功能模型说明发生了什么,动态模型说明什么时候发生,而对象模型说明对象本身是什么。6.1功能模型功能模型不仅说明了在对象模型中操作的意义和在动态模型中的动作,而且说明了对对象模型的约束。虽然对象模型对所有基本数据结构的任一问题都很重要,但是许多交互程序也有一个有意义的功能模型。6.2数据流图一个数据流图(DFD,DataFlowDiagram)表示系统中被计算值
2、之间的功能关系,包括输入值、输出值和内部数据存储。数据流图包含了以下处理:数据转换的处理,转移数据的数据流,产生和使用数据的施动者(actor)对象以及数据存储(datastore)对象。图6-1显示了窗口系统的图标的显示数据流图。图6-16.2.1处理处理就是将数据值转换,最底层的处理是不受影响的纯功能性的。处理用包含转换描述(通常是它的名字)的椭圆表示。图6-2给出了两种处理。图6-2处理是在对象类上操作的方法(或方法片段)的实现。通常目标对象是一个输入流,特别是当同类对象作为输出流的情况下。但是在某种情况下,目标对象是隐含的。6.2.2数据流数据流连接对象的输出,或者另一对象输入的处理
3、,或是连接一个处理。数据流在数据值的产生者和使用者之间画一个箭头,该箭头上标有数据的描述,通常有其名字和类型。聚合的数据值能分裂成许多分量,每个分量用作不同的处理。每个数据流表示计算中某一点的值。数据流图的边界流是它的输入和输出,这些可能不被连接,或它们也可能与对象相连接。6.2.3施动者施动者(actor)是一个主动的对象,其对象是用产生或使用值的数据流图驱动的。施动者用矩形框表示,表示它是一个对象。施动者和图之间的箭头是图的输入和输出。6.2.4数据存储数据存储(datastore)是数据流图中用来存取和存储的被动对象。它与施动者不同,一个数据存储本身不产生任何操作,但至少对存储数据和访
4、问数据请求作出响应。数据存储用包含存储名的一对黑粗平行线表示。输入箭头表示修改已存数据的信息或操作,输出箭头表示从存储中检索信息。把对象视为单个数据和视为多值的数据存储之间是不同的。在图6-3中,可用顾客名从银行选择一个储户账户,这个操作的结果是账户对象本身,即它作为在修改操作中用作数据存储。图6-4表示在银行里一个新储户的账户建立,建立账户处理的结果是存入银行中的一个新账户。图6-3图6-46.2.5嵌套数据流图数据流图可以嵌套任意层次,所有嵌套图的集合构成一棵树。数据流图的嵌套允许各层是相关的并且是可理解的,而整个功能可以是任意复杂的。数据流图嵌套到最后以简单功能为终结。这些功能必须作为
5、操作来指定。6.2.6控制流控制流是影响处理是否有效的布尔值,它本身不是处理的输入值。控制流用虚点线表示从产生布尔值的一个处理到该处理的控制。6.3指定的操作数据流图中的处理最终必须用对象上的操作来实现。每个底层的原子处理是一个操作,高层处理也可以考虑为操作。每种操作可以指定为不同的方式,包括以下几种:(1)数学函数,如三角几何函数。(2)小型有限集合的输入/输出值表(如枚举)。(3)根据输入方程指定输出。(4)前置或后置条件(公理定义)。(5)决策表。(6)伪码。(7)自然语言。主要的操作分为三大类:查询、动作和活动。查询是一个操作,它不受任何对象的外部可视状态的影响,它是一个单纯的功能。
6、动作是一种变换,对目标对象有副作用,或者从目标对象对系统中可触及的另一些对象有副作用。一种活动是对象具有持久性的一种操作,而查询和动作是瞬间的。6.4约束约束表示两个对象在相同时间的关系,或者表示同样对象在不同时间的不同值的关系。对象约束则指定某些对象完全地或部分地依赖另一对象。动态约束指定了不同对象状态、事件之间的联系。功能约束指定了操作上的限制。6.5数据库应用中的功能模型本节将介绍功能模型中可选择的表示法,包括增强的伪码、决策表和方程式。这些表示法对数据库有较大的帮助。6.5.1伪码顺序——一系列伪码语句本身有一顺序,通常用分号将一连串的语句分隔开。条件——条件成立时为true(真),
7、条件不成立时用false(假)。条件语句有单个语句和多个语句。其格式为:if<条件1>then<语句>elseif<条件2>thenelse<语句><语句>endif迭代循环——有两种迭代循环。一种是通过集合进行迭代;另一种是通过固定的循次数进行迭代。①foreach<集合中一个元素>in<集合><语句>endforeach②for<循环次数计数:=循环最小数>to<循环最大数>incrementby<循环增
此文档下载收益归作者所有