深入剖析静态UML模型图
本文和大家重点讨论一下UML模型图的概念,UML定义了九种UML模型图,在有的文献书籍中,将这九种UML模型图分为三大类:结构分类、动态行为和模型管理本文主要介绍一下静态UML模型图。
1.九种UML模型图
UML模型图能够将被建模的系统的某一个方面的某一部分以图形的方式表示出来,不同的视图通过将多个不同的UML模型图有机组合在一起就能够描述系统模型的某方面的特征。UML的UML模型图是有模型元素构成的,模型元素以图标的形式直观形象的表达各种概念。有的模型元素可以在多个UML模型图中使用,如注释和注释连接可以在任何UML模型图中使用,用于给其他的模型元素进行注释。各种UML模型图能使用的模型元素集合也不相同,在介绍各种UML模型图的时候会有具体的说明。
UML定义了九种UML模型图:用例图(UseCaseView)、类图(ClassDiagram)、对象图(ObjectDiagram)、构件图(ComponentDiagram)、部署图(DeploymentDiagram)、状态图(StateChartDiagram)、活动图(ActivityDiagram)、序列图(SequenceDiagram)以及协作图(CollaborationDiagram)。这九种UML模型图各有侧重,如用例图侧重描述用户需求,类图侧重描述系统具体实现;描述的方面都不相同,如类图描述的是系统的结构,序列图描述的是系统的行为;抽象的层次也不同,如构件图描述系统的模块结构,抽象层次较高,类图是描述具体模块的结构,抽象层次一般,对象图描述了具体的模块实现,抽象层次较低。
在有的文献书籍中,将这九种UML模型图分为三大类:结构分类、动态行为和模型管理,结构分类包括用例图、类图、对象图、构件图和部署图,动态行为包括状态图、活动图、顺序图和协作图,模型管理则包含类图。本文则从动态和静态的角度分别介绍UML的九种UML模型图。
2.静态UML模型图
结构分类UML模型图描述了的是系统的与时间不相关的属性和行为。静态UML模型图包括类图、对象图、构件图和部署图。
2.1类图
类图描述的是类和类之间的相互关系。类在UML中的是用矩形表示,矩形中可以有三个区域,最上方的区域是名字域,用来显示类名,中间的区域是属性域,用来显示类所具有的属性列表,最下方的区域是操作区域,显示定义的操作列表。
类之间的相互关系包括:关联(Association)、依赖(Dependency)、泛化(Generalization)以及实现(Realize)。
关联描述的是类的对象之间逻辑上的关系,这些对象可以是同类的,也可以不是,关联的两端称为角色,如客户和订单就存在一种关联。在UML中关联主要有三种形式,一种是用一条线段标识双向的关联,称为关联(Association);第二种是用一个有箭头的线段标识单向的关联(UnidirectinalAssociation);第三中是用一个菱形为头的线段表示关联的两端的类是整体和部分的关系,这种关联也称为聚合(Aggregation),例如:一个对象a包含另一个对象b的引用,则菱形的一端连接的是对象a,另一段连接的是对象b。聚合又分为。
UML模型图中类图依赖表示的是模型元素间的依赖关系,依赖关系两端的模型元素,一端是独立的,另一端需要依赖这个独立的元素。依赖关系用带箭头的虚线段表示。
泛化表示的是模型元素之间抽象和具体的关系,也就是模型元素之间的继承关系。继承者具有被继承者相同的特性,同时还能在被继承者的基础上进行扩展,如:人和中国人的关系就是泛化关系,中国人是人,同时具有人的特征,也有自己扩展了的特征。在面向对象中,被继承者称为父类,继承者称为子类。泛化用一个带有空心的三角箭头的线段表示,三角箭头指向父类,另一端连接子类。
UML模型图中类图实现关系表示一个模型元素实现了另一个模型元素定义的操作,一般是指一个类实现了一个接口(Interface)定义的方法,在面向对象的概念中,接口就是只定义方法,并不实现这个方法,用来给别的类继承它,并用类的操作实现它定义方法,通过这样的方法就能够将定义和抽象分开,利于代码的维护。实现关系用一条带有空心三角箭头的虚线段表示,三角形接口指向接口,虚线段另一端连接实现类。
表达实现关系除了上面的这中表示外,UML还提供了另一种简洁的表示方式,用一个圆圈表示接口,上面没有接口定义的方法,通过用一条实线段将其与一个类相连,就能表示了接口和实现类的关系。
泛化和实现关系都是描述一般和具体的关系,但是两者还是有区别:泛化实在同一个抽象层次上的一般和具体的关系,而实现是在不同抽象层次的一般和具体的关系,接口的抽象层次较高。
2.2对象图
对象图描述的是对象之间的关系,也可以理解为系统在某一个时刻的图像。对象图是在比较具体的层次上描述,比如描述一个系统的各个类的对象是如何组合的。对象图没有类图那么复杂,对象的表示和类相似,只是在名字域要标明对象名和所属类名,两者用冒号分隔,属性域要标识出属性的具体值,对象之间的关系都是用实线段相连。现在很少将对象图独立画出来,一些CASE工具,如RationalRose2002就没有提供对象图。对象的概念更多的是用在动态的UML模型图中。
2.3构件图
构件图描述系统中的构件以及构件之间的依赖关系,构件图是在很具体的层次描述系统的物理结构。
构件图有一下几个主要的模型元素:构件、接口、依赖关系。构件就是定义了良好接口的实现代码单元,已经成为系统的一部分。构件并不依赖于其他的构件,只依赖于其所支持的接口,因此,构件是可替换的,只要新的替换构件支持相同的接口就可以,构件用一个左边有两个小矩形的大矩形表示;接口用于描述构件定义的接口,用一个圆圈表示,它与构件是用实线段相连;依赖关系描述的是构件之间的依赖关系,用带箭头的虚线段表示,箭头一段的是被依赖的构件。
2.4部署图
部署图描述任何基于计算机的应用系统的物理或逻辑的配置。它可以描述系统硬件的物理拓扑结构和在此结构上执行的系统软件,也能描述系统节点的拓扑结构和通信路径、节点上运行的构件、构件中的逻辑单元等。