UML(Unified Modeling Language)统一建模语言,是用来设计软件蓝图的可视化建模语言。它不是一个程序设计语言,不是一个形式化语言,而是一个可视化建模语言。
对比:
UML是一种面向对象的程序设计范型,注重软件中涉及到了哪些类;
而以过程为程序设计范型的编程语言,注重软件中涉及的功能。
其中UML的基本构造块中包括:UML中的事物、UML中的关系、UML中的图。这也是UML的三种基本构造块。
事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。
(一)UML中的事物(Things),四种:
结构事物:描述了软件系统的静态部分。
1、类(class):是对一组具有相同属性、方法、关系和语义的对象的描述,一个类实现一个或多个接口。在UML中以矩形框显示:
第一部分:类名;
第二部分:属性;
第三部分:方法。
2、接口(interface):描述了一个类或构件的一个服务的操作集。接口仅仅是定义了一组操作的规范,它并没有给出这组操作的具体实现。
其中iwindow是一个借口,它需要借助window(类)来实现具体的功能。
3、协作(collaboration):它定义了一个交互,它是由一组共同工作以提供某协作的角色和其他元素构成的群体,这些协作行为大于所有元素的各自行为的总和。因此,协作有结构、行为和维度。一个给定的类可以参与几个协作。
这是在UML中的图形展示。
4、用例(use case):用例是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(actor)有价值且可观察的结果。
5、主动类(active class):它是这样的类,其对象至少拥有一个进程或线程,因此它能启动控制活动。
6、构件(component):构件是系统中物理的、可替代的部件,它遵循且提供一组接口的实现。
7、节点(node):节点是在运行时存在的物理元素,它表示了一种可计算的资源,它通常至少有一些记忆能力处理能力,一个构件集可以驻留在一个节点内,也可以从一个节点迁移到另一个节点。
行为事物:描述了UML模型中的动态部分。
(1)交互(interaction):是这样一种行为,它由在特定语境中共同完成一定特定任务的一组对象之间交互的消息组成。一个对象群体的行为或单个操作的行为可用一个交互来描述。
(2)状态机(state machine):是这样一种行为,描述了一个对象或一个交互在生命期内响应事件所经历的状态序列。一个状态机涉及到一些其他元素,包括状态转换、事件和活动(对一个转换的响应)。
分组事物:是UML模型的组织部分,最主要的分组事物是包(package),包是把元素组织成组的机制。
包是UML中唯一的组织机制,可以拥有其他元素,这些元素可以是类、接口、构件、节点、协作、用例和图,甚至可以是其他包。
一个包形成了一个命名空间。在一个包中同一种元素的名称必须是唯一的。不同种类的元素可以有相同的名称。
注释事物:是UML模型的解释部分。这些注释事物用来描述、说明和标注模型中的任何元素。有一种主要的注释事物,称为注解(note)。
注解(note)是一个依附于一个元素或一组元素之上,对它进行约束或解释的简答符号。
(二)UML中的关系,四种:
(1)关联(association):描述了两个或多个类之间的结构性关系。
(2)依赖(dependency)
箭头指向被依赖的一方。
例如图中:client依赖于supplier。
(3)泛化(generalization):是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。
泛化,即继承。
eg:工程师与经理都是公司的雇员,它们都继承了雇员的属性和方法。
它的优点:增加了软件代码的复用性,减少了代码量并且减少了维护的代价。
(4)实现:是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。
(三)UML中的九种图
用例图(user-case
diagram)
类图(class diagram)
对象图(object
diagram)
状态图(state
diagram)
序列图
(seqnence diagram)
协同图
(collaberation diagram)
活动图(activity
diagram)
构件图(component
diagram)
展开图(deployment
diagram)
其中这九种图可以归纳到四类中:
在软件开发的各个阶段,会使用到不同的UML图对系统进行描述。
需求阶段:用例图
分析阶段:采用类图描述静态结构;采用顺序图、合作图、活动图、状态图来描述动态行为;
设计阶段:采用类图、包,对类的接口进行设计;
实现阶段:将类用某面向对象语言实现;
集成与交付阶段:构件图、包、部署图;
测试阶段:单元测试使用类图和类的规格说明书;集成测试使用类图、包、构件图和合作图;系统测试使用用例图测试系统功能。
UML设计中最重要的就是这九种图,要学会它,掌握它的精髓。