欢迎来到天天文库
浏览记录
ID:11406827
大小:182.00 KB
页数:22页
时间:2018-07-11
《uml餐馆系统:设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章餐馆系统:设计第5章产生的用例实化阐明了如何用应用层中的对象实现系统的业务功能。设计的最重要的任务就是将应用层的模型扩展到整个系统。本章将讨论一些处理输入输出和持久存储的基本策略,并且将细化分析类图,使它包含关于数据类型、消息参数等等更丰富的信息。在设计阶段终结前,我们的目的是要对系统有足够详细的理解,使实现可以开始。为了设计系统的这些方面,我们需要对系统的软硬件环境做出一些决定。在接下来的这两章,我们将假定,餐馆预约系统要作为一个单用户的桌面应用系统实现。因此,我们将它设计为一个Java应用程序,其用户界面是基于窗口的。对于持久性,我们假
2、定使用一个关系数据库存储有关预约和顾客等持久数据。6.1接收用户输入在第5章,来自用户的系统消息在顺序图中是作为指向一个代表预约系统的控制对象来显现的。但是,预约系统对象是一个应用层的对象,所以实际上消息并不会直接发送到这个对象。必须有某个表示层的对象,它的责任是接收用户的输入并转发给控制对象。表示层的这个接收用户输入的对象可以很合理地描述为一个边界对象。它表示呈现给一个特定参与者的用户界面。就预约系统来说,我们假定所有用户使用相同的用户界面,因此将这个类命名为“StaffUI”。我们假设,为了执行“显示预约”用例,用户首先要选择一个适当的菜单选
3、项。这引起一个对话框的出现,在对话框中,用户输入需要的日期,然后单击“OK”按钮将请求提交给系统。通常,不值得对用户和标准用户界面构件,如菜单和对话框,交互的细节建模。用户界面框架提供了可复用的类来实现这些构件,而这些如何进行的细节可以安全地留作实现的议题。重要的是在用户单击“OK”按钮以提交在对话框中输入的数据时所接收的消息。图6.1中,显示了这个边界对象“StaffUI”,它接收这个消息,然后将处理这个消息的责任委派给先前确定的应用层中的控制对象。这是用协作图表示的,所以可以表明代表不同层的包,以阐明系统的架构。这也说明,在UML中,包是一个
4、相当弱的概念,链接和消息可以轻易地跨越包的边界。图6.1处理系统消息在用户可以通过标准动作,例如由鼠标产生消息,与系统交互的情况下,经常需要由系统来处理各个用户界面事件。在这些情况下,边界对象的作用更加重要。例如,有些用例要求用户选择一个显示的预约。选择预约很自然的一种方法是用户用鼠标单击该预约,这种方法支持直接操纵所显示的预约目标。用户界面将检测到这个事件,并将其作为一个“selectBooking”消息传递给预约系统,如图6.2所示。图6.2选择预约与分析模型相比,图6.2中的消息具有更详细的参数信息。鼠标消息的参数代表按下鼠标键的位置,以屏
5、幕坐标表示。然而,应用层目前不需要知道任何关于界面的细节,所以在发送给预约系统控制器对象的消息上,用餐台号和时间代替了位置,这二者将使得预约系统能够确定一个唯一的预约。这就将鼠标坐标转化为对应用有意义的信息的责任交给了用户界面对象。这是合理的决定,因为用户界面对象也负责产生显示输出,为此,它肯定要将显示的预约的餐台号和时间映射到相应的屏幕坐标,因此应该能够进行反向映射。有些交互包含多个用户产生的事件。例如,我们会想到用户能够将预约从一个餐台移动到另一个餐台,方法是将预约的矩形从屏幕上的一个位置拖到另一个位置。这个交互将涉及用户产生的多个事件:开始
6、是一个“mousedown”消息选择所需的预定,接着是若干“mousemove”消息,最后是一个“mouseup”消息,表明预约已经放在它最终的位置。图6.3说明了这个交互,图中显示“transfer”消息只是在预约的新位置松开鼠标键的时候才被发送给预约系统。这表明,边界对象检测到的用户产生的事件和发送给控制器的系统消息之间的对应不必要是一对一的。这还暗示了在边界对象中一定嵌入了某些控制元素,它必须记住与用户的交互的当前状态,以及何时发送一个系统消息。图6.3将预约调换到新餐台如前所述,这个交互假定,用户界面对象有在屏幕坐标和对应的应用数据值之间
7、进行转化的责任。尽管这个用例称为“调换餐台”,但是这个顺序图暗示了修改预约时间的附加操作实际上也能够不需要额外代价而实现。事实上,只实现调换餐台可能更困难,因为这时必须检查用户将预约放在一张新餐台但却是在不同时间这种例外情况。有时设计层面的考虑使得回到并修改最初的用例模型是合理的,这就是一个例子。对用例模型的修改留作习题。6.2产生输出“StaffUI”类具有两个不同的角色:作为边界类,它接收来自用户的消息并将消息转发给控制器类;但是从第5章所描述的MVC架构的意义来说,它还充当着视图类的角色。视图类的基本责任是将应用数据或模型呈现给用户,或者换
8、句话说,是显示系统的输出。一般而言,对输出机制的要求是,只要应用数据的状态改变了,屏幕上对该数据的表示就要更新,使用户所看到的和系统状态
此文档下载收益归作者所有