UML设计的9种图例概论
1、用例图
描述角色以及角色与用例之间的连接关系。
说明的是谁要使用系统,以及他们使用该系统可以做些什么。
一个用例图包含了多个模型元素,
如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
2、类图
类图是描述系统中的类,以及各个类之间的关系的静态视图。
能够让我们在正确编写代码以前对系统有一个全面的认识。
类图是一种模型类型,确切的说,是一种静态模型类型。
3、对象图
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
4、活动图
描述用例要求所要进行的活动,以及活动间的约束关系,
有利于识别并行活动。
能够演示出系统中哪些地方存在功能,
以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
5、状态图
描述类的对象所有可能的状态,以及事件发生时状态的转移条件。
可以捕获对象、子系统和系统的生命周期。
他们可以告知一个对象可以拥有的状态,
并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。
一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;
该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
6、序列图(顺序图)
序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。
顺序图可以用来展示对象之间是如何进行交互的。
顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
7、协作图
和序列图相似,显示对象间的动态合作关系。
可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。
如果强调时间和顺序,则使用序列图;
如果强调上下级关系,则选择协作图;
这两种图合称为交互图。
8、构件图 (组件图)
描述代码构件的物理结构以及各种构建之间的依赖关系。
用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
9、部署图 (配置图)
是用来建模系统的物理部署。
例如计算机和设备,以及它们之间是如何连接的。
部署图的使用者是开发人员、系统集成人员和测试人员。
几种图的区别:
一:这九种模型图各有侧重
1:用例图侧重描述用户需求,
2:类图侧重描述系统具体实现;
二:描述的方面都不相同
1:类图描述的是系统的结构,
2:序列图描述的是系统的行为;
三:抽象的层次也不同
1:构件图描述系统的模块结构,抽象层次较高,
2:类图是描述具体模块的结构,抽象层次一般,
3:对象图描述了具体的模块实现,抽象层次较低。
在有的文献书籍中,将这九种模型图分为三大类:
结构分类、动态行为和模型管理:
1:结构分类包括用例图、类图、对象图、构件图和部署图,
2:动态行为包括状态图、活动图、顺序图和协作图,
3:模型管理则包含类图。
画图说明
UML(统一建模语言):是面向对象的可视化建模的一种语言。
是数据库设计过程中,在E-R图(实体-联系图)的设计后的进一步建模。
UML中有3种构造块:
事物、关系和图,事物是对模型中最具有代表性的成分的抽象;
关系是把事物结合在一起;
图聚集了相关的的事物。
具体关系图标如下:
说明:
构件事物是名词,是模型的静态部分。
行为事物是动态部分,表示行为。
分组事物是组织部分。
注释事物是解释部分。
依赖:一个事物变化会引起另一个事物变化。
聚集:特殊的关联,描述整体与部分的组合关系。
泛化:是一种特殊与一般的关系,如子元素(特殊)与父元素(一般),箭头指向父元素。
实现:类元之间的关系,其中一个类元指定了由另一个类元保证执行的契约。
一般用在接口和实现他们的类之间或用例和实现它们的协作之间。
1. 类(Class): 表示对某种对象的封装。具体表示如下图,
最上面一格代表类名,斜体表示该类为抽象类;第二格表示该类的特性,就是常说的字段和属性;第三格表示类的操作,
即方法和行为。前面的+ 表示public,-表示private,#表示protected。
2. 接口(Interface): 是指一系列方法的声明,没有实现,实现该接口的类负责实现该接口的方法。
其中,最上面一格表示接口名称,第二格表示该接口定义的一些方法。
3. 继承(Inheritance):是指使用已存在的类的定义作为基类,可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。具体表示方法是空心三角形+实线。
当然,Java语言中为了实现类似C++的多继承机制,还有个实现(Implements)接口的类图,具体表示方法是空心三角形+虚线或者下图的棒棒糖表示法。
4.关联(Association):
当一个类需要“知道”另一个类时,就可以用关联来表示,
使用实线箭头来表示。
5.聚合(Aggregation):是一种弱的“拥有”关系,
相当于包含,但不是其中的一部分,
以便和合成区分开来,使用空心菱形+实线箭头来表示。
6.合成(Composition):
也叫组合,是一种强的“拥有关系”,体现的是一种局部和整体的关系,
其生命周期和整体一样,使用实心的菱形+实线箭头来表示。
其中连线两段的数字表示基数,表明一个类可以有几个实例,一个人有一个脑袋,所以用1:1表示。
7.依赖(Dependency):
比如,人类要喝水,要吃饭等,体现的是一种依赖关系,
使用虚线箭头来表示。
UML提供9种视图:类图、对象图,用例图,序列图、协作图,状态图、活动图,构件图和部署图。
在UML系统开发中有三个主要的模型:
功能模型: 从用户的角度展示系统的功能,
包括用例图。
对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,
包括类图。
动态模型: 展现系统的内部行为。
包括序列图,活动图,状态图。
下面具体说明:
1.类图:描述一组对象、接口、协作等事物之间的关系。
如下图(摘自 络):
注:#表示protected,+表示Public,-表示private
2.对象图:描述一组对象之间的关系,是具有具体属性值和行为的一个具体事物,
其是类图中所建事物实例的静态快照,
其与类图的主要区别是一个是抽象的,而对象图是具体的。
如下图:
3.用例图:描述一组用例、参与者以及它们之间的关系,
其展示的是该系统在它的外面环境中所提供的外部可见服务。如下图:
4.交互图:包括序列图(顺序图)和协作图,两者对应,
顺序图是强调消息时间顺序,有对象生命线和控制焦点。
协作图是强调接收和发送消息的对象的结构组织,有路径和顺序 。如下图(摘自 络):
序列图:
协作图:
5.状态图:展示了一个状态机,
由状态、转换、事件和活动组成。
强调事件行为的顺序。如下图):
6.活动图:是一种特殊的状态图,实现一个活动到另一个活动的流程。
如下图(摘自 络):
7.构件图和部署图:构件图展示一组构件之间的组织和依赖关系,
并以全局的模型展示出来。
部署图是构件的配置及描述系统如何在硬件上部署。如下图:
|