UML建模教程
第 1 章UML初览
本章使用一个简单的例子对UML中所使用的概念和视图进行初览。本章的目的是要将高层UML概念组织成一系列较小的视图和图表来可视化说明这些概念,说明如何用各种不同的概念来描述一个系统以及如何将各种视图组织在一起。概括性的说明不可能面面俱到,其中省略了许多概念。要想得到更详细的说明,可参见下一章对UML各视图的说明和本书大全部分的有关细节。
本章使用的例子是计算机管理的戏院售票系统。这是一个精心设计的例子,目的是用少量篇幅来强调说明UML的各个组件。这是一个经过有意简化的例子,忽略了有关细节。除非进行大量的反复说明,否则一个实际系统的完整模型不可能用这么少的篇幅来对UML中使用的每种组件进行介绍。
1.1 UML视图
UML中的各种组件和概念之间没有明显的划分界限,但为方便起见,我们用视图来划分这些概念和组件。视图只是表达系统某一方面特征的UML建模组件的子集。视图的划分带有一定的随意性,但我们希望这种看法仅仅是直觉上的。在每一类视图中使用一种或两种特定的图来可视化地表示视图中的各种概念。
在最上一层,视图被划分成三个视图域:结构分类、动态行为和模型管理。
结构分类描述了系统中的结构成员及其相互关系。类元包括类、用例、构件和节点。类元为研究系统动态行为奠定了基础。类元视图包括静态视图、用例视图和实现视图。
动态行为描述了系统随时间变化的行为。行为用从静态视图中抽取的瞬间值的变化来描述。动态行为视图包括状态机视图、活动视图和交互视图。
模型管理说明了模型的分层组织结构。包是模型的基本组织单元。特殊的包还包括模型和子系统。模型管理视图跨越了其他视图并根据系统开发和配置组织这些视图。
UML还包括多种具有扩展能力的组件,这些扩展能力有限但很有用。这些组件包括约束、构造型和标记值,它们适用于所有的视图元素。
表3–1列出了UML的视图和视图所包括的图以及与每种图有关的主要概念。不能把这张表看成是一套死板的规则,应将其视为对UML常规使用方法的指导,因为UML允许使用混合视图。
表3–1 UML视图和图
2.1 静态视图
静态视图对应用领域中的概念以及与系统实现有关的内部概念建模。这种视图之所以被称之为是静态的是因为它不描述与时间有关的系统行为,此种行为在其他视图中进行描述。静态视图主要是由类及
类间相互关系构成,这些相互关系包括:关联、泛化和各种依赖关系,如使用和实现关系。一个类是应用领域或应用解决方案中概念的描述。类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联。静态视图用类图来实现,正因为它以类为中心,所以称其为类图。
在类图中类用矩形框来表示,它的属性和操作分别列在分格中。如不需要表达详细信息时,分格可以省略。一个类可能出现在好几个图中。同一个类的属性和操作只在一种图中列出,在其他图中可省略。
关系用类框之间的连线来表示,不同的关系用连线上和连线端头处的修饰符来区别。
图3–1是售票系统的类图,它只是售票系统领域模型的一部分。图中表示了几个重要的类,如Customer、Reservation、Ticket和Performance。顾客可多次订票,但每一次订票只能由一个顾客来执行。有两种订票方式:个人票或套票;前者只是一张票,后者包括多张票。每一张票不是个人票就是套票中的一张,但是不能又是个人票又是套票中的一张。每场演出都有多张票可供预定,每张票对应一个唯一的座位号。每次演出用剧目名、日期和时间来标识。
图3–1 售票系统的类图
3.3 用例视图
用例视图是被称为参与者的外部用户所能观察到的系统功能的模型图。用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。用例模型的用途是列出系统中的用例和参与者,并显示哪个参与者参与了哪个用例的执行。
图3–2是售票系统的用例图。参与者包括售票员、监督员和公用电话亭。公用电话亭是另一个系统,它接受顾客的订票请求。在售票处的应用模型中,顾客不是参与者,因为顾客不直接与售票处打交道。用例包括通过公用电话亭或售票员购票,购预约票(只能通过售票员),售票监督(应监督员的要求)。购票和预约票包括一个共同的部分—即通过信用卡来付钱(对售票系统的完整描述还要包括其他一些用例,例如换票和验票等)。
用例也可以有不同的层次。用例可以用其他更简单的用例进行说明。在交互视图中,用例做为交互图中的一次协作来实现。
3.4 交互视图
交互视图描述了执行系统功能的各个角之间相互传递消息的顺序关系。类元是对在系统内交互关系中起特定作用的一个对象的描述,这使它区别于同类的其他对象。交互视图显示了跨越多个对象的系统控制流程。交互视图可用两种图来表示:顺序图和协作图,它们各有不同的侧重点。
3.4.1 顺序图
视图包括哪几个视图
顺序图表示了对象之间传送消息的时间顺序。每一个类元角用一条生命线来表示—即用垂直线代表整个交互过程中对象的生命期。生命线之间的箭头连线代表消息。顺序图可以用来进行一个场景说明—即一个事务的历史过程。
顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。
图3–3是描述购票这个用例的顺序图。顾客在公共电话亭与售票处通话触发了这个用例的执行。顺序图中付款这个用例包括售票处与公用电话亭和信用卡服务处的两个通信过程。这个顺序图用于系统开发初期,未包括完整的与用户之间的接口信息。例如,座位是怎样排列的;对各类座位的详细说明都还没有确定。尽管如此,交互过程中最基本的通信已经在这个用例的顺序图中表达出来了。
3.4.2 协作图
协作图对在一次交互中有意义的对象和对象间的链建模。对象和关系只有在交互的才有意义。类元角描述了一个对象,关联角描述了协作关系中的一个链。协作图用几何排列来表示交互作用中的各角(如图3-4)。附在类元角上的箭头代表消息。消息的发生顺序用消息箭头处的编号来说明。
协作图的一个用途是表示一个类操作的实现。协作图可以说明类操作中用到的参数和局部变量以及操作中的永久链。当实现一个行为时,消息编号对应了程序中嵌套调用结构和信号传递过程。
图3–4是开发过程后期订票交互的协作图。这个图表示了订票涉及的各个对象间的交互关系。请求从公用电话亭发出,要求从所有的演出中查某次演出的资料。返回给ticketsell er对象的指针db代表了与某次演出资料的局部暂时链接,这个链接在交互过程中保持,交互结束时丢弃。售票方准备了许多演出的票;顾客在各种价位做一次选择,锁定所选座位,售票员将顾客的选择返回给公用电话亭。当顾客在座位表中做出选择后,所选座位被声明,其余座位解锁。
顺序图和协作图都可以表示各对象间的交互关系,但它们的侧重点不同。顺序图用消息的几何排列关系来表达消息的时间顺序,各角之间的相关关系是隐含的。协作图用各个角的几何排列图形来表示角之间的关系,并用消息来说明这些关系。在实际中可以根据需要选用这两种图。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。