UML介绍
统一建模语言(UML是 Unified ModelingLanguage的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。 UML的主要创始人是Jim Rumbaugh、Ivar Jacobson和GradyBooch,他们最初都有自己的建模方法(OMT、OOSE和Booch),彼此之间存在着竞争。最终,他们联合起来创造了一种开放的标准。1997年,OMG组织(ObjectManagementGroup对象管理组织)发布了统一建模语言UML。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划–就像建筑工人多年来所使用的建筑设计图一样。 最常用的UML图包括:用例图、类图、序列图、状态图、活动图、组件图和部署图。
类图
类图中的元素
类和接口是类图中的基本元素,其UML表示是一个长方形,垂直地分为三个区:最上层显示类名或接口名,中间的区域列出类的属性,底部的区域列出类的操作。 对于抽象类/方法,类/方法名是斜体的。 对于静态属性/方法,属性/方法下面有下划线。 根据属性/方法的访问权限不同,其图示也不同。
|属性/方法访问权限|图示 |—– |公开|+ |包内访问|~ |保护|# |私有|-
在关联建模中,存在一些情况下,你需要包括其它类,因为它包含了关于关联的有价值的信息。对于这种情况,你会使用关联类来绑定你的基本关联。关联类和一般类一样表示。不同的是,主类和关联类之间用一条相交的点线连接。关联类类似查询表,可以凭借关联信息从一个类查找到另一个类。 UML中的软件包类似于Java中的包,使建模者能够组织模型分类器到不同的名字空间中,便于管理。
类图中的六大关系
|关系名|介绍|体现|图示 |—– |泛化关系generalization|表示一般与特殊的关系|类与类之间的继承,接口与接口之间的继承|用一条实线加空三角来表示 |实现关系realization|表示类与接口的关系|类对接口的实现|用一条虚线加空三角来表示 |依赖关系dependency|类与类之间的连接,表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系|局部变量、方法/函数的参数或者是对静态方法的调用|用一条虚线加箭头来表示 |关联关系association|类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法;通常含有“知道”,“了解”的含义依赖关系是具有偶然性的、临时性的、非常弱的,方向是单向的;关联关系是固定的、长期的对应关系,方向可以是单向或者双向的。对类而言依赖存在的理由有:B作为一个参数被传递给A内所定义的一个方法(参数可见性);B在A的一个方法内被声明为局部对象(局部声明可见性);B对A全局可见(全局可见性)。而关联一般应来描述普通的属性可见性(B是A的一个属性,是一种相对长久的可见性, 是普遍存在的)。|成员变量|用一条实线来表示关联关系的一段带箭头的是可访问的(Navigableassociation);带叉号的是不可访问或禁止访问的(Non-navigableassociation);什么都不带的是未特别指出的关系(Unspecifiedassociation),例如无法直接访问但是可以间接访问。 |聚合关系aggregation|关联关系的一种,是一种强关联关系;聚合关系是整体和个体/部分之间的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享|成员变量|用一条实线加空心菱形来表示 |组合关系composition|也是关联关系的一种,但它是比聚合关系更强的关系。组合关系要求聚合关系中代表整体的对象要负责代表个体/部分的对象的整个生命周期;组合关系不能共享;在组合关系中,如果代表整体的对象被销毁或破坏,那么代表个体/部分的对象也一定会被销毁或破坏;而聚在合关系中,代表个体/部分的对象则有可能被多个代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏。|成员变量|用一条实线加实心菱形来表示
继承和实现体现的是类与类、或者类与接口间的纵向关系;依赖、关联、聚合和组合关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系。 但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。
序列图
同步消息的图示为一条实线加实三角,异步消息的图示为一条实线加箭头。
交互框常见操作符
|操作符|含义 |—– |alt|多选一的片段;只有条件为真者会执行 |opt|可选的;该片段只在所给条件为真时执行,等同于只有一个片断的alt |par|并行;每一个片断并行运行 |loop|循环;片断可以执行多次;警戒条件表示循环的条件 |region|关键区域;片断一次只有一个线程执行 |neg|否定;片断展示无效的交互 |ref|引用;引用到另一张图中定义的交互。画一个框盖住交互设计的生命线。你可以定义参数和返回值 |sd|序列图;圈出一张完整的序列图,如果你愿意的话
参考
《UML精粹:标准对象建模语言简明指南》
JUDE文档
IBM的“UML 基础”系列文章。