软件工程与信息学院 134 作业题:面向对象分析实践 下面是自动售货机系统的需求陈述。 尝试建立其对象模型、动态模型和功能模型:自动售货机系统是一个无人售货系统。 销售时,顾客将硬币放入机器的投币口,机器检查硬币的尺寸、重量、厚度和边缘类型。 有效硬币为一美元、五毛、镍、二分和一分。 其他货币均被视为假币。 机器拒绝接受假币并将其从硬币返回槽中弹出。 当机器接受有效硬币时,会将硬币送入硬币斗。 客户支付的货币按照硬币面值累计。 自动售货机配备有商品分配器。 每个项目分配器包含零个或多个具有相同价格的项目。 顾客通过选择商品分配器来选择商品。 如果商品分配器内有商品,且顾客支付的货币价值不低于商品价格,则商品将被分配到商品交付口并交给顾客,并退回相应的找零至硬币返回孔。 如果分配器是空的,等于顾客支付的货币价值的硬币将被返回到硬币拒绝槽。 如果顾客支付的货币价值低于所选分配器中商品的价格,机器将等待顾客插入更多货币。 如果顾客决定不购买所选商品,则其投入的货币将从退币口提取。 参考:《软件工程》清华大学出版社2009年第一版面向对象分析方法的核心思想是利用面向对象的概念和方法构造一组相关的模型(对象模型、动态模型和功能模型)软件需求模型)以获得对问题域的全面理解。
这三种模型从不同的角度描述系统,其中:对象模型描述系统的静态和结构化数据属性; 动态模型描述了系统的趋势导向和行为控制特性; 功能模型描述了变化的系统。 功能特性。 所有三个模型都涉及数据。 控制、操作等常见概念,但各模型描述的侧重点不同。 它们分别从不同的方面反映了系统的实际内容,综合起来充分反映了目标系统的需求。 对象模型是三个模型中最关键的。 它的作用是描述系统的静态结构,包括组成系统的类和对象、它们的属性和操作以及它们之间的联系。 UML中的类图适合建立对象模型,状态图适合建立动态模型。 各个类的动态行为用状态图来表示,各个类的状态图通过事件组合起来形成系统的动态模型。 也就是说,动态模型是基于共享事件彼此相关的状态图的集合。 建立对象模型通常按以下顺序进行:在问题域中查找对象、识别对象之间的关系、定义属性和服务。 事实上,分析工作并不能严格按照预定的顺序进行,系统模型往往需要重复构建多次才能完成。 注意:对象硬币计数器和对象硬币探测器可以用作对象自动售货机的一部分,其属性与自动售货机的属性相同。 建立动态模型对于只有少量静态数据的系统,动态模型没有实际意义。 然而,动态模型在开发交互式系统时发挥着重要作用。
如果收集输入信息是目标系统的主要任务,那么在开发此类应用系统时建立正确的动态模型至关重要。 构建动态模型的步骤:比较不同对象的状态图,检查对象之间的一致性,确保事件之间的匹配。 提示投入硬币。 检查硬币。 提示是假的。 存放硬币。 计算货币的总价值。 确认硬币已投入。 要求选择商品。 检查货物的库存情况。 提示无货。 计算并比较货币的总价值和商品的价格。 确认。 确认客户购买了商品。 发送货物。 要求提货。 请求提取硬币。 提示显示交易完成,提示商品不足,确认客户购买了假币,插入硬币,选好商品,缺货,少于请勿购买,购买,请勿购买,功能模型。 功能模型描述了系统的所有计算。 功能模型表明发生了什么,动态模型确定何时发生,而对象模型确定发生什么。 函数模型显示了计算如何从输入值到输出值,而不管计算的顺序如何。 功能模型由多个数据流图组成。 数据流图用于表示数据值从源对象到目标对象的流动。 它不包含控制信息。 控制信息在动态模型中表示。 同时,数据流图并不表示对象中值的组织。 值的组织是在对象中。 在模型中表示。 数据流图包含处理、数据流、动作对象和数据存储对象。 1. 处理 数据流程图中的处理用于更改数据值。 最低层次的处理是纯函数,完整的数据流图是高层处理。 2、数据流 数据流图中的数据流将对象的输出与处理、处理与对象的输入、处理与处理连接起来。
在计算机中,数据流用于表示中间数据值。 数据流不能改变数据。 3. 动作对象 动作对象是通过生成或使用数据值来驱动数据流图的主动对象。 4、数据存储对象 数据流图中的数据存储是一个被动对象,用于存储数据。 它与动作对象不同。 数据存储本身不产生任何操作。 只响应存储和访问要求。等待顾客投币、检查硬币、退回假币、分发商品、找零、商品价格、有效硬币特征、顾客投币、顾客取消购买、发送硬币到存储、计算面值、判断货币是否充足、判断分配器商品库存、客户假币、客户假币、有效硬币、货币总价值、硬币选择商品缺货可用足够硬币不足商品、硬币硬币