UML(统一建模语言):是面向对象的可视化建模的一种语言。是数据库设计过程中,在E-R图(实体-联系图)的设计后的进一步建模。
UML中有3种构造块:事物、关系和图,事物是对模型中最具有代表性的成分的抽象;关系是把事物结合在一起;图聚集了相关的的事物。

UML提供9种视图:类图、对象图,用例图,序列图、协作图,状态图、活动图,构件图和部署图。

在UML系统开发中有三个主要的模型:
功能模型: 从用户的角度展示系统的功能,包括用例图。
对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类图。
动态模型: 展现系统的内部行为。 包括序列图,活动图,状态图。
1、用例图
    描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
【描述一组用例、参与者以及它们之间的关系,其展示的是该系统在它的外面环境中所提供的外部可见服务】。如下图(摘自网络):
UML图例_第1张图片
2、类图
    类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。
描述一组对象、接口、协作等事物之间的关系。如下图(摘自网络):
UML图例_第2张图片
注:#表示protected,+表示Public,-表示private
3、对象图
    与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
描述一组对象之间的关系,是具有具体属性值和行为的一个具体事物,其是类图中所建事物实例的静态快照,其与类图的主要区别是一个是抽象的,而对象图是具体的。如下图(摘自网络):
UML图例_第3张图片
4、活动图
    描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
是一种特殊的状态图,实现一个活动到另一个活动的流程。如下图(摘自网络):
UML图例_第4张图片
5、状态图
    描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
展示了一个状态机,由状态、转换、事件和活动组成。强调事件行为的顺序。如下图(摘自网络):
UML图例_第5张图片
6、序列图(顺序图)
    序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
顺序图是强调消息时间顺序,有对象生命线和控制焦点。
UML图例_第6张图片
7、协作图

    和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。

协作图是强调接收和发送消息的对象的结构组织,有路径和顺序号。如下图(摘自网络):

UML图例_第7张图片

8、构件图 (组件图)
    描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
构件图展示一组构件之间的组织和依赖关系,并以全局的模型展示出来。部署图是构件的配置及描述系统如何在硬件上部署。如下图(摘自网络):
UML图例_第8张图片
9、部署图 (配置图)
    是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。

-------------------------------------------------------------------------------------------------------------

一:这九种模型图各有侧重,

1:用例图侧重描述用户需求,

2:类图侧重描述系统具体实现;

二:描述的方面都不相同,

1:类图描述的是系统的结构,

2:序列图描述的是系统的行为;

三:抽象的层次也不同,

1:构件图描述系统的模块结构,抽象层次较高,

2:类图是描述具体模块的结构,抽象层次一般,

3:对象图描述了具体的模块实现,抽象层次较低。

在有的文献书籍中,将这九种模型图分为三大类:

结构分类、动态行为和模型管理:

1:结构分类包括用例图、类图、对象图、构件图和部署图,

2:动态行为包括状态图、活动图、顺序图和协作图,

3:模型管理则包含类图。

    然后转一篇blog对各个图做一个比较详细的说明和举例:
**********************************************************
UML(2009-04-11 12:18:57)
标签:uml 状态图 类图 it   分类:软件设计
http://blog.sina.com.cn/s/blog_5f240fc40100cnm2.html
**********************************************************
具体关系图标如下:
UML图例_第9张图片

说明:
构件事物是名词,是模型的静态部分。
行为事物是动态部分,表示行为。
分组事物是组织部分。
注释事物是解释部分。
依赖:一个事物变化会引起另一个事物变化。
聚集:特殊的关联,描述整体与部分的组合关系。
泛化:是一种特殊与一般的关系,如子元素(特殊)与父元素(一般),箭头指向父元素。
实现:类元之间的关系,其中一个类元指定了由另一个类元保证执行的契约。一般用在接口和实现他们的类之间或用例和实现它们的协作之间。

------------------------------------------------------------------------------------------

2.1 类图

2.2 对象图

2.3 包图

2.4 活动图

2.5 序列图

2.6 用例图

  

  本章介绍六类UML图的主要用途,以及常见的概念及图示,以便对这六类图有一个初步的认识。

  2.1 类图

  如果投票选最重要的UML图,我一定会把票投给类图( class diagram)。类图是一款结构图(structure diagram),如图2-1所示,我们可以用它来表达系统内部重要的组成结构。一个稳定且具弹性的内部结构可以同时支撑系统对外提供的各式服务,以及系统内部复杂的运作,所以我认为类图特别重要。

  接下来的各小节会谈到类图中最常见的概念及图示。

  2.1.1 类

  一群对象(object)享有相同的结构、行为、约束和语义时,称它们是同类(class)的对象。换句话说,定义一个类就相当于描述了一群对象。在类中, 使用属性(attribute)表达对象的结构, 使用操作(operation)表达对象的行为。

  如图2-2所示,定义员工(worker)类之后,便可以依据此类的描述产生一群对象。这些:Worker对象不仅可以共用类所定义的属性,拥有自己的属性值,还可以共用类所定义的操作,或者共用约束。

UML图例_第10张图片  

  图2-1 类图

  UML图例_第11张图片

  图2-2 类与对象

  类采用三格的矩形图示,顶格放置类名称,中格放置属性名称,底格放置操作名称。不过,也可以将类的属性格或操作格隐藏起来,节省空间,如图2-3所示。

  大多数的UML工具都有隐藏功能。以StarUML为例,点选任何一个类图示都可以选择是否隐藏属性或操作,如图2-4所示。

UML图例_第12张图片  

  图2-3 类图示

  

  图2-4 隐藏属性或操作

  2.1.2 可见性

  对象具有封装(encapsulation)属性,可以把数据结构和行为细节封装起来,外界无法随意存取。对应UML的类概念,我们会看到类中有属性和操作,同时可以设定这些成员是否能被外界存取的可见性(visibility)。以图2-5为例,单笔申购(purchase)封装了一个外界无法存取的私有属性—金额(amount),以及一个外界可以调用的公开操作—计算(calculate)。

UML图例_第13张图片  

  图2-5 私有属性与公开操作

  目前,UML预设了四种可见性,分别为公开(public)、私有(private)、保护(protected)

  和包(package)。公开和私有可见性最常见,也最容易懂,如图2-5所示,减号(-)为私有可见性,加号(+)为公开可见性。

  私有可见性滴水不漏,就连子类也无法看见超类的私有成员,这样,其实不利于继承机制。所以,UML设置保护等级的可见性,特别开放子类可以看见超类的保护等级的属性及操作,以便提供更方便的继承机制。保护可见性的符号是井号(#),如图2-6所示。

UML图例_第14张图片  

  图2-6 保护等级的属性

  最后来谈包可见性。顾名思义,它是为了包而设置的,它的符号是否定号(~),如图2-7所示。同包的类可以看见其他类内部的包属性及操作。所以,从图中可以得知,账户可以看见顾客类的姓名和地址,但是分行(branch)却无法看见,因为分行不是S包的成员。

UML图例_第15张图片  

  图2-7 包等级的属性

  2.1.3 关联

  关联(association)是对象之间最常见的关系,用来连接有结构关系的对象。请看图2-8的例子,关联的图示为实线,实线两端可以连接两个不同的类,如图中的个人(person)类和公司(company)类。

  不过,关联的两端也可以连接相同的类,如图2-8中的个人类。虽然,关联两端连接相同的类,但它的链接(link)其实是连接两个不同的实例(instance),只不过这两个实例诞生自相同的类。

UML图例_第16张图片  

  图2-8 关联

  关联不一定是二元关联(binary association),也可以是多元关联(n-ary association)。多元关联的图示是连接大菱形的实线,如图2-9所示为三元关联(ternary association)。

UML图例_第17张图片  

  图2-9 三元关联

  有时候会看到带箭头实线,那是在标示导航性(navigation),意味着可以由来源端(source end)导航到箭头所在处的目标端(target end)。如图2-10所示,:Member对象可以链接到:Password对象,但是反向则不成立,也就是说,无法从:Password对象链接到:Member对象,因为两者之间是单向的关联。

UML图例_第18张图片  

  图2-10 导航性

  特别注意,关联端的标记在UML 2中有所变动,与UML 1版略有不同,如图2-11所示。在

  UML 2中,关联的箭头端代表具有导航性。打个小叉就是不可导航;单纯直线代表还未指定可导航或不可导航。所以,回到图2-11的例子中,可以看到