uml自己总结.docx
《uml自己总结.docx》由会员分享,可在线阅读,更多相关《uml自己总结.docx(34页珍藏版)》请在冰点文库上搜索。
uml自己总结
浅谈UML的概念和模型之UML九种图
UML的全称,统一建模语言(UML是UnifiedModelingLanguage的缩写)是用来对软件系统进行可视化建模的一种语言。
UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言
1、模型?
模型是对现实世界的形状或状态的抽象模拟和简化。
2、为什么要建模?
最简单的理由:
为了能够更好地理解正在开发的系统。
通过建模,可以达到四个目的:
有助于按照需求对系统进行可视化的分析;能够系统的结构或行为;给出了知道构造系统的模板;对做出的决策进行文档化。
3、UML七种视图
二、UML的九种图
1、 用例图(use casediagrams)
【概念】描述用户需求,从用户的角度描述系统的功能
【描述方式】椭圆表示某个用例;人形符号表示角色
【目的】帮组开发团队以一种可视化的方式理解系统的功能需求
【用例图】
2、静态图
(1)、类图(class diagrams)
【概念】显示系统的静态结构,表示不同的实体是如何相关联的
【描述方式】三个矩形
【目的】表示一个逻辑类或实现类,逻辑类通常是用户的业务所涉及的事物;实现类是程序员处理的实体
【类图】
(2)、对象图(object diagrams)
【概念】类图的一个实例,描述系统在具体时间点上所包含的对象以及各个对象的关系
【对象图】
3、交互图——用来描述对象之间的交互关系
(1)、序列图(顺序图)
【概念】描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序
【描述方式】横跨图的顶部,每个框表示每个类的实例或对象;类实例名称和类名称使用冒号分开
【目的】显示流程中不同对象之间的调用关系,还可以显示不同对象的不同调用。
【序列图】
(2)、协作图(Collaborationdiagrams)
【概念】描述对象之间的合作关系,侧重对象之间的消息传递
4、行为图:
描述系统的动态模型和对象之间的交互关系
(1)、状态图(Statechart diagrams)
【概念】描述对象的所有状态以及事件发生而引起的状态之间的转移
【描述方式】起始点:
实心圆;状态之间的转换:
使用开箭头的线段;状态:
圆角矩形;判断点:
空心圆;一个或多个终止点:
内部包含实心圆的圆
【目的】表示某个类所处的不同状态以及该类在这些状态中的转换过程
(2)、活动图(Activity diagrams)
【概念】描述满足用例要求所要进行的活动以及活动时间的约束关系
【描述方式】
1.起始点:
实心圆
2.活动:
圆角矩形
3.终止点:
内部包含实心圆的圆
4.泳道:
实际执行活动的对象
【目的】表示两个或多个对象之间在处理某个活动时的过程控制流程
【活动图】
活动图和状态图区别:
4、实现图
(1)、构件图(Component diagrams)
【概念】描述代码构件的物理结构以及各构件之间的依赖关系
【描述方式】构件
【目的】提供系统的物理视图,根据系统的代码构件显示系统代码的整个物理结构
【构架图】
(2)、部署图(Deployment diagrams)
【概念】系统中硬件的物理体系结构
【描述方式】
1.三维立方体表示部件
2.节点名称位于立方体上部
【目的】显示系统的硬件和软件的物理结构
【部署图】
用例图
UML中使用最多的表述方式就是用例图。
1、用例图是由参与者、用例以及它们之间的关系构成的用于描述系统功能的动态视图。
用例是系统中的一个功能单元,描述一个系统做什么(what)的信息,并不是怎么(how)做。
用例图的作用是描述参与者和用例的关系,表示系统的用户使用了系统中的哪些用例。
2、组成:
用例图组成的概念,我们通过一张图学习:
3、用例之间的关系
(1)、包含
【表示方式】虚线箭头 + include;箭头由基础用例指向被包含用例
【作用】提高用例模型的可维护性;简化描述避免多个用例中重复描述同一段行为或对同一段行为描述不一致
【包含图】
(2)、扩展
【表示方式】虚线箭头 + extend;箭头指向基础用例
【作用】一定条件下,扩展用例为基础用例增加新的行为
【扩展图】
扩展和包含的区别:
扩展关系和包含关系的比较:
1、扩展关系:
基础用例提供一个或多个插入点,扩展用例为插入点提供需要插入的行为;包含关系中只有一个插入点
2、扩展关系:
基础用例执行,扩展不一定执行;包含关系:
基础用例执行,包含用例必须执行
3、扩展关系:
即使没有扩展用例,基础用例本身是完整的包;含关系:
没有包含用例,基础用例本身不完整
为大家简单的举一个机房收费系统的小例子:
(3)、泛化
【表示方式】实线空三角箭头;箭头指向父用例
【作用】子用例继承父用例所有的结构、行为和关系,是父用例的一种特殊形式
【泛化图】
UML类图关系
类与类之间的关系通常有4种,即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization)。
1、依赖关系:
【概念】表示两个或多个模型元素之间语义上的连接关系
【绘图方式】虚线箭头,箭头指向被使用者
【依赖图】
2、泛化关系(继承)
【概念】描述类的一般和具体之间的关系,描述的“isa kindof”的关系
【绘图方式】实线空心三角箭头,箭头指向父类
【继承方式】单继承:
一个类只有一个父类
多继承:
一个类可以有多个父类,可以从每一个父类中获得允许继承的信息
【泛化图】
3、关联关系
【概念】表示一个事物的对象与另一个事物的对象之间的语义上连接,简单的理解为两个类或类与接口之间的强依赖关系
【绘图方式】实线箭头,双向箭头或无箭头
【包括】
(1)、聚焦
【概念】描述的是部分与整体关系,描述了“hasa”的关系,部分离开整体可以单独存在
【绘图方式】空菱形的实线,头部指向整体
【聚集关系图】
(2)、组成
【概念】一种更强形式的关联,在整体中拥有管理部分特有的职责,也被称为强聚合关系,部分不能脱离整体存在
【绘图方式】实菱形的实线,头部指向整体
【组成关系图】
4、实现关系
【概念】将一种模型关系与另一种模型关系连接起来,从而说明和其实现之间的关系,简单的理解为一个类或多个类实现一个接口
【绘图方式】封闭空箭头的虚线,箭头指向接口
【实现关系图】
泛化和实现关系的区别:
泛化关系是指同一语义层的元素连接起来,通常在同一模型内;实现关系将不同语义层内的元素连接起来,通常在不同模型内。
类图
1、类图显示了系统的静态结构。
类图就是用于对系统中的各种概念进行建模,并描绘它们之间关系的图。
再简单一点,类就是一组具有相同结构、行为、关系的一群对象。
2、
1、公有类型(public):
允许在类的外面使用或查看该属性
2、受保护类型(protected):
允许子类访问父类中受保护类型的属性
3、私有类型(private):
只有类本身能够访问,外部一概不能
4、Implementation:
该属性仅仅在被定义的包中才能够可见
2、接口
接口是一种特殊的类,所有接口都是有构造型的类。
表示方式:
实线小圆圈 + 名称
接口关系:
接口同样具有依赖和泛化的关系
依赖:
一个类通过依赖关系与接口相连接,仅仅依赖于接口中的操作
泛化:
跟类之间泛化关系同理
序列图、协作图
1、序列图和协作图都是交互图,彼此等价,可以相互转化。
序列图是对对象之间传送消息的时间顺序的可视化表示。
序列图用于表现交互,侧重于强调时间顺序。
序列图将交互关系表示为一个二维图
虚线表示,此时对象不处于激活状态,双道线,表示对象处于激活状态;消息使用从一个对象的生命线到另一个对象的生命线的箭头表示。
序列图的作用是:
1.确认和丰富一个使用语境的逻辑表达
2.细化用例,将用例表达的需求进一步精细表达
3.有效地描述各个类的职责以及各类具有相应职责的原因
2、协作图
协作:
在一定的语境中一组对象以及实现某些行为的对象间的相互作用。
协作图就是表现对象协作关系的图。
2.1协作图的作用:
1、与序列图第一个相同
2、显示对象及其交互关系的空间组织结构
3、表现一个类操作的实现
2.2协作图的组成:
协作图是由对象、消息和链等构成的。
对象和消息的概念与序列图中的概念是相同的,我重点讲链。
链:
两个或多个对象之间的独立连接,是对象引用元组,是关联的实例。
链的表示形式:
一个或多个相连的线或弧。
3、序列图和协作图的对比:
协作图和序列图表达的信息一样,只是方法不同,可通过适当的方式进行转化。
协作图和序列图的不同点:
1、协作图明确表示了角色关系,通过协作角色来限定协作中的对象或链。
2、协作图不将时间作为单独的维来表示,必须使用顺序号来判断消息的顺序以及并行线程。
3、序列图和协作图都表示对象间的交互作用,序列图侧重时间顺序,协作图侧重对象间的关系,时间顺序可以从对象流经的顺序编号中获得。
4、序列图被用于表示方案,而协作图被用于过程的详细设计。
状态图和活动图
1、 在日常生活中,状态机,我们理解为记录下给定时刻状态的机器,根据不同的输入对每个给定的变化而改变其状态或引发一个动作。
UML中,状态机由对象的各个状态和连接这些状态的转换组成,是展示状态与状态转换的图。
状态图本质上就是一个状态机或是状态机的特殊情况。
由表示状态的节点和表示状态之间转换的带箭头的直线组成。
状态图的概念:
状态图的组成:
2、活动图
活动图是另一个种动态视图,描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。
1、起点【作用】描述活动图的开始状态【表示方式】黑的实心圆
2、终止点【作用】描述活动图的终止状【表示方式】实心圆的空心圆
3、活动【作用】可以是手动也可以自动的执行任务【表示方式】圆角矩形
4、状态【作用】活动的所处状态【表示方式】椭圆矩形
5、转换【作用】描述一个活动转向另一个活动 【表示方式】带箭头的实线段,指向转向的活动
活动图的组成:
3、状态图的作用:
1、清晰描述状态之间的转换顺序,通过转换顺序可以清晰看出事件的执行顺序
2、清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况
3、清晰地描述了状态转换时所必须触发德尔事件、监护条件和动作等影响转换的因素,有利于程序员汇总非法事件的进入
4、通过判断更好地描述工作流因为不同的条件发生的分支
活动图的作用:
5、活动图和状态图的区别:
1、目的不同 活动图的主要目的是描述动作及对象的改变结果,而状态图则是描述对象、子系统、系统在生命周期中的各种行为
2、活动图中的状态转换不需要任何触发事件,状态图则需要触发事件
3、活动图种的动作可以放在泳道中,状态图不可以
构件图和部署图
用来表示实现单元。
1、构件
将系统中可重用的模块封装为具有可替代性的物理单元,称为构件。
构件的特征:
1、代码特征:
包含和封装了实现系统功能的类、其他元素的实现代码以及某些构成系统状态的实例对象
2、身份特征:
构件拥有身份和状态,用于定位在其上的物理对象
2、构件图
构件图是用来表示系统中构件与构件之间、类或接口与构件之间的关系图
2.1构件之间的依赖关系
与类图中类间依赖关系相同,都是使用虚线箭头表示
2.2构件和接口之间的依赖关系
一个构件使用了其他元素的接口,依赖关系可以用箭头的虚线表示,箭头指向接口符号
3、部署图
部署图描述一个系统运行时的硬件节点、在这些节点上运行的软件构件将在何处物理运行以及它们将如何彼此通信的静态视图
UML用例图总结
用例图主要用来描述“用户、需求、系统功能单元”之间的关系。
它展示了一个外部用户能够观察到的系统功能模型图。
【用途】:
帮助开发团队以一种可视化的方式理解系统的功能需求。
用例图所包含的元素如下:
1. 参与者(Actor)
表示与您的应用程序或系统进行交互的用户、组织或外部系统。
用一个小人表示。
2. 用例(UseCase)
用例就是外部可见的系统功能,对系统提供的服务进行描述。
用椭圆表示。
3.子系统(Subsystem)
用来展示系统的一部分功能,这部分功能联系紧密。
4. 关系
用例图中涉及的关系有:
关联、泛化、包含、扩展。
如下表所示:
a.关联(Association)
表示参与者与用例之间的通信,任何一方都可发送或接受消息。
【箭头指向】:
指向消息接收方
b.泛化(Inheritance)
就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。
子用例可以使用父用例的一段行为,也可以重载它。
父用例通常是抽象的。
【箭头指向】:
指向父用例
c.包含(Include)
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。
【箭头指向】:
指向分解出来的功能用例
d.扩展(Extend)
扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。
【箭头指向】:
指向基础用例
e.依赖(Dependency)
以上4种关系,是UML定义的标准关系。
但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。
【箭头指向】:
指向被依赖项
5.项目(Artifact)
用例图虽然是用来帮助人们形象地理解功能需求,但却没多少人能够通看懂它。
很多时候跟用户交流甚至用Excel都比用例图强,VS2010中引入了“项目”这样一个元素,以便让开发人员能够在用例图中链接一个普通文档。
用依赖关系把某个用例依赖到项目上:
然后把项目-》属性 的Hyperlink设置到你的文档上;
这样当你在用例图上双击项目时,就会打开相关联的文档。
6.注释(Comment)
包含(include)、扩展(extend)、泛化(Inheritance) 的区别:
条件性:
泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;
直接性:
泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。
对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。
对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;
一个用例图示例:
牢骚:
感觉用例图还不成熟,并不能很好地表达系统的需求, 没有UML背景的用户几乎不知道画的是些什么。
其次,包含关系、扩展关系的箭头符号竟然是同样的箭头,仅靠上方写个文字来加以区别,翻译成其他语言的话,几乎就不知道代表什么意思。
扩展关系的箭头朝向也很难理解,为何要指向基用例,而不指向扩展用例。
VS2010添加的“项目”元素,是个很好的创新,能够在用例图中关联word,excel这些文档。
但为什么不把这些功能直接集成到用例里面,双击用例就弹出一份文档岂不更容易理解,非要画蛇添足地加一个元件,仅仅为了提供个链接功能。
用例描述表:
鉴于用列图并不能清楚地表达功能需求,开发中大家通常用描述表来补充某些不易表达的用例,下图的表给大家提供一个参考:
UML整体概括
UML(UnifiedModelingLanguage)为面向对象软件设计提供统一的、标准的、可视化的建模语言。
适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。
UML的定义包括UML语义和UML表示法两个部分。
(1)UML语义:
UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方法所造成的影响。
(2)UML表示法:
UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准
UML模型图的构成
事物(Things):
UML模型中最基本的构成元素,是具有代表性的成分的抽象
关系(Relationships):
关系把事物紧密联系在一起
图(Diagrams):
图是事物和关系的可视化表示
UML事物:
UML包含4种事物:
构件事物行为事物 分组事物 注释事物
(1)构件事物:
UML模型的静态部分,描述概念或物理元素它包括以下几种:
类:
具有相同属性相同操作相同关系相同语义的对象的描述。
接口:
描述元素的外部可见行为,即服务集合的定义说明
协作:
描述了一组事物间的相互作用的集合
用例:
代表一个系统或系统的一部分行为,是一组动作序列的集合
构件:
系统中物理存在,可替换的部件
节点:
运行时存在的物理元素
另外,参与者、信号应用、文档库、页表等都是上述基本事物的变体
(2)、行为事物:
UML模型图的动态部分,描述跨越空间和时间的行为:
交互:
实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接
状态机:
描述事物或交互在生命周期内响应事件所经历的状态序列
(3)、分组事物:
UML模型图的组织部分,描述事物的组织结构。
包:
把元素组织成组的机制
(4)、注释事物:
UML模型的解释部分,用来对模型中的元素进行说明,解释。
注解:
对元素进行约束或解释的简单符号
UML关系
依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义
关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系
泛化(generalization)是一种特殊/一般的关系。
也可以看作是常说的继承关系
实现(realization)是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约
UML中的九种图(简单介绍,后期会发表具体的有关九中图的博客)
用例图(UseCaseDiagram):
用例图是从用户角度描述系统功能,是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元
类图(ClassDiagram):
类图描述系统中类的静态结构.不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类内部结构(类的属性和操作);类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关
对象图(ObjectDiagram):
对象图是类图的实例几乎使用与类图完全相同的标识。
他们的不同点在于对象图显示类的多个对象实例,而不是实际的类.
顺序图(SqueneceDiagram):
顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;顺序图的一个用途是用来表示用例中的行为顺序,当执行一个用例行为时,顺序图中的每条消息对应了一个操作或引起状态转换的触发事件
协作图(CollaborationDiagram):
协作图描述对象间的协作关系,协作图跟顺序图相似,显示对象间的动态合作关系。
除显示信息交换外,协作图还显示对象以及他们之间的关系;协作图的一个用途是表示一个类的操作的实现。
状态图(StateChartDiagram):
状态图是一个类对象所可能经历的所有历程的模型图;状态图由对象的各个状态和链接这些状态的转换组成
活动图(ActivityDiagram):
活动图是状态图的一个变体,用来描述执行算法的工作流程中设计的活动;活动图描述了一组顺序的或并发的活动。
构件图(ComponentDiagram):
构件图为系统的构建建模型,构建即构造应用的软件单元,还包括各种构建之间的依赖关系,以便通过这些依赖关系来估计对系统构建的修改给系统可能带来的影响。
部署图(DepoymentDiagram):
部署视图描述位于节点实例上的运行构建实例的安排,节点是一组运行资源,如计算机、设备或存储器。
简单整理UML:
类
是一组具有相同属性、相同操作、相同关系和相同语义的对象的描述
对象
属性:
对象名/类名/
接口
是描述了一个类或构件的一个服务操作集
协作
定义了一个交互,它是由一组共同工作以提供某种协作行为的角色和其他元素构成的群体
用例
是一对一组动作序列的描述
主动类
对象至少拥有一个进程或线程的类
构件
在系统外部与系统直接交互的人或事物
节点
是在运行时存在的物理元素
交互
它由在特定语境中共同完成一定任务的一组对象间交互的消息组成
状态机
它描述了一个对象或一个交互在生命周期内响应时间所经历的状态序列
包
把元素组织成组的机制
注释事物
是UML模型的解释部分
依赖
一条可能有方向的虚线
关联
一条实线,可能有方向
泛化
一条带有空心箭头的实线
实现
一条带有空心箭头的虚线
参与者
在系统外部与系统更直接交互的人或事物
UML的九种模型图
一、作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。
UML语义:
描述基于UML的精确元模型定义。
UML表示法:
定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。
这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。
二、标准建模语言UML可以由下列5类图来定义。
用例图:
从用户角度描述系统功能,并指出各功能的操作者。
静态图:
包括类图和对象图。
类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类的属性和操作,类图描述的是一种静态关系,在系统的整个生命周期都是有效的。
对象图是类图的实例,几乎使用与类图完全相同的标识。
一个对象图是类图的一个实例。
由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
行为图:
描述系统的动态模型和组成对象间的交互关系,包括状态图和活动图。
状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件,状态图是对类图的补充,活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并进行活动。
交互图:
描述对象间的交互关系,包括时序图和协作图。
时序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图描述对象间的协作关系,协作图跟时序图相似,显示对象间的动态合作关系。
除显示信息交换外,协作图还显示对象以及它们之间的关系。
如果强调时间和顺序,则使用时序图;如果强调上下级关系,则选择协作图。
实现图:
包括组件图和部署图。
组件图描述代码部件的物理结构及各部件之间的依赖关系,组件图有助于分析和理解部件之间的相互影响程度;部署图定义系统中软硬件的物理体系结构。
采用UML来设计系统时,第一步是描述需求;第二步根据需求建立系统