小代的学习笔记 2010-07-06
UML图形有很多值得学习的地方,这里和大家分享一下UML状态图和组件图的用法,状态图表示某个类所处的不同状态和该类的状态转换信息,而UML图形中的组件图提供系统的物理视图。
UML图形中UML状态图
UML图形中状态图表示某个类所处的不同状态和该类的状态转换信息。有人可能会争论说每个类都有状态,但不是每个类都应该有一个状态图。只对"感兴趣的"状态的类(也就是说,在系统活动期间具有三个或更多潜在状态的类)才进行状态图描述。
如图5所示,状态图的符号集包括5个基本元素:初始起点,它使用实心圆来绘制;状态之间的转换,它使用具有开箭头的线段来绘制;状态,它使用圆角矩形来绘制;判断点,它使用空心圆来绘制;以及一个或者多个终止点,它们使用内部包含实心圆的圆来绘制。要绘制状态图,首先绘制起点和一条指向该类的初始状态的转换线段。状态本身可以在图上的任意位置绘制,然后只需使用状态转换线条将它们连接起来。
图1:显示类通过某个功能系统的各种状态的状态图
图1中的状态图显示了它们可以表达的一些潜在信息。例如,从中可以看出贷款处理系统最初处于LoanApplication状态。当批准前(pre-approval)过程完成时,根据该过程的结果,或者转到LoanPre-approved状态,或者转到LoanRejected状态。这个判断(它是在转换过程期间做出的)使用一个判断点来表示--即转换线条间的空心圆。通过该状态图可知,如果没有经过LoanClosing状态,贷款不可能从LoanPre-Approved状态进入LoaninMaintenance状态。而且,所有贷款都将结束于LoanRejected或者LoaninMaintenance状态。
UML图形中UML组件图
组件图提供系统的物理视图。UML图形中组件图的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次2上显示。
组件图的建模最适合通过例子来描述。图2显示了4个组件:ReportingTool、BillboardService、Servlet2.2API和JDBCAPI。从ReportingTool组件指向BillboardService、Servlet2.2API和JDBCAPI组件的带箭头的线段,表示ReportingTool依赖于那三个组件。