UML 各种图总结精华
UML类图关系大全(ROSE画图)

UML类图关系大全(ROSE画图)1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。
对象引用本身就是有向的,更适合表达我们所讨论的那种关系。
所以这种关系在设计的时候比较少用到,关联一般都是有向的。
使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。
没有生命期的依赖。
一般是表示为一种引用。
生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。
自身关联(反身关联):自己引用自己,带着一个自己的引用。
代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。
2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。
这句话怎么解,请看下面组合里的解释)。
代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。
但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。
UML中 九种 图

UML 中有九种建模的图标,即:
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保1据护过生高管产中线工资敷艺料设高试技中卷术资0配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体2资2配料,置试而时卷且,调可需控保要试障在验各最;类大对管限设路度备习内进题来行到确调位保整。机使在组其管高在路中正敷资常设料工过试况程卷下中安与,全过要,度加并工强且作看尽下护可都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷.编工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试5术写卷、交重保电底要护气。设装设管备置备4线高动调、敷中作试电设资,高气技料并中课术3试且资件中、卷拒料中包管试绝试调含路验动卷试线敷方作技槽设案,术、技以来管术及避架系免等统不多启必项动要方方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,处在组理事在;前发同掌生一握内线图部槽纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
UML图详解(八)——状态机(状态图和活动图)

UML图详解(⼋)——状态机(状态图和活动图)⼀、概念状态图和活动图是状态机的两种表现形式。
利⽤状态机可以精确地描述对象的⾏为。
从对象的初始状态起,开始响应事件并执⾏某些动作,这些事件引起状态的转换;对象在新状态下⼜开始响应事件和执⾏动作,如此连续进⾏直到终结状态。
⼆、状态图状态图(State Diagram)=状态(State)+迁移(Transition)⼀个状态图描述⼀个状态机。
状态图表现从⼀个状态到另⼀个状态的控制流。
<1>状态图的语法1>除了状态中的初始状态(实⼼圆)和终⽌状态(⽜眼形状),其它状态⽤⼀个圆⾓矩形表⽰转换表⽰状态间可能的路径,⽤箭头表⽰事件/动作写在由它们触发引起的转换上<2>状态2>状态⼀般是给定类对象中的⼀组属性值,在其所在的上下⽂中应该唯⼀,但可以匿名。
在对系统建模时,我们可以只关⼼那些明显影响对象⾏为的属性以及由他们表达的对象状态,⽽不⽤理睬那些于对象⾏为⽆关的状态。
表⽰⽅式:状态由⼀个带圆⾓的矩形表⽰。
应⽤标签标⽰状态的内部活动。
语法:标签/活动表达式UML提供的标签:1. entry:当进⼊⼀个状态的时候被⾃动触发,该活动在状态中其它任何活动之前被⾃动触发。
2. do:当状态处于激活时执⾏do活动,do活动在进⼊活动之后执⾏,并且⼀直运⾏到它本⾝完成为⽌。
3. exit:当离开⼀个状态的时候被⾃动触发,该活动在该状态结束之前、所有其它活动都完成后被触发。
状态可以嵌套状态图,此时状态称为组成状态,否则为简单状态。
⼊⼝事件表⽰⼀个⼊⼝的动作序列,它在进⼊状态时执⾏。
⼊⼝事件的动作是原⼦的,并且先于⼈和内部活动或转换。
出⼝事件表⽰⼀个出⼝的动作序列,它在退出状态时执⾏。
出⼝事件也是原⼦的,它跟在所有的内部活动之后,但是先于所有的出⼝转换。
1. 简单状态(Simple State)2. 复合状态(Composite State)复合状态可以有多组状态图,每组⽤虚线分割开来。
UML类图关系大全(经典)

UML类图关系大全1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。
对象引用本身就是有向的,更适合表达我们所讨论的那种关系。
所以这种关系在设计的时候比较少用到,关联一般都是有向的。
使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。
没有生命期的依赖。
一般是表示为一种引用。
生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。
自身关联(反身关联):自己引用自己,带着一个自己的引用。
代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。
2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。
这句话怎么解,请看下面组合里的解释)。
代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。
但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。
UML九种建模图--顺序图

UML九种建模图--顺序图概述顺序图是⼀种交互图(interaction diagram).交互图展现了⼀种交互,它由⼀组对象或参与者以及它们之间可能发送的消息构成。
交互图专注于系统的动态视图。
顺序图是强调消息的时间次序的交互图。
组成顺序图主要有4个标记符:对象、⽣命线、消息和激活。
对象三种表⽰⽅法1.包括对象名和类名,2、只有类名3.只有对象名⽣命线⽣命线⽤于描述对象的存在周期,对象下⽅的虚线就是该对象的⽣命线。
激活控制焦点是指活动者或对象处于执⾏状态的时间段消息消息⽤于描述对象间交互的⽅式及内容。
消息分为四种:同步消息、异步消息、返回消息、⾃关联消息1.同步消息:⼀个对象向另⼀个对象发出同步消息后,将处于阻塞状态,⼀直等到另⼀个对象的回应表⽰⽅式:2.异步消息:⼀个对象向另⼀个对象发出异步消息后,这个对象可以进⾏其他的操作,不需要等到另⼀个对象的响应表⽰⽅式:3.返回消息:同步消息的返回消息表⽰⽅式:4.⾃关联消息:⽤来描述对象内部函数的互相调⽤表⽰⽅式:还有顺序图中对于流程控制的模块:复合⽚段复合⽚段有多种,在此主要介绍⼀下⼏种:条件判断、可选、循环、同步1.条件判断:⽤于描述代码中if…else…这种结构标记为“alt”例如:2.可选:是⼀种特殊的“条件判断”,它只是⼀个if,没有else if或else 可选的标记为:opt3.循环:是指代码中的for、while之类的语句块循环的标记为:loop例如:下图中[m,n]是指⾄少执⾏m次,最多执⾏n次4.同步:⽤于描述多线程的情况同步的标记是:par画顺序图的步骤:1. 确定交互的范围2. 确定参与交互的活动者与对象3. 确定活动者、对象的⽣存周期4. 确定交互中产⽣的消息5. 细化消息的内容。
UML中各种图形重要性的排行

UML中各种图形重要性的排⾏
《UML 精粹》(Martin Fowler )将 UML 中各种图形的重要性做了划分,使得我们不必花费数⽉时间去熟悉 UML 的所有细节,⽽是只需要看过其中两三章的内容就⾜以从 UML 中获得巨⼤的价值。
UML 中各种图形重要性的排⾏为:
⽤例图(Use Case)
类图(Class)
顺序图(Sequence)
协作图(Collaboration)
包图(Package)
状态图(State)
活动图(Activity)
物理图(Physical)
其中必需的只有⽤例图和类图。
⽤例图重要是因为它是⾯向对象分析设计的基础,⽤例驱动是 RUP、XP 等各种现代开发⽅法的主要特征,类图重要是因为它是我们⽤来做分析和设计最主要的⼯具。
UML 各种图形中内涵最丰富的是类图,然⽽丰富的内涵也使得对于类图的正确使⽤遇到了⼀些困难。
Martin 特意将类图的概念分成了两部分:基础部分和⾼级部分。
基础部分是⾮常简单的,很多时候基础部分已经够⽤了,仅仅在必需的时候才需要⽤到⾼级部分。
UML之关系详解(类图)

UML之关系详解(类图)关联、依赖、聚合、组合、泛化、实现简单解释:关联:连接模型元素及链接实例,用一条实线来表示;依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示;聚合:表示整体与部分的关系,用一条实线加空心菱形来表示;组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示;泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示;实现:表示类与接口的关系,用一条虚线加空心箭头来表示;注意:泛化关系和实现关系又统称为一般关系;总之:一般关系表现为继承或实现(is a);关联关系、聚合关系、合成(聚合)/组合关系表现为成员变量(has a),依赖关系表现为函数中的参数(use a);二、类与类之间的关系一般关系:泛化、实现特殊关系:由弱到强是: 没关系 > 依赖 > 关联 > 聚合 > 组合。
UML中讲到类之间的关系:•依赖关系:类之间使用关系•泛化关系:类之间一般/特殊关系•关联关系:对象之间结构关系•实现关系:类中规格说明和实现之间关系三、关系详解(1)聚合与组合首先说明一下不容易混淆的概念:聚合(Aggregation)•一种特殊类型的关联。
•表示整体与部分关系的关联。
•描述了“has a”的关系。
•部分事物的对象可以属于多个聚合对象。
部分事物的对象与聚合对象的生存期无关,删除了它的聚合对象,不一定就随即删除了代表部分事物的对象。
组合(Composite)•聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。
•成员对象的生命周期取决于组合的生命周期。
•组合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。
(2)依赖依赖(dependency):指一个模型元素的变化必影响到另一个模型元素的变化。
可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method 方法中使用(使用依赖之参数传递)。
UML分类

UML分类一、用例图(use case diagram)从外部用户的角度描述系统的功能,并指出功能的执行者;二、静态图2.1 类图(class diagram)描述系统静态结构,类图的节点表示系统中的类及其属性和操作,类图的边表示类之间的联系,包括继承、关联、依赖和聚合等。
2.2 对象图(object diagram)对象图是类图的一个实例,它描述在某种状态下或在某一时间段,系统中活跃的对象及其关系;2.3 包图(packege diagram)包图描述系统的分解结构,他表示包以及包之间的关系。
包括子包及类组成。
包之间的关系包括继承、构成、依赖关系;三、行为图3.1 交互图(interactive diagram)交互图描述对象之间的消息传递。
3.1.1 时序图(sequence diagram)顺序图强调对象之间发送的时间循序;3.1.2 合作图(collaboration diagram)合作图更强调对象之间的动态协作关系。
合作图也可以通过消息的序号来标识消息传递的时间顺序。
3.2 状态图(statechart diagram)状态图描述对象的动态行为,它包含对象所有可能的状态、在每个状态下能够执行的操作序列,这些操作序列可以并发和同步。
3.3 活动图(active diagram)活动图包括控制流和信息流。
四、实现图(implementation diagram)4.1 构件图(component diagram)【描述实现系统的组成】构件图描述软件实现系统中各组成部件以及他们之间的依赖关系。
4.2 部署图(deployment diagram)【描述分布状况】部署图描述作为软件系统运行环境的硬件及网络的物理体系结构,其节点表示实际的计算机和设备,边表示节点之间的物理链接关系,也可以显示链接类型及节点之间的依赖性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UML 各种图总结精华
UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。
一、基本概念
如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。
静态图分为:用例图,类图,对象图,包图,构件图,部署图。
动态图分为:状态图,活动图,协作图,序列图。
1、用例图(UseCase Diagrams):
用例图主要回答了两个问题:1、是谁用软件。
2、软件的功能。
从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。
2、类图(Class Diagrams):
用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖2.1.泛化
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
2.2.实现
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
2.3.关联
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。
双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
2.4. 共享聚合
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。
如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
2.5.组合集合
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
2.6.依赖
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
2.7 各种类图关系
3、对象图(Object Diagrams):
描述的是参与交互的各个对象在交互过程中某一时刻的状态。
对象图可以被看作是类图在某一时刻的实例。
4、状态图(Statechart Diagrams):
是一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。
5、活动图(Activity Diagrams):
是状态图的一种特殊情况,这些状态大都处于活动状态。
本质是一种流程图,它描述了活动到活动的控制流。
交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流。
活动图是一种表述过程基理、业务过程以及工作流的技术。
它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。
5.1 带泳道的活动图
泳道表明每个活动是由哪些人或哪些部门负责完成。
5.2 带对象流的活动图
用活动图描述某个对象时,可以把涉及到的对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。
对象流用带有箭头的虚线表示。
6、序列图-时序图(Sequence Diagrams):
交互图的一种,描述了对象之间消息发送的先后顺序,强调时间顺序。
序列图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。
用例常常被细化为一个或者更多的序列图。
同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
消息用从一个对象的生命线到另一个对象生命线的箭头表示。
箭头以时间顺序在图中从上到下排列。
序列图中涉及的元素:
6.1 生命线
生命线名称可带下划线。
当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。
6.2 同步消息
同步等待消息
6.3 异步消息
异步发送消息,不需等待
6.4 注释
6.5 约束
6.6 组合
组合片段用来解决交互执行的条件及方式。
它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
常用的组合片段有:抉择、选项、循环、并行。
7、协作图(Collaboration Diagrams):
交互图的一种,描述了收发消息的对象的组织关系,强调对象之间的合作关系。
时序图按照时间顺序布图,而写作图按照空间结构布图
8、构件图(Component Diagrams):
构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。
其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。
9、部署图(Deployment Diagrams):
描述了系统运行时进行处理的结点以及在结点上活动的构件的配置。
强调了物理设备以及之间的连接关系。
部署模型的目的:
描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。
二、图的差异比较
1.序列图(时序图)VS协作图
序列图和协作图都是交互图。
二者在语义上等价,可以相互转化。
但是侧重点不同:序列图侧重时间顺序,协作图侧重对象间的关系。
共同点:时序图与协作图均显示了对象间的交互。
不同点:时序图强调交互的时间次序。
协作图强调交互的空间结构。
2.状态图VS活动图
状态图和活动图都是行为图。
状态图侧重从行为的结果来描述,活动图侧重从行为的动作来描述。
状态图描述了一个具体对象的可能状态以及他们之间的转换。
在实际的项目中,活动图并不是必须的,需要满足以下条件:1、出现并行过程&行为;2、描述算法;
3、跨越多个用例的活动图。
3.活动图VS交互图
二者都涉及到对象和他们之间传递的关系。
区别在于交互图观察的是传送消息的对象,而活动图观察的是对象之间传递的消息。
看似语义相同,但是他们是从不同的角度来观察整个系统的。
三、UML与软件工程
UML图是软件工程的组成部分,软件工程从宏观的角度保证了软件开发的各个过程的质量。
而UML作为一种建模语言,更加有效的实现了软件工程的要求。
如下图,在软件的各个开发阶段需要的UML图。
下表是UML使用人员图示:。