一 : UML对象图
UML对象图
在学习UML的过程中,你可能会遇到UML对象图方面的问题,这里向大家介绍一下,相信通过本文的介绍大家对UML对象图有全面的认识。
你对UML对象图是否熟悉,本节通过实例向大家介绍一下有关UML对象图的内容,主要包括实例规范,槽和连接等,希望通过本节的学习,你对UML对象图有一定的认识。
UML对象图
1.对象图
对象图用于描述被建模系统的模型元素实例之间的结构化信息,其所表达的是特定时间被建模系统在结构上的部分或是全部视图。一个对象图主要集中在特定的对象实例和其槽,以及实例之间的连接。同一个类图所对应的对象图可以有多个,多个对象图合在一起共同展示了随着时间的推移,在不同时间点系统的对象状态。与类图的抽象性相比,对象图是具体的,其通常用来提供所对应类图的结构示例,或者作为所对应类图的测试用例。应当说每一幅对象图都有其侧重点,因而,每一幅对象图应当只侧重表达其所侧重内容。
在UML中,对象实例是采用实例规范(instancespecification参见1.1)来表示的,对象实例所具有的结构化特性(feature)是采用槽(slot,参见1.2)来表示的,对象实例与对象实例之间的关系则是采用连接(link,参见1.3)来表示。与类图相对比,实例对应于类对象,槽对应于类属性的实例,而连接则对应于类与类之间关联的实例。有了这些对应关系,在掌握了类图的情况下,就更加的容易理解和掌握对象图了。 图1.1是UML对象图相关建模元素在UML规范中的语法定义,后面在讲解具体的概念时我们会更加具体的说明。
图1.1类图元素在UML规范中的语法
1.1实例规范
实例规范(instancespecification,参见USS的7.3.22节)是用于表示被建模系统中的实例实体,它描述了模型实例实体的部分或是全部。我们平时编程时,口头上所说的实例,在UML中就称之为实例规范。实例规范所描述的内容可能包括:
1)一个或是多个实例所属的分类器。在实例规范中一个分类器如果是类,那么它所描述的是这个类的对象;如果一个分类器是关联,那么它所描述的是这个关联的一个连接。
2)结构化特性的值。结构化特性对应于类的属性用于描述类的结构组成,在类图中行为化特性是采用操作(operation)来表示的,而在对象图中并不表示类的行为特性。在实例规范中,我们并不是一定要表示所有实例的所有结构化特性。
3)如何计算、推导或是构造实例。
一个实例规范用于指示被建模系统中存在的实体,在实例规范中其信息可以是不完整的,其只侧重于表达所关心的信息。从图1.1可以得到以下信息:
1)一个实例规范是一个可打包元素,因为一个
InstanceSpecification“是一个”PackageableElement。
2)一个实例规范可以包含任意多个的槽,这从其slots组成属性可以看出。
3)一个实例规范最多可以包含一个值规范(valuespecification,参见USS的7.3.54节),这从其specification组成属性可以看出。简单地说,值规范就是表示对于一个对象的可取值范围是什么。
4)一个实例规范可以包含任意多个的分类器,这从其classifiers关联属性可以看出。
一个实例规范可以包括槽,而每一个槽实际上是一个结构化特性的表达。实例规范是一个或是多个分类器的对象实例,因此,它是遵循分类器所定义的结构或是(和)行为规范的。一个没有槽的实例规范,并不是表示它没有结构化的特性,因为有可能那些结构特性并不是这一UML对象图所关心的。
需要注意的是实例规范并不是被建模系统运行时的精确描述,而只是一个示例,其只是表示了相关的结构信息。我们不能从实例规范中推导任何的运行时对象结构方面的详细信息。
图1.2是一个使用实例规范的一个例子,其中每一个矩形框都是一个实例规范。图1.3是其所对应的类图。其中my_car是一个不带有槽的实例,而其它的Window实例都是带有两个槽。你会注意到,实例规范的表示方法与类图中的类是相似的,但也有以下的区别:
1)其名称下面具有一根下划线,在线上标明了这一实例的名称以及其所属的分类器),实例名与分类器之间采用‘:’进行分割,而如果有多个所属分类器,那么分类器之间采用逗号分开。图1.2中所有的实例规范都只有一个分类器,比如my_car所属分类器是Car类,也就是说my_car是Car类的一个实例,而front_left、front_right、rear_left和rear_right都分别是Window类的一个实例。
2)槽对应于类中的属性,但其在实例规范中都会有值。如果没有值那么通常不用在实例规范中表示出来。
图1.2使用实例规范的一个例子
图1.3图1.2对象图所对应的类图
图1.2是一个相对简单的UML对象图,而在现实应用中,我们可以通过多个对象图来展现同样的实例在不同时间点时各实例的状态,不同的状态是通过槽的不同值来表达的。比如,我们可以采用UML对象图来表示一个算法,而对于同一算法在不同时间点各实例的状态(表现在槽的值不同)采用不同的对象图来表示。
1.2槽
槽(slot,参见USS的7.3.48节)是用于表示实例规范中被建模实体结构特征的值,槽对应于类图中类的属性,是类属性的实例,而属性是类的结构化特性的描述。从图1.1中可以看出,一个槽具有三个属性:
1)definingFeature表示这一槽所对应的结构化特性是什么。
2)owningInstance表示这一槽是属于哪一个实例规范的。
3)value指示槽的值是多少。
图1.2中每一个Window实例规范都有两个槽。其中name槽的
definingFeature应当就是窗口名称,显然name槽的owningInstance是各Window实例,而value对于每一个Window实例就不同了,有的叫“frontleft”,也有的叫“rearleft”。相类似地,is_automatic槽用于表示每一个车窗是不是自动的。
1.3连接
在UML规范中没有专门用于介绍连接(link)的章节,但在实例规范章节中有所提及。其定义了实例规范之间的关系,从类图的角度来看,一个连接就是一个关联关系的实例。图1.2中示例了Car类实例规范与Window类实例规范之间的四个连接。对比图1.2和图1.3我们可以发现,图1.2中的四个连接都是图1.3中关联关系的实例。
2总结
UML对象图用于表示被建模系统中不同对象在不同时间点的结构状态快照,其所表达的是类图中更为细化的结构化信息。当我们掌握了类图后,学习对象图就相对的简单了许多。
致读者
如果你想参与讨论UML相关的话题,请加入UML技术圈
(g.51cto.com/UltraUML)。
二 : UML图中的几种图简介(时序图,协作图,状态图,活动图,对象图)
1、时序图:
时序图用于描述对象之间的传递消息的时间顺序,即用例的行为顺序。当执行一个用例时,时序图中的每条消息对应了一个类操作或者引起转换的触发事件.在UML中,时序图表示为一个二维的关系图,其中,纵轴是时间轴,时间延竖线向下延伸.横轴代表在协作中各个独立的对象.当对象存在时,生命线用一条虚线表示,消息用从一个对象的生命线到另一个对象的生命线的箭头表示.箭头以时间的顺序在图中上下排列.
时序图中的基本概念:
对象:时序图中对象使用矩形表示,并且对象名称下有下划线.将对象置于时序图的顶部说明在交互开始时对象就已经存在了.如果对象的位置不在顶部,表示对象是在交互的过程中被创建的.
生命线:生命线是一条垂直的虚线.表示时序图中的对象在一段生命周期内存在.每个对象底部中心的位置都带有生命线.
消息:两个对象之间的单路通信.从发送方指向接收方.在时序图中很少使用返回消息.
激活:时序图可以描述对象的激活和钝化.激活表示该对象被占用以完成某个任务.钝化指对象处于空闲状态,等待消息.在UML中,对象激活时将对象的生命线拓宽为矩形来表示的.矩形称为计划条或控制期.对象就是在激活条的顶部被激活的.对象在完成自己的工作后被钝化.
对象的创建和销毁:在时序图中,对象的默认位置是在图的顶部.这说明对象在交互开始之前就已经存在了.如果对象是在交互过程中创建的,那么就应该将对象放到中间部分.如果要撤销一个对象,在其生命线终止点处放置“X”符号
2、活动图:
在UML中,活动图本质上就是流程图.它用于描述系统的活动,[www.61k.com)判定点和分支等.
活动图的基本概念:
动作状态:原子的,不可中断的动作,并在此动作完成之后向另一个动作转变.在UML中动作状态用圆角矩形表示,动作状态所表示的动作写在圆角矩形内部.
分支与合并:分支在软件系统中很常见.一般用于表示对象类所具有的条件行为.用一个布尔型表达式的真假来判定动作的流向.条件行为用分支和合并表达.在活动图中,分支用空心小菱形表示.分支包括一个入转换和两个带条件的出转换,出转换的条件应该是互斥的,须保证只有一条出转换能够被触发.合并包含两个带条件的入转换和一个出转换.
分叉与汇合:分叉用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换.每个转换都可以是独立的控制流.汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行.每个汇合可以有两个或多个输入转换和一个输出转换.在UML中分叉和汇合用一条粗直线表示
泳道:泳道将活动图中的活动划分为若干组,并将每一组指定给负责这组活动的业务组织.泳道区分负责活动的对象,明确地表示哪些活动是由哪些对象进行的.每个活动指定明确地属于一个泳道.在活动图中,泳道用垂直实线绘出,垂直线分隔的区域即为泳道
3、协作图:
协作图(也叫合作图)是一种交互图.
时序图主要侧重于对象间消息传递在时间上的先后关系,而协作图表达对象间的交互过程及对象间的关联关系。
4、状态图:
状态图:通过建立对象的生存周期模型来描述对象随时间变化的动态行为.
状态图中的基本概念:
状态:用圆角矩形表示.状态名称表示状态的名字,通常用字符串表示.一个状态的名称在状态图所在的上下文中应该是唯一的.
转换:用带箭头的直线表示.一端连着源状态,一端连着目标状态.
初始状态:每个状态图都有一个初始状态.此状态代表状态图的起始位置.初始状态只能作为转换的源,不能作为转换的目标,并且在状态图中只能有一个.初始状态用一个实心圆表示.
终止状态:模型元素的最后状态,是一个状态图的终止点.终止状态在一个状态图中可以有多个
5、对象图:
对象图是类图的一个实例,用于显示系统执行时的一个可能的快照.即在某一个时间上系统可能出现的样子.对象图用带下划线的对象名称来表示对象.
三 : UML类图和对象图概念及其区别解析
本文和大家重点讨论一下UML类图和对象图的概念,UML类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构,而对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。
UML类图的概念
一、概述
UML类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。UML类图是定义其他图的基础,在UML类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。
UML类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)。
二、类
类定义了一组有着状态和行为的对象。其中,属性和关联用来描述状态。属性通常用没有身份的数据值表示,如数字和字符串。关联则用有身份的对象之间的关系表示。行为由操作来描述,方法是操作的实现。对象的生命期则由附加给类的状态机来描述。
1、 名称:类的名称是每个类中所必有的构成元素。
2、 属性(Attribute)
(1) 可见性:类中属性的可见性主要包括公有(public)、私有(Private)和受保护(Protected)。在UML中,公有类型的用“+”表达,私有类型用“-”表达,而受保护类型则用“#”表达。UML的类中不存在默认的可见性,如果没有显示任何一种符号,就表示没有定义该属性的可见性。
(2) 属性名:按照UML的约定,单字属性名小写。如果属性名包含多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。
(3) 属性字符串。属性字符串用来指定关于属性的其他信息,例如某个属性应该是永久的。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。
(4) 类属性。属性也可以作为一个类属属性来定义,这就意味着此属性被该类的所有对象共享。在UML类图中,类属性带有一条下划线。
3、 操作。类的操作是对类的对象所能做的事务的抽象,相当于一个服务的实现。
4、 职责:在操作部分下面的区域,可以用来说明类的职责。职责是类或其他元素的契约或义务。类的职责是是自由形式的文本,写一个短语,一个句子等。在UML中,把职责列在UML类图底部的分隔栏中。
5、 约束。说明类的职责是消除二义性的一种非形式化的方法,形式化的方法是使用约束。约束指定了该类所要满足的一个或多个规则。在UML中,约束是用一个花括号括起来的自由文本。
三、接口
接口包含操作但不包含属性,且它没有对外界可见的关联。
四、类之间的关系
类之间的关系最常见的有四种:依赖关系、泛化关系、管理关系、实现关系。
UML对象图
一、概述
UML对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是UML类图在某一时刻的实例。
在UML中,对象图使用的是与UML类图相同的符号和关系,因为对象就是类的实例。下图显示了对象图的模型。其中节点可以是对象也可以是类,连线表示对象之间的关系:
二、UML类图和对象图的区别
四 : UML之类图与对象图
类图的概念
一、概述
类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。(www.61k.com]类图是定义其他图的基础,在类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。
类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)。
二、类
类定义了一组有着状态和行为的对象。其中,属性和关联用来描述状态。属性通常用没有身份的数据值表示,如数字和字符串。关联则用有身份的对象之间的关系表示。行为由操作来描述,方法是操作的实现。对象的生命期则由附加给类的状态机来描述。
1、 名称:类的名称是每个类中所必有的构成元素。
2、 属性(Attribute)
(1) 可见性:类中属性的可见性主要包括公有(public)、私有(Private)和受保护(Protected)。在UML中,公有类型的用“+”表达,私有类型用“-”表达,而受保 护类型则用“#”表达。UML的类中不存在默认的可见性,如果没有显示任何一种符号,就表示没有定义该属性的可见性。
(2) 属性名:按照UML的约定,单字属性名小写。如果属性名包含多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。
(3) 属性字符串。属性字符串用来指定关于属性的其他信息,例如某个属性应该是永久的。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。
(4) 类属性。属性也可以作为一个类属性来定义,这就意味着此属性被该类的所有对象共享。在类图中,类属性带有一条下划线。
3、 操作。类的操作是对类的对象所能做的事务的抽象,相当于一个服务的实现。
4、 职责:在操作部分下面的区域,可以用来说明类的职责。职责是类或其他元素的契约或义务。类的职责是是自由形式的文本,写一个短语,一个句子等。在UML中,把职责列在类图底部的分隔栏中。
5、 约束。说明类的职责是消除二义性的一种非形式化的方法,形式化的方法是使用约束。约束指定了该类所要满足的一个或多个规则。在UML中,约束是用一个花括号括起来的自由文本。
三、接口
接口包含操作但不包含属性,且它没有对外界可见的关联。
四、类之间的关系
类之间的关系最常见的有四种:依赖关系、泛化关系、关联关系、实现关系。
1、 依赖关系(Dependency)
依赖表示两个或多个模型元素之间语义上的关系。它表示了这样一种情形,对于一个元素(提供者)的某些改变可能会影响或提供消息给其他元素(客户),即客户以某种形式依赖于其他类元。根据这个定义,关联、实现和泛化都是依赖关系,但是它们有更特别的语义。在UML中,依赖用一个从客户指向提供者的虚箭头表示,用一个构造型的关键字来区分它的种类。
UML定义了4种基本依赖类型,分别是使用(Usage)依赖、抽象(Abstraction)依赖、授权(Permission)依赖和绑定(Binding)依赖。
1)使用依赖。使用依赖都是非常直接的,通常表示客户使用提供者提供的服务以实现它的行为。
2)抽象依赖(跟踪依赖)。抽象依赖用来表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物。
3)授权依赖。授权依赖表示一个事物访问另一个事物的能力。提供者通过规定客户的权限,可以控制和限制对其内容访问的方法。
4)绑定依赖。绑定依赖是较高级的依赖类型,用于绑定模板以创建新的模型元素。
2、泛化关系(Generalization)
泛化关系是一种存在于一般元素和特殊元素之间的分类关系,它只使用在类型上,而不是实例上。在类中,一般元素被称为超类或父类,而特殊元素被称为子类。在UML中,泛化关系用一条从子类指向父类的空心三角箭头表示。
3、关联关系(Association)
关联关系是一种结构关系,它指明一个事物的对象与另一个事物的对象之间的联系。也就是说,关联描述了系统中对象或实例之间的离散连接。在UML中,关联关系用一条连接两个类的实线表示。
关联关系有6种对应的修饰,它们分别是:名称、角色、多重性、聚合、组合和导航性。
1)名称(Name)。名称用来描述关联的性质,通常使用一个动词或动词短语来命名关联。名称以前缀或后缀一个指引阅读的方向指示符以消除名称含义上可能存在的歧义,方向指示符用一个实心的三角形箭头表示。
2)角色(Role)。角色是关联关系中一个类对另一个类所表现出来的职责。角色名称是名词或名词短语,以解释对象是如何参与关联的。
扩展:uml对象图 / uml对象图怎么画 / uml对象图实例
3)多重性(Multiplicity)。约束是UML三大扩展机制之一,多重性是其中使用最广泛的一种约束。关联的多重性是指有多少对象可以参与该关联,多重性可以用来表达一个取值范围、特定值、无限定的范围或一组离散值。
4)聚合(Aggregation)。聚合关系表示整体和部分关系的关联。聚合关系描述了“has a”的关系。在UML中聚合关系用带空心菱头的实线来表示,其中头部指向整体。
5)组合关系(Composition)。组合关系是聚合关系中的一种特殊情况,是更强形式的聚合,又被称为强聚合。在组合中,成员对象的生命周期取决于聚合的生命周期,聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和析构。在UML中,组合关系用带实心菱头的实线来表示,其中头部指向整体。
6)导航性(Nevigation)。导航性描述的是一个对象通过链(关联的实例)进行导航访问另一个对象,即对一个关联端点设置导航属性意味着本端的对象可以被另一端的对象访问。可以在关联关系上加箭头表示导航方向。只在一个方向上可以导航的关联称为单向关联(Unidirection Association),用一条带箭头的实线来表示。在两个方向上都可以导航的关联称为双向关联(Bidirection Association),用一条没有箭头的实线来表示。另外使用导航性可以降低类之间的耦合度,在也是好的面向对象分析与设计的目标之一。
4、实现关系(Realization)
实现是规格说明和其实现之间的关系,它将一种模型元素与另一种模型元素连接起来,比如类和接口。
泛化和实现关系都可以将一般描述与具体描述联系起来。泛化将同一语义层上的元素连接起来,并且通常在同一模型内。实现关系则将不同语义层内的元素连接起来,通常建立在不同的模型内。
实现关系通常在两种情况下被使用:在接口与实现该接口的类之间;在用例以及实现该用例的协作之间。
在UML中,实现关系的符号与泛化关系的符号类似,用一条带指向接口的空心三角箭头的虚线表示。下图所示的是实现关系的一个示例,描述的是Keyboard保证自己的部分行为可以实现Typewriter的行为
实现关系还有一种省略的表示方法,即接口表示为一个小圆圈,并和实现接口的类用一条线段连接,如图
对象图
一、概述
对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。
在UML中,对象图使用的是与类图相同的符号和关系,因为对象就是类的实例。下图显示了对象图的模型。其中节点可以是对象也可以是类,连线表示对象之间的关系:
二、类图和对象图的区别
扩展:uml对象图 / uml对象图怎么画 / uml对象图实例
本文标题:uml对象图-UML对象图61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1