UML是一种模型化语言,而模型大多以图表的方式表现出来,一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本,这些虽然简单却很重要,在UML中相互联系和扩展,因此从图的方面对UML做进一步总结。
一、九种图
1、用例图(use case diagrams)
用例图用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。
用例图的基本元素是角色、用例和关系。角色是指人员的角色,用来指明这个用例和哪个角色相关;用例是指对功能的描述;关系是指明执行者和用例之间的关系。
如上图,描述一个用例在执行时执行者与用例之间的交互过程,人员角色是维护人员,维护工作包含添加、修改和删除,用例除了与执行者有包含关系外,还可以有泛化、关联和扩展关系。
2、类图(Class diagrams)
类图用于定义系统中的类,包括描述类的内部结构和类之间的关系,它主要用于描述系统的静态结构。
在UML中,类一般由三部分组成:
(1、)类名(name),每个类都必须有一个名字,类名是一个字符串
(2、)类的属性(attributes),属性指类的性质,即类的成员变量,一个类可以有任意多个属性,也可以没有属性
(3、)类的操作(operations),操作是类的任意一个实例对象都可以使用的行为,是类的成员方法
类与类之间的关系有关联、依赖、泛化和实现,具体解释及例图请点击UML中的四种关系
3、对象图(Object diagrams)
对象图是类图的一个实例,描述了系统在具体时间点上所包含的对象以及各个对象之间的关系。
对象图中包含对象和链,对象是类的特定实例,链(Link)是类之间关系的实例,由于对象存在生命周期,因此系统只能在某一时间段内存在。下面的例图可以很好的看清对象图是显示类的对象实例
下面是类图和对象图的比较:
4、状态图(Statechart diagmars)
状态图用来描述类的对象所有可能的状态以及事件发生时状态的转移条件,通俗来说就是描述一个特定实体如何根据当前状态对不同事件作出反应。
状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。
在这个系统中,学生是一个对象,系统进入接受了密码校验的刺激后做出的进入或返回的反应,学生的登陆、未登录、进入、选课等都是学生的状态,状态图描述了这些状态之间的转化。
5、活动图(Activity diagrams)
活动图表现从一个活动到另一个活动的控制流,是内部处理驱动的流程,它用来描述满足用例要求所要进行的活动及活动间的约束关系,且使用活动图有利于识别系统的并行活动。
活动图描述的是整个系统的事情,是对用例图的一种细化,从活动图中可以看出学生是如何一步一步完成选课的。活动图侧重从行为的动作来描述,状态图侧重从行为的结果来描述。
6、序列图(Sequence diagrams)
序列图主要用于交互发生一系列顺序,显示对象之间的交互。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。序列图中的元素包括对象、生命线、激活期和消息。
通过客户到ATM机取款的过程体现了对象间消息传递的时间顺序,客户取款先要通过ATM机的操作,然后传递到银行,最后再返回结果。
7、协作图(Collaboration diagrams)
协作图是动态视图的另一种表现形式,强调参加交互的各对象的组织,侧重于说明哪些对象之间有消息的传递,因此,协作图只对相互间有交互作用的对象和这些对象间的关系建模,而忽略了其他对象和联系。
在网上找到了一张协作图,简直大赞,完完全全体现出了各对象之间的协作关系。
8、构件图(Component diagrams)
构件图用来描述代码构件的物理结构以及各构件之间的组织与依赖关系。一个构件可以是一个资源文件、一个二进制文件或者一个可执行的文件。
构件图从软件架构的角度来描述一个系统的主要功能,如子系统、类、包、构件等,使用构件图最重要的就是复用。
构件图中除了依赖关系,还有泛化、关联和实现关系。
9、部署图(Deployment diagrams)
部署图定义了系统中硬件的物理体系结构,用来描述实际的物理设备以及它们之间的连接关系,从部署图中可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。
部署图使用的三种情况:
a、对嵌入式系统进行建模
b、对CS架构(客户服务器系统)进行建模时
c、对分布式系统进行建模时
构件图和部署图都是实现过程中要用到的图,构件图主要的目标用于描述系统中有哪些构件以及这些构件的组成及关系,它的组成是构件、接口和关系,有四种;而部署图的组成是节点和关系,只能有依赖和关联关系,没有泛化和实现。
二、包图(Package diagrams)
在UML中除了9种正式的图外还有一个包图也不可忽略,在UML建模机制中,模型的组织是通过包来实现的,包把建立的各种模型组织起来,形成各种功能或用途的模块,并可以控制包中元素的可见性以及描述包之间的依赖关系。通过这种方式,系统模型的实现者可在高层把握系统的结构。同时,包是UML中唯一的组织机制。
包可以拥有其他元素,这些元素可以是类、接口、构件、节点、协作、用例和图,甚至可以是其他包。
上图描述的是两个包之间的依赖关系,Client包要用到Supplier包里面的类。
在UML中可以利用类图和构件图来推断软件的结构,利用顺序图、协作图、状态图和活动图来描述软件的行为,而在系统的软硬件边界上面利用实施图来讨论软件执行所需要的处理器和设备的拓扑结构。通过对UML图的总结,使自己在建模标准上进一步学习,继续加油!