UML-看懂UML类图和时序图
- 格式:doc
- 大小:176.00 KB
- 文档页数:6
浅谈UML中常用的几种图1 UML简介2 UML常见图分类3 用况图(用例)4 类图简单类图使用举例5 其他辅助用图●时序图(顺序图)●协作图(Collaboration Diagram/communication Diagram)/通信图●状态图●活动图(Activity Diagram)6 组件图(ComponentDiagram)、配置图(Deployment Diagram)1 UML简介统一建模语言(Unified Modeling Language,UML)又称标准建模语言,是始于1997年的一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。
‘UML感兴趣的可以阅读UML 1规范,包含了UML 的所有知识内容。
注:OMG, Object Management Group 对象管理组织2 UML常见图分类UML从考虑系统的不同角度出发,定义了用况图、类图、对象图、包图、状态图、活动图、序列图、通信图、构件图、部署图等10种图。
分类:面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) 。
“序列图”与“协作图”表述的是相似的消息,“活动图”是“状态图”的一种。
•静态结构图Static Structure Diagram•类图Class Diagram•对象图Object Diagram•用况图Use Case Diagram•交互图Interaction Diagram•顺序图Sequence Diagram•协作图Collaboration Diagram•状态图State chart Diagrams•活动图Activity Diagrams•实现图Implementation Diagrams•构件图Component Diagram•部署图Deployment Diagram3 用况图(用例)用例图,展现了一组用例、参与者(actor)以及它们之间的关系。
UML各种图例面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处.UML中有九种建模的图标,即:∙用例图∙类图∙对象图∙顺序图∙协作图∙状态图∙活动图∙组件图∙配置图本课程中的某些部分包含了这些图的细节信息的页面链接.而且每个部分都有一个小问题,测试一下你对这个部分的理解.为什么UML很重要?为了回答这个问题,我们看看建筑行业.设计师设计出房子.施工人员使用这个设计来建造房子.建筑越复杂,设计师和施工人员之间的交流就越重要.蓝图就成为了这个行业中的设计师和施工人员的必修课.写软件就好像建造建筑物一样.系统越复杂,参与编写与配置软件的人员之间的交流也就越重要.在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”.现在它已经成为了软件行业的一部分了.UML提供了分析师,设计师和程序员之间在软件设计时的通用语言.UML被应用到面向对象的问题的解决上.想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的.一个模型model就是根本问题的抽象.域domain就是问题所处的真实世界.模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的.记住把一个对象想象成“活着的”.对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations).对象的属性的值决定了它的状态state.类Classes是对象的“蓝图”.一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数).对象是类的实例instances.用例图用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象.强调这个系统是什么而不是这个系统怎么工作.用例图与情节紧紧相关的.情节scenario是指当某个人与系统进行互动时发生的情况.下面是一个医院门诊部的情节.“一个病人打电话给门诊部预约一年一次的身体检查.接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录.”用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和.角色actor是发动与这个工作有关的事件的人或者事情.角色简单的扮演着人或者对象的作用.下面的图是一个门诊部Make Appointment用例.角色是病人.角色与用例的联系是通讯联系communication association(或简称通讯communication)角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线.一个用例图是角色,用例,和它们之间的联系的集合.我们已经把Make Appointment作为一个含有四个角色和四个用例的图的一部分.注意一个单独的用例可以有多个角色.用例图在三个领域很有作用.决定特征(需求).当系统已经分析好并且设计成型时,新的用例产生新的需求∙客户通讯.使用用例图很容易表示开发者与客户之间的联系.∙产生测试用例.一个用例的情节可能产生这些情节的一批测试用例.类图类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响.下面是一个顾客从零售商处预定商品的模型的类图.中心的类是Order.连接它的是购买货物的Customer和Payment.Payment有三种形式:Cash,Check,或者Credit.订单包括OrderDetails(line item),每个这种类都连着Item.UML类的符号是一个被划分成三块的方框:类名,属性,和操作.抽象类的名字,像Payment是斜体的.类之间的关系是连接线.类图有三种关系.关联association-表示两种类的实例间的关系.如果一个类的实例必须要用另一个类的实例才能完成工作时就要用关联.在图中,关联用两个类之间的连线表示.dependencies关系.如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B.包是用一个在上方带有小标签的矩形表示的.包名写在标签上或者在矩形里面.点化线箭头表示依赖对象图Object diagrams用来表示类的实例.他们在解释复杂关系的细小问题时(特别是递归关系时)很有用.这个类图示一个大学的Department可以包括其他很多的Departments.这个对象图示上面类图的实例.用了很多具体的例子.UML中实例名带有下划线.只要意思清楚,类或实例名可以在对象图中被省略.每个类图的矩形对应了一个单独的实例.实例名称中所强调的UML图表.类或实例的名称可能是省略对象图表只要图的意义仍然是明确的.顺序图类图和对象图是静态模型的视图.交互图是动态的.他们描述了对象间的交互作用.顺序图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线.消息用从一个对象的生命线到另一个对象生命线的箭头表示.箭头以时间顺序在图中从上到下排列.协作图协作图也是互动的图表.他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色.在序列图中,对象的角色放在上面而消息则是连接线.对象角色矩形上标有类或对象名(或者都有).类名前面有个冒号(:).协作图的每个消息都有一个序列号.顶层消息的数字是1.同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等.状态图对象拥有行为和状态.对象的状态是由对象当前的行动和条件决定的.状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移.我们的模型例图建立了一个银行的在线登录系统.登录过程包括输入合法的密码和个人账号,再提交给系统验证信息.登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及Rejecting.每个状态都有一套完整的转移transitions来决定状态的顺序.状态是用圆角矩形来表示的.转移则是使用带箭头的连线表示.触发转移的事件或者条件写在箭头的旁边.我们的图上有两个自转移.一个是在Getting SSN,另一个则在上Getting PIN.初始状态(黑色圆圈)是开始动作的虚拟开始.结束状态也是动作的虚拟结束.事件或条件触发动作时用(/动作)表示.当进入Validating状态时,对象并不等外部事件触发转移.取而代之,它产生一个动作.动作的结果决定了下一步的状态.活动图活动图activity diagram是一个很特别的流程图.活动图和状态图之间是有关系的.状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程.活动图告诉了我们活动之间的依赖关系.对我们的例子来说,我们使用如下的过程.“通过ATM来取钱.”这个活动有三个类Customer, ATM和Bank.整个过程从黑色圆圈开始到黑白的同心圆结束.活动用圆角矩形表示.。
UML科普⽂,⼀篇⽂章掌握14种UML图前⾔上⼀篇⽂章写了⼀篇建造者模式,其中有⼏个UML类图,有的读者反馈看不懂了,我们今天就来解决⼀哈。
什么是UML?UML是Unified Model Language的缩写,中⽂是统⼀建模语⾔,是由⼀整套图表组成的标准化建模语⾔。
为什么要⽤UML?通过使⽤UML使得在软件开发之前,对整个软件设计有更好的可读性,可理解性,从⽽降低开发风险。
同时,也能⽅便各个开发⼈员之间的交流。
UML提供了极富表达能⼒的建模语⾔,可以让软件开发过程中的不同⼈员分别得到⾃⼰感兴趣的信息。
Page-Jones 在《Fundamental Object-Oriented Design in UML》⼀书中总结了UML的主要⽬的,如下:1. 为⽤户提供现成的、有表现⼒的可视化建模语⾔,以便他们开发和交换有意义的模型。
2. 为核⼼概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
3. 独⽴于特定的编程语⾔和开发过程。
4. 为了解建模语⾔提供⼀个正式的基础。
5. ⿎励⾯向对象⼯具市场的发展。
6. ⽀持更⾼层次的开发概念,如协作,框架,模式和组件。
7. 整合最佳的⼯作⽅法 (Best Practices)。
UML图有哪些?UML图分为结构图和⾏为图。
结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
⾏为图⼜分活动图、⽤例图、状态机图和交互图。
交互图⼜分为序列图、时序图、通讯图、交互概览图。
UML图概览什么是类图?【概念】类图是⼀切⾯向对象⽅法的核⼼建模⼯具。
类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
【⽬的】⽤来表⽰类、接⼝以及它们之间的静态结构和关系。
在类图中,常见的有以下⼏种关系。
泛化(Generalization)【泛化关系】是⼀种继承关系,表⽰⼦类继承⽗类的所有特征和⾏为。
【箭头指向】带三⾓箭头的实线,箭头指向⽗类。
UML快速入门经典教程UML(统一建模语言)是一种用于建模软件系统的标准化语言。
它提供了一种图形化的表示方式,帮助开发者更清楚地理解和描述软件系统的结构和行为。
本文将简要介绍UML的基本概念和主要图形表示方式,以帮助读者快速入门UML。
UML包含了多种类型的图形,用于表示不同方面的系统信息。
其中最常用的图形类型包括用例图、类图、时序图和活动图。
1.用例图用例图用于表示系统的外部行为,描述系统与其用户之间的交互。
在用例图中,用例表示系统的功能需求,参与者表示系统的不同类型的用户。
用例图可以帮助开发者明确系统的功能和用户的需求,并帮助设计流程图和功能结构图。
2.类图类图是描述系统的静态结构的图形化方式。
它表示系统中的类、接口、属性和方法之间的关系。
类图可以帮助开发者理解和描述系统的对象模型,包括类之间的继承、关联和依赖关系等。
3.时序图时序图用于描述系统中的消息传递和对象交互的时间顺序。
它展示了系统中不同对象之间的交互过程和时间顺序。
时序图可以帮助开发者理解系统的动态行为,尤其是对象之间的消息传递过程。
4.活动图活动图用于描述系统的业务流程。
它表示系统中的各个活动和活动之间的顺序关系。
活动图可以帮助开发者理解和描述系统的工作流程,包括输入和输出的过程。
在使用UML进行建模时,需要遵循一些基本的规则和概念:1.抽象和具体类在类图中,抽象类用斜体字表示,具体类用正常字体表示。
抽象类可以定义一些通用的属性和方法,具体类可以继承抽象类并添加自己的独特属性和方法。
2.继承关系在类图中,继承关系用带箭头的实线表示。
箭头指向的是子类,实线表示继承关系。
继承关系表示子类继承了父类的属性和方法,并可以添加自己的特有属性和方法。
3.关联关系在类图中,关联关系使用实线表示。
类之间的关联关系表示一个类与另一个类之间的连接。
关联关系通常是双向的,即两个类之间可以相互访问和引用对方的属性和方法。
4.依赖关系在类图中,依赖关系使用虚线表示。
UML中的时序图详解时序图是UML(统一建模语言)中的一种重要图形工具,用于描述系统中对象之间的交互行为。
它以时间为轴,展示了对象之间的消息传递和交互顺序,帮助开发人员更好地理解系统的运行过程。
本文将详细介绍时序图的概念、元素和使用方法。
一、时序图的概念和作用时序图是一种静态图,主要用于描述对象之间的交互行为和消息传递顺序。
它展示了对象在特定时间段内的状态变化和交互过程,帮助开发人员更好地理解系统中对象之间的关系和通信方式。
时序图可以用于系统设计、软件开发和系统测试等阶段,是一种非常有用的工具。
二、时序图的元素和表示方法1. 对象(Object):时序图中的对象表示系统中的实体,可以是具体的类、接口或模块等。
对象通常用矩形框表示,框内写上对象的名称。
2. 生命周期(Lifeline):时序图中的生命周期表示对象的存在时间,用一条垂直的虚线表示。
生命周期从对象的创建开始,到对象的销毁结束。
3. 消息(Message):时序图中的消息表示对象之间的交互行为,包括方法调用、信号发送等。
消息可以是同步的(Synchronous)或异步的(Asynchronous),同步消息需要等待接收方的响应,而异步消息则不需要等待。
4. 激活(Activation):时序图中的激活表示对象在某个时间段内正在执行的过程,用一条垂直的虚线和一个小矩形框表示。
激活可以嵌套,表示方法的调用和返回过程。
5. 约束(Constraint):时序图中的约束表示对象之间的一些限制条件或约束,如时间限制、数据格式等。
约束通常用方括号括起来,并写在相应的消息上方。
三、时序图的使用方法1. 确定参与对象:首先要确定参与时序图的对象,包括系统的各个模块、类或接口等。
根据系统的需求和功能,选择合适的对象进行建模。
2. 绘制生命周期:根据对象的创建和销毁过程,绘制对象的生命周期。
生命周期用一条垂直的虚线表示,标记对象的创建和销毁时间点。
3. 描述交互过程:根据系统的交互需求,描述对象之间的消息传递和交互顺序。
UML时序图的绘制指南与实例解析UML(统一建模语言)是一种用于软件开发的标准化建模语言,它提供了一种图形化的方式来描述系统的结构和行为。
在UML中,时序图(Sequence Diagram)是一种常用的建模工具,用于展示系统中各个对象之间的交互过程。
本文将为读者提供一份UML时序图的绘制指南,并通过实例解析来帮助读者更好地理解和运用时序图。
一、时序图的基本概念时序图是一种描述对象之间交互行为的图形化工具,它展示了对象之间的消息传递和时间顺序。
在时序图中,每个对象都表示为一个矩形框,框内写上对象的名称。
对象之间的交互通过箭头表示,箭头上标注的是消息的名称和参数。
时序图按照从上到下的顺序表示时间的流逝,从而展示了系统中对象之间的交互过程。
二、时序图的绘制步骤1. 确定参与者:首先,需要确定在时序图中需要包含哪些对象或者参与者。
参与者可以是系统的各个模块、用户、外部接口等。
将每个参与者表示为一个矩形框,并在框内写上其名称。
2. 确定消息:接下来,需要确定对象之间的交互过程,并将其表示为消息。
消息可以是方法调用、事件触发等。
在时序图中,消息通常用箭头表示,箭头上标注的是消息的名称和参数。
3. 确定时间顺序:在时序图中,对象之间的交互是按照时间顺序展示的,因此需要确定每个消息发生的时间顺序。
可以通过在时序图中添加垂直虚线来表示时间的流逝,从而更清晰地展示对象之间的交互过程。
4. 添加约束条件:有时候,对象之间的交互过程可能会受到一些约束条件的限制,比如并发执行、条件判断等。
在时序图中,可以使用条件框来表示这些约束条件,从而更准确地描述系统的行为。
三、时序图的实例解析为了更好地理解和运用时序图,我们以一个简单的购物系统为例进行实例解析。
在这个购物系统中,主要包含三个参与者:用户、购物车和商品。
用户可以将商品添加到购物车,并进行结算。
首先,我们将用户、购物车和商品分别表示为三个矩形框,并在框内写上其名称。
接下来,我们确定对象之间的交互过程。
UML之顺序图⼀定义顺序图是将交互关系表⽰为⼀个⼆维图。
纵向是时间轴(⽣命线),时间沿竖线向下延伸。
横向轴代表了在协作中各独⽴对象的类元⾓⾊。
类元⾓⾊⽤⽣命线表⽰。
当对象存在时,⾓⾊⽤⼀条虚线表⽰,当对象的过程处于激活状态时,⽣命线是⼀个双道线;⼆顺序图的要素活动者,对象、⽣命线、控制焦点、消息活动者:活动的发起⼈活着活动的承受者。
对象:活动中交互的实体,三种表⽰如下:⽣命线:描述对象的⽣存周期,对象下⽅的虚线就是⽣命线,如上图。
控制焦点:指活动者或对象执⾏状态的时间段:消息:消息⽤于描述对象间交互的⽅式和内容:1.同步消息:⼀个对象向另⼀个对象发出同步消息后,将处于阻塞状态,⼀直等到另⼀个对象的回应。
2.异步消息:⼀个对象向另⼀个对象发出异步消息后,这个对象可以进⾏其他的操作,不需要等到另⼀个对象的响应。
3.返回消息:同步消息的返回消息4.⾃关联消息:⽤来描述对象内部函数的互相调⽤。
1.条件判断:⽤于描述代码中if…else…这种结构标记为“alt” 例如:2.可选:是⼀种特殊的“条件判断”,它只是⼀个if,没有else if或else 可选的标记为:opt 例如:3.循环:是指代码中的for、while之类的语句块。
循环的标记为:loop例如:下图中[m,n]是指⾄少执⾏m次,最多执⾏n次4.同步:⽤于描述多线程的情况。
同步的标记是:par 例如:顺序图的引⽤:在⼀个顺序图中,可以引⽤另⼀个顺序图,其引⽤⽅式类似于复合⽚段,标签为:ref 例如:三:画顺序图的步骤1. 确定交互的范围2. 确定参与交互的活动者与对象3. 确定活动者、对象的⽣存周期4. 确定交互中产⽣的消息5. 细化消息的内容四:酒店预订的⼀个⽤例(寻找酒店)代码实例:五:⽤例图、活动图、时序图之间的关系六:类图与时序图之间的关系类图描述系统的静态结构,时序图描述系统的动态⾏为。
若出现了⼀个新的消息(不是类中的操作),则需要为类添加⼀个新的操作。
UML实践----用例图、顺序图、状态图、类图、包图、协作图2009-01-20 作者:Randy Miller 来源:网络面向对象的问题的处理的关键是建模问题。
建模可以把在复杂世界的许多重要的细节给抽象出。
许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处。
UML中有九种建模的图标,即:∙用例图∙类图∙对象图∙顺序图∙协作图∙状态图∙活动图∙组件图∙配置图本课程中的某些部分包含了这些图的细节信息的页面链接。
而且每个部分都有一个小问题,测试一下你对这个部分的理解。
为什么UML很重要?为了回答这个问题,我们看看建筑行业。
设计师设计出房子。
施工人员使用这个设计来建造房子。
建筑越复杂,设计师和施工人员之间的交流就越重要。
蓝图就成为了这个行业中的设计师和施工人员的必修课。
写软件就好像建造建筑物一样。
系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。
在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。
现在它已经成为了软件行业的一部分了。
UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。
UML被应用到面向对象的问题的解决上。
想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的。
一个模型model就是根本问题的抽象。
域domain就是问题所处的真实世界。
模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的。
记住把一个对象想象成“活着的”。
对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。
对象的属性的值决定了它的状态state。
类Classes是对象的“蓝图”。
一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。
对象是类的实例instances。
用例图用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象。
13种uml简介、工具及示例UML(Unified Modeling Language)是一种用于软件开发的标准化建模语言,它使用图形表示法来描述软件系统的不同方面。
在软件开发过程中,使用UML可以帮助开发人员更清晰地理解系统的结构和行为,从而更好地进行设计和实现。
UML提供了包括结构模型、行为模型和交互模型在内的多种建模方式,其中每种模型都有各自的符号和语法规则。
通过使用这些模型,开发人员可以将系统分解成不同的部分,然后逐步细化这些部分的设计,以便更好地组织和管理项目。
在UML中,最常用的建模元素包括用例图、类图、时序图、活动图、状态图等。
每种图表都有其特定的用途和表达能力,开发人员可以根据实际需要选择合适的图表进行建模。
除了建模元素外,UML还定义了一系列的建模工具,这些工具可以帮助开发人员更高效地进行建模和分析。
其中一些常用的建模工具包括Enterprise Architect、Rational Rose、StarUML等。
下面将对13种UML简介、工具及示例进行详细介绍:1. 用例图(Use Case Diagram)用例图是UML中描述系统功能和用户交互的基本图表之一。
它用椭圆表示用例,用直线连接用例和参与者,展示了系统外部用户和系统之间的交互。
用例图可以帮助开发人员更清晰地理解系统的功能需求,从而指导系统的设计和实现。
示例:一个简单的在线购物系统的用例图包括用例“浏览商品”、“添加商品到购物车”、“提交订单”等,以及参与者“顾客”和“管理员”。
2. 类图(Class Diagram)类图是UML中描述系统结构和静态关系的基本图表之一。
它用矩形表示类,用线连接类之间的关系,包括关联关系、聚合关系、继承关系等。
类图可以帮助开发人员更清晰地理解系统的对象结构和类之间的关系,从而支持系统的设计和重构。
示例:一个简单的学生信息管理系统的类图包括类“学生”、“课程”、“教师”等,以及它们之间的关系如“选修”、“授课”等。
UML中包括九种图:用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、配置图。
1)用例图(Use Case Diagram)它是UML中最简单也是最复杂的一种图。
说它简单是因为它采用了面向对象的思想,又是基于用户视角的,绘制非常容易,简单的图形表示让人一看就懂。
说它复杂是因为用例图往往不容易控制,要么过于复杂,要么过于简单。
用例图表示了角色和用例以及它们之间的关系。
2)类图(Class Diagram)是最常用的一种图,类图可以帮助我们更直观的了解一个系统的体系结构。
通过关系和类表示的类图,可以图形化的方式描述一个系统的设计部分。
3)对象图()对象图是类图的实例,几乎使用与类图完全相同的标识。
它们的不同点在于对象图显示类的多个对象实例,而不是实例的类。
一个对象图是类图的一个实例。
由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
4)状态图描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。
通常创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。
5)时序图又称顺序图,描述了对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。
顺序图由一组对象构成,每个对象分别带有一条竖线,称作对象的生命线,它代表时间轴,时间沿竖线向下延伸。
顺序图描述了这些对象随着时间的推移相互之间交换消息的过程。
消息用从一务垂直的对象生命线指向另一个对象的生命线的水平箭头表示。
图中还可以根据需要增加有关时间的说明和其他注释。
6)协作图协作图用于显示组件及其交互关系的空间组织结构,它并不侧重于交互的顺序。
协作图显示了交互中各个对象之间的组织交互关系以及对象彼此之间的链接。
与序列图不同,协作图显示的是对象之间的关系。
另一方面,协作图没有将时间作为一个单独的维度,因此序列号就决定了消息及并发线程的顺序。
协作图是一个介于符号图和序列图之间的交叉产物,它用带有编号的箭头来描述特定的方案,以显示在整个方案过程中消息的移动情况。
2.设计模式常⽤的UML图分析(⽤例图、类图与时序图)1-⽤例图概述1. 展现了⼀组⽤例、参与者以及他们之间的关系。
2. ⽤例图从⽤户⾓度描述系统的静态使⽤情况,⽤于建⽴需求模型。
⽤例特征保证⽤例能够正确捕捉功能性需求,判断⽤例是否准确的依据。
1. ⽤例是动宾短语2. ⽤例是相互独⽴的3. ⽤例是由⽤户参与者启动的4. ⽤例要有可观测的执⾏结果5. ⼀个⽤例是⼀个单元参与者 ActorUML中,参与者使⽤⼀个⼩⼈表⽰:1. 参与者为系统外部与系统直接交互的⼈或事务,于系统外部与系统发⽣交互作⽤2. 参与者是⾓⾊⽽不是具体的⼈3. 代表参与者在与系统打交道时所扮演的⾓⾊4. 系统实际运作中,⼀个实际⽤户可能对应系统的多个参与者。
不同⾓⾊也可以只对应⼀个参与者,从⽽代表同⼀参与者的不通实例⽤例 Use Case系统外部可见的⼀个系统功能单元。
系统的功能由系统单元所提供,并通过⼀系列系统单元与⼀个或多个参与者之间交换的消息所表达。
系统单元⽤椭圆表⽰,椭圆中的⽂字简述系统功能:关系 Relationship常见关系类型有关联、泛化、包含和扩展关联 Association表⽰参与者与⽤例之间的通信,任何⼀⽅都可发送或接受消息。
箭头指向:指向消息接收⽅:⼦系统 SubSystem⽤来展⽰系统的⼀部分功能(紧密联系)泛化 Inheritance继承关系,⼦⽤例和⽗⽤例相似,但表现出更特别的⾏为;⼦⽤例将继承⽗⽤例的所有结构、⾏为和关系。
⼦⽤例可以使⽤⽗⽤例的⼀段⾏为,也可以重载它。
⽗⽤例通常是抽象。
箭头指向:指向⽗⽤例2-类图描述系统中的类,以及各个类之间的关系的静态试图。
表⽰类、接⼝以及它们之间的协作关系,⽤于程序设计阶段。
注意:1. 抽象类或抽象⽅法⽤斜体表⽰2. 如果是接⼝,则在类名上⽅加 <<Interface>>3. 字段和⽅法返回值的数据类型⾮必需4. 静态类或静态⽅法加下划线类图实例:类图中的事务及解释如图,类图从上到下分为三部分,分别为类名、属性和操作1. 属性:如果有属性,则每⼀个属性都必须有⼀个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等2. 操作:如果有操作,则每⼀个操作也都有⼀个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等类图中的六种关系1.实现关系 implements (类实现接⼝)⽤空⼼三⾓虚线表⽰2.泛化关系 extends (表⽰⼀般与特殊的关系) is-a⽤空⼼三⾓实线表⽰3.组合关系 (整体与部分的关系) contains-a实⼼菱形实现表⽰eg.有头类、⾝体类与⼈类类三个类,则⼈类类中应包含头类及⾝体类这两个属性,则⼈类类与头类和⾝体的关系即为组合关系。
UML:图的分类及作⽤(共5类图,有9种图形)第⼀类:⽤例图:从⽤户⾓度描述系统功能,并指出各功能的操作者。
第⼆类:静态图:包括类图、对象图和包图。
1、类图:表⽰类之间的联系如关联、依赖、聚合等,包括类的内部结构(类的属性和操作)。
在系统的整个⽣命周期都是有效的 2、对象图:表⽰类图的⼀个实例,对象图只能在系统某⼀时间段存在。
3、包图:表⽰包与包之间的关系。
包图⽤于描述系统的分层结构。
第三类:⾏为图:状态图、活动图。
描述系统的动态模型和组成对象间的交互关系。
1、状态图:是对类图的补充,描述类的对象所有可能的状态以及事件发⽣时状态的转移条件。
在实⽤上并不需要为所有的类画状态图,仅为那些有多个状态其⾏为受外界环境的影响并且发⽣改变的类画状态图。
2、描述满⾜⽤例要求所要进⾏的活动以及活动间的约束关系,有利于识别并⾏活动。
第四类:交互图:包括顺序图 ,协作图(即合作图) 1、顺序图:强调的是时间和顺序的关系 2、协作图:强调的是上下级关系第五类:实现图:构件图,描述代码部件的物理结构及各部件之间的依赖关系。
从应⽤的⾓度看,当采⽤⾯向对象技术设计系统时,⾸先是描述需求;其次根据需求建⽴系统的静态模型,以构造系统的结构;第三步是描述系统的⾏为。
其中在第⼀步与第⼆步中所建⽴的模型都是静态的,包括⽤例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语⾔UML的静态建模机制。
其中第三步中所建⽴的模型或者可以执⾏,或者表⽰执⾏时的时序状态或交互关系。
它包括状态图、活动图、顺序图和合作图等四个图形,是标准建模语⾔UML的动态建模机制。
因此,标准建模语⾔UML的主要内容也可以归纳为静态建模机制和动态建模机制两⼤类。
总结:1、静态图:包括⽤例图、类图(包含包)、对象图、组件图和配置图等五个图形,⾸先是描述需求;其次根据需求建⽴系统的静态模型,以构造系统的结构; 2、动态图:包括状态图、活动图、顺序图和合作图等四个图形,是描述系统的⾏为;。
【UML】时序图Sequencediagram(交互图)(转)前⾔UML时序图是UML动态图之⼀,它是强调时间顺序的交互图。
定义时序图是显⽰按时间顺序排列的对象之间交互的图。
组成元素对象包括三种命名⽅式:第⼀种⽅式包括对象名和类名;第⼆中⽅式只显⽰类名不显⽰对象名,即表⽰他是⼀个匿名对象;第三种⽅式只显⽰对象名不显⽰类名。
⽣命线⽣命线在顺序图中表⽰为从对象图标向下延伸的⼀条虚线,表⽰对象存在的时间。
消息消息形式:1、call调⽤。
2、Return返回。
3、Send发消息。
4、Create创建实例。
5、Destroy销毁。
消息表⽰⽅式:UML时序图中消息⼀般分为同步消息(SynchronousMessage),异步消息(AsynchronousMessage)和返回消息(ReturnMessage)。
同步消息(调⽤消息)消息的发送者把控制传递给消息的接收者,然后停⽌活动,等待消息的接收者放弃或者返回控制。
⽤来表⽰同步的意义。
异步消息消息发送者通过消息把信号传递给消息的接收者,然后继续⾃⼰的活动,不等待接受者返回消息或者控制。
异步消息的接收者和发送者是并发⼯作的。
返回消息返回消息表⽰从过程调⽤返回。
⾃关联消息表⽰⽅法的⾃⾝调⽤以及⼀个对象内的⼀个⽅法调⽤另外⼀个⽅法。
激活表⽰该对象被占⽤以完成某个任务;去激活表⽰该对象处于空闲状态,在等待消息。
机房收费系统时序图这是我的机房时序图,欢迎⼤家提出宝贵建议。
总结UML时序图是显⽰对象之间交互的图,这些对象是按时间顺序排列的。
顺序图中显⽰的是参与交互的对象及其对象之间消息交互的顺序。
时序图和协作图是两个可以互相转化的动态图,这也看出了UML中两个图之间的关联以及他们在实际应⽤中的作⽤。
用例图:描绘不同系统用户群是如何同这个系统交互。
用例定义和描述用户从系统中获取价值的各种方法。
创建一个用例模型需要三个步骤:1 确定使用这个系统的人群2 确定这些人群是如何从系统中获取价值3 用一个简单易懂的视图来描述这些用户以及他们如何使用系统第一步:寻找参与者(actor)确定使用该系统的各种人群,一种人群称为参与者(actor),使用这个系统或被这个系统使用的其他系统也是参与者。
参与者定义:指在某个系统的外部并和该系统交互的一群人或一个系统。
例:下列小组都是参与者1 银行客户和柜员分别是单独的参与者,因为他们有着不同的需求和权限2 大多数游戏系统中,男人和女人没必要分成单独的参与者3 学生和登记管理员是单独的参与者,有不同的需求和访问第二步:寻找用例(use case)系统为参与者提供一个独立的价值所采用的方式称之为用例.用例必须是集中的,并有一个明确的目标如果用例满足以下条件,则是集中的:1 用例应带来独立的好处2 可以用20-30个单词来描述这个好处3 参与者能通过一次会话完成该用例例:银行系统有输入帐号、选择帐号、取款、存款、选择源帐号、选择目标帐号、资金转移等功能,如果将这些动作都作为用例则显得太细,不能满足独立条件。
比如,没有一个用户会在选择一个帐号后就满意的离开!但是,如果只为一个用例---资金管理,则又显得太笼统。
好的用例应提供一个具体的用途!取款、存款、转账等都可以是好的用例,均提供了具体的用途!第三步描述参与者与用例UML中,参与者用棒形人表示,用例用带标记的椭圆来表示参与者指向用例的带箭头的实线表示这个参与者触发该用例,比如:利用用例描述需求:1 用例描述说明用例的概况和特征,比如,前置条件、后置条件、性能需求、安全要求、部署约束等。
前置条件—包括参与者启动这个用例之前必须完成的所有其他用例后置条件—包括这个用例对系统所作的所有改变部署约束—描述访问这个用例的所有约束2 事件流描述参与者在完成用例的过程中发生的一系列的交互行为。
三、UML的十种视图1.用例图(use case diagram)从系统的外部用户的观点看系统应具有的功能。
它只说明系统实现什么功能,而不必说明如何实现。
用例图主要用于对系统,子系统或类的行为进行建模。
2.类图(class diagram)描述系统的静态结构,类图的节点表示系统中的类及其属性和操作,边表示类之间的联系(包括继承(泛化)、关联、聚集)。
3.对象图(object diagram)类图的一种变形,所使用的符号与类图基本相同。
在对象名下面要加下划线。
(图略)4.包图(packet diagram)包是基于模型元素的含义或作用将模型元素分组的一种机制。
通过分组,可提高模型的维持性。
包之间的关系包括继承、构成与依赖。
5.顺序(时序)图(sequence diagram)交互图之一。
描述了在时间上对象交互的安排,展现了多个交互对象以及信息交流的序列。
时序图包含对象、对象的生命线、按顺序对象间的信息交流、控制焦点(可选的)。
6.合作(协作)图(collaboration diagram)交互图之二,强调发送和接收消息的对象间的结构组织,它与顺序图是等价的。
在图形上,协作图是顶点和弧的结合。
协作图包含对象、链、消息。
(图片来自《软件工程(第二版)》齐治昌、谭庆平、宁洪)7.状态图(statechart diagram)状态图描述类的对象的动态行为。
它包含对象所有可能的状态、活动图描述系统为完成某项功能而执行的操作序列,这些在每个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。
操作序列可以并发和同步。
8.活动图(activity diagram)活动图中包含控制流和信息流。
控制流表示一个操作完成后对其后续操作的触发,信息流则刻画操作之间的信息交换。
提供了对工作流进行建模的途径,活动图中的活动,表示执行工作流中一组的动作。
一旦结束,控制流将自动转移到下一个活动,或通过转换进入下一个状态。
9.构件图(component diagram)提供当前模型的物理视图,对系统的静态实现视图进行建模。
uml时序图1.时序图的概念时序图定义 : 描述了对象之间传递消息的时间顺序, ⽤来表⽰⽤例中的⾏为顺序, 是强调消息时间顺序的交互图;时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换以完成的期望⾏为的消息, 时序图中每条消息都代表了类的⼀个操作或者引起状态机改变的触发事件;时序图表⽰ : 参与交互的对象在时序图顶端⽔平排列, 每个对象的底端绘制了⼀条垂直虚线, 对象A像对象B发送消息, ⽤⼀条带箭头的实线表⽰, 该实线起始于对象A底部的虚线, 终⽌于对象B底部的虚线; 实线箭头⽔平放置, 越靠近顶端越早被发送.时序图轨迹 : 时序图提供了随时间推移的, 清晰的可视化的轨迹;2. 时序图组成时序图组成 : 时序图包括四个元素对象(Object), ⽣命线(Lifeline), 激活(Activation), 消息(Message);(1) 对象(Object)对象 : 时序图中的对象在交互中扮演的⾓⾊就是对象;对象的符号 : 时序图中的对象与对象图中的表⽰⽅法⼀样, 使⽤矩形将对象名称包含起来, 并且对象名称下有下划线;对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进⾏创建;– 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;– 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;(2) ⽣命线(Lifeline)⽣命线 : ⽣命线是⼀条垂直的虚线, 这条虚线表⽰对象的存在, 在时序图中, 每个对象的底部都有⽣命线;⽣命线作⽤ : ⽣命线是⼀个时间线, 从时序图顶部⼀直到底部都存在, 其长度取决于交互的时间;对象的⽣命线 : 对象与⽣命线结合在⼀起就是对象的⽣命线, 这个概念包含对象图标以及对象下⾯的⽣命线图标如上图;(3) 激活(Activation)激活(Activation) : 代表时序图中对象执⾏⼀项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表⽰该对象被占⽤以完成某个任务;去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;激活的表⽰ : 当对象处于激活时期, ⽣命线可以拓宽为矩形, 这个矩形条成为激活条;激活去激活的时机 :– 激活 : 对象激活是在激活条的顶部激活;– 去激活 : 激活条的底部去激活, 通常发⽣在⼀个消息离开对象⽣命线;(4) 消息消息概念 : 定义交互和协作中交换信息的类, 对对象之间的通信内容建模;消息动作 :– 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过发送和接收消息进⾏通信;– 产⽣结果 : 消息可以触发操作, 唤起信号, 或使⽬标对象创建或销毁;消息的异步和同步通信 :– 异步通信 : 消息是信号的时候, 发送信号之后, 等待对⽅触发相应⽅法, 这是明确的命名的对象间的异步通信;– 同步通信 : 直接调⽤对象的⽅法, 执⾏⽅法返回结果, 这种具有返回控制机制的操作是同步通信;时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系;消息类型 :– : 两个对象间绘制消息;– : 两个对象之间的过程调⽤;– : 两个对象之间的异步消息;– : 过程调⽤中返回的消息;– : 绘制反⾝消息;3. 时序图⽰例⽰例简介 :– 使⽤场景 : 汽车租赁公司;– 使⽤的对象 : Customer (客户), Worker (⼯作⼈员), Order (请求), Record (记录), Car (汽车);– ⼯作流程 : ①客户向⼯⼈提出租车要求, ②⼯⼈检查请求, ③客户付款, ④⼯⼈填写记录, ⑤⼯⼈取车;时序图 :4. 对象的创建和撤销对象位置 :– 顶部 : 时序图中对象的默认位置是在时序图顶部, 这表明对象在交互开始之间就已经存在;– 中间 : 如果对象在时序图中间部分, 说明对象时在交互过程中创建的;交互过程中创建对象的⽅法 :– 消息指向对象 : 消息是构造⽅法, 箭头指向对象所代表的的矩形;– 消息指向激活条 : 消息是构造⽅法, 箭头指向对象下⾯的激活条;撤销对象 : 如果想要在时序图中撤销⼀个对象, 因为如果同时有⼏个对象, 如果不进⾏特殊操作其⽣命周期将会⼀样长;– 效果图 : 下图中将 Customer 和 Order 对象撤消了, 因为它们基本没有参与后期的交互;5. 时序图建模技术时序图使⽤时机 : 对动态⾏为建模, 强调时间展开信息的次序的时候, 使⽤时序图;时序图管理策略 :– 单⼀控制流 : ⼀个单独的时序图只能显⽰⼀个控制流;– 多个时序图 : 完整的控制流很复杂, 可以绘制多个时序图, ⼀个主⼲时序图, 多个分⽀时序图, 使⽤包对这些时序图进⾏管理;时序图建模策略 :– 设置交互语境 : 交互所在的环境, 包括哪些对象, 属于什么系统, ⼦系统, 相关的操作类⽤例等;– 对象排列顺序 : 根据对象重要性, 从左到右排列在时序图中;– 对象⽣命线 : 对象通常存在于交互的整个过程, 也可以在交互过程中被创建和撤销;– 消息排列 : 引发交互信息之后, 消息按照时间顺序从上向下画出, 先发出的消息在后发出的消息上⾯;– 激活期设置 : 可以将实际操作发⽣的时间点消息明确的显⽰出来;– 时间空间约束 : 每个消息都可以附加合适的时间和空间约束;– 前置后置条件 : 每条消息可以附加前置或后置条件;。
UML建模的六种图解释与应用UML(Unified Modeling Language)是一种用于软件系统开发和设计的标准化语言,由Grady Booch、James Rumbaugh和Ivar Jacobson等大师共同开发。
UML不仅具有图形化表示系统结构的能力,还能够从不同角度分析和设计软件系统的结构。
UML中的图形化表示是UML建模的关键特点之一,下面将解释UML的六种图。
一、用例图用例图是UML建模的第一种图形化表示法,它对系统的功能进行了整体把握,并说明系统和外部环境之间的交互关系。
在用例图中,系统和外部的人员和物体都表示成参与者,而系统和外部参与者之间的交互行为则用用例来描述,用例可以表示系统的内部处理过程或与外界协调完成的事件。
例如,我们可以使用用例图来表示一个在线购物网站的功能,网站本身就是一个系统,用户可以通过在网站上购买商品,而交互行为包括注册、登录、搜索商品、加入购物车、下订单以及查询订单等操作。
在用例图中,网站就是系统,用户是参与者,用例分别表示各种交互功能。
二、类图类图是UML建模的第二种图形化表示法,它主要用于定义系统中的对象的属性和方法,并描述这些对象之间的关系。
在类图中,类是表示系统中实际对象的模型,类包括类名、属性和方法,类之间的关系一般有继承、关联、聚合和组合四种。
例如,我们可以使用类图来表示一个学生选课系统,其中学生和课程就是类,属性包括学生的姓名、学号、所选课程等,方法包括选课、退课等,类之间的关系可以用关联和聚合来表示。
三、时序图时序图是UML建模的第三种图形化表示法,它主要用于描述系统中的对象之间的交互过程,包括对象之间的消息传递、方法调用以及时间顺序等。
在时序图中,对象一般用竖直方向的生命线表示,消息则用水平方向的箭头表示,并标明消息发送者、接受者和消息内容,可以清晰地描述系统中复杂的交互过程。
例如,我们可以使用时序图来表示一个学生选课系统中学生选课的整个流程,从学生登陆网站开始,选择课程和提交选课申请,再到后台管理员审核后确认选课,之后再将该课程加入到学生的选课列表,最后生成成绩单等交互流程。
看懂UML类图和时序图
这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系;能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对日常的工作和交流;同时,我们应该能将类图所表达的含义和最终的代码对应起来;有了这些知识,看后面章节的设计模式结构图就没有什么问题了;
本章所有图形使用Enterprise Architect 9.2来画,所有示例详见根目录下的design_patterns.EAP
从一个示例开始
请看以下这个类图,类之间的关系是我
车的类图结构为<<abstract>>,表示车是一个抽象类;
∙它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;
∙小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;
∙小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;
∙学生与班级之间是聚合关系,使用带空心箭头的实线表示;
∙学生与身份证之间为关联关系,使用一根实线表示;
∙学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;
下面我们将介绍这六种关系;
类之间的关系
泛化关系(generalization)
类的继承结构表现在UML中为:泛化(generalize)与实现(realize):
继承关系为is-a的关系;两个对象之间如果可以用is-a 来表示,就是继承关系:(..是..)
eg:自行车是车、猫是动物
泛化关系用一条带空心箭头的直接表示;如下图表示(A继承自B);
eg:汽车在现实中有实现,可用汽车定义具体的对象;汽车与SUV之间为泛化关系;
注:最终代码中,泛化关系表现为继承非抽象类;
实现关系(realize)
实现关系用一条带空心箭头的虚线表示;
eg:”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才可以用来定义对象(”车”这个类在C++中用抽象类表示,在JAVA中有接口这个概念,更容易理解)
注:最终代码中,实现关系表现为继承抽象类;
聚合关系(aggregation)
聚合关系用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,或者说B 由A组成;
聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成;
与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如,部门撤销了,人员不会消失,他们依然存在;
组合关系(composition)
组合关系用一条带实心菱形箭头直线表示,如下图表示A组成B,或者B由A组成;
与聚合关系一样,组合关系同样表示整体由部分构成的语义;比如公司由多个部门组成;
但组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如,公司不存在了,部门也将不存在了;
关联关系(association)
关联关系是用一条直线表示的;它描述不同类的对象之间的结构关系;它是一种静态关系,通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构;所以,关联关系是一种“强关联”的关系;
比如,乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;
关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但B不知道A;
注:在最终代码中,关联对象通常是以成员变量的形式实现的;
依赖关系(dependency)
依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;
与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化;依赖关系也可能发生变化;
显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;
注:在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还是“使用”对方的方法和属性;
时序图
为了展示对象之间的交互细节,后续对设计模式解析的章节,都会用到时序图;
时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。
时序图中显示的是参与交互的对象及其对象之间消息交互的顺序。
时序图包括的建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等。
关于时序图,以下这篇文章将概念介绍的比较详细;更多实例应用,参见后续章节模式中的时序图;
附录
在EA中定义一个抽象类(其版型为《abstract》)。