UML建模(一):UML图及事物关系

UML概述

UML(Unified Modeling Language)统一建模语言是面向对象软件的标准化建模语言。通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画,通过统一的表示法,使不同知识背景的领域专家、系统分析和开发人员以及用户可以方便地交流。UML由三个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制,UML的三种构造块:事物、关系和图 (事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物)。

事物

UML中有四种事物:结构事物、行为事物、分组事物、注释事物。

结构事物(Structural Thing)通常是模型中的静态部分,描述概念或物理元素。包括类(Class)、接口(Interface)、协作(Collaboration)、用例(Use Case)、主动类(Active Class)、构件(Component)、制品(Artifact)和结点(Node)。

类一般包含3个组成部分,类名、属性及方法,当然,类中也可包含有内部类;类名不可省略,其他部分可以省略。类名字体若为正体,说明可被实例化,若为斜体,说明为抽象类或接口;属性由访问权限(+public、-private、#protected、~default、_static)、属性名、属性类型组成,属性名与属性类型之间用冒号":"分隔;方法由访问权限(+public、-private、#protected、~default、 _static)、方法名、参数、返回类型组成,方法名或参数跟返回类型间用冒号":"分隔。

行为事物(Behavior Thing)是UML模型的动态部分,描述了跨越时间和空间的行为。行为事物包括交互(Interaction)、状态机(State Machine)和活动(Activity)。交互由在特定语境中共同完成一定任务的一组对象之间交换的消息组成。一个对象群体的行为或单个操作的行为可以用一个交互来描述。交互涉及一些其他元素,包括消息、动作序列和链(对象间的连接)。在图形上,把一个消息表示为一条有向直线,通常在表示消息的线段上标注操作名。状态机描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列,单个类或一组类之间协作的行为可以用状态机来描述,在图形上,把状态表示为一个圆角矩形,通常在圆角矩形中含有状态名称及其子状态。活动是描述计算机过程执行的步骤序列,注重步骤之间的流而不关心哪个对象执行哪个步骤,活动的一个步骤称为一个动作,在图形上,把动作画成一个圆角矩形。

分组事物(Grouping Thing)是UML模型中的组织部分。最主要的分组事物是包(Package),包是把元素组织成组的机制。

注释事物(Annotational Thing)是UML模型中的解释部分,用来描述、说明和标注模型的任何元素。注解(Note)是一种主要的注释事物。

关系

UML中有4中关系:依赖、关联、泛化和实现。

依赖(Dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条可能有方向的虚线:--------->

关联(Association)是一种结构关系,它描述了一组链,链是对象之间的连接。聚合是一种特殊形式的关联,聚合表示类之间整体与部分的关系;组合表示的也是类之间的整体与部分的关系,但组合关系中的整体与部分具有同样的生存周期,是比聚合关系还要强的关系。在图形上,关联可以是双向的,也可以是单向的,在线的任一端,可以放置一个角色名和多重值(可参考"类图"章节示例图中的部门跟员工之间的关系)。

关联:

聚合(Aggregation,图形上表示为带空心菱形的实线,菱形指向整体的一端):

组合(Composition,图形上表示为带实心菱形的实线,菱形指向整体的一端):

泛化(Generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,用这种方法,子元素共享了父元素的结构和行为。在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素。如下图所示:

实现(Realization)是类元之间的语义,其中一个类元指定了由另一个类元保证执行的契约,在这两种情况下会使用实现关系:一种是在接口和实现它们的类或接口之间;另一种是在用例和实现它们的协作之间。在图形上,把一个实现画成一条带有空心箭头的虚线,它指向接口。如下图所示:

用例图

用例图是显示一组用例、参与者以及它们之间关系的图。关系包含有扩展关系(<< extend >>)和包含(<< include >>)关系,参与者和用例之间的关联关系,用例与用例以及参与者与参与者之间的泛化关系。

示例图:

类图

类图描述类的内部结构和类与类之间的关系,是一种静态结构图。包含有6种关系:泛化,实现,关联,组合,聚合,依赖,关系的强弱顺序由高到低为:泛化=实现>组合>聚合>关联>依赖;通常包含4项内容:类、接口、协作、关系,也可包含注解和约束,包或子系统。类图用于对系统的静态设计视图建模,通常在以下3种场景中使用类图:

对系统的词汇建模

从词汇表中抽象类,并描述它们的职责。

对简单的协作建模

协作是一些共同工作的类,接口和其他元素的群体,该群体提供的一些合作行为强于所有这些元素的行为之和。例如,当对分布式系统的事务语义建模时,不能仅仅盯着一个单独的类来推断要发生什么,而要有相互协作的一组类来实现这些语义,用类图对这组类以及它们之间的关系进行可视化和详述。

对逻辑数据库模式建模

在很多领域中,要对关系数据库或面向对象数据库中存储永久信息,可以用类图对这些数据库的模式建模。

示例图(类图中的加号表示公共可见性,减号表示私有可见性,#表示protected可见性,默认表示package级别可见性,下划线表示是静态的):

对象图

对象图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链。对象图给出系统的静态设计视图或静态进程视图,在建模时,主要使用对象图对对象结构进行建模。对象结构建模涉及在给定时刻抓取系统中对象的快照,对象图表示了交互图表示的动态场景中的一个静态画面。

示例图:

包图

包图用于把模型本身组织成层次结构的通用机制,不能执行,展现由模型本身分解而成的组织单元以及其间的依赖接口。元素被声明在包中,一个元素只能被一个包所拥有,拥有关系的包形成了一个命名空间,其中同一种元素的名称必须唯一。

交互图

交互图用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。它通常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递。包含序列图和协作图两种形式,一般包含对象、链和消息。

序列图

也成"顺序图"或"时序图", 是显示对象之间交互的图,这些对象是按时间顺序排列的,特别地,图中显示的是参与交互的对象及对象之间消息交互的顺序。形成序列图时,首先把参加交互的对象放在图的上方,沿水平方向排列;通常把发起交互的对象放在左边,下级对象依次放在右边;然后,把这些对象发送和接收的消息沿垂直方向按时间顺序从上到下放置。这样,就提供了控制流随时间推移的清晰的可视化轨迹。序列图的两个特征:

有对象生命线。对象生命线是一条垂直的虚线,表示一个对象在一段时间内存在。在交互图中出现的大多数对象存在于整个交互过程中,所以这些对象全部排在图的顶部,其生命线从图的顶部画到图的底部;但对象也可在交互过程中创建,它们的生命线从接收到构造型为create的消息时开始,对象也可在交互过程中撤销,它们的生命线在接收到destroy的消息时结束(给出一个大X的标记表明生命的结束)。

有控制焦点。控制焦点是一个瘦高的矩形,表示一个对象执行一个动作所经历的时间段,既可以是直接执行,也可以是通过下级过程执行。矩形的顶部表示动作的开始,底部表示动作的结束(可以由一个返回消息来标记);还可以通过将另一个控制焦点放在它的父控制焦点的右边来显示(由循环、自身操作调用或从另一个对象的回调所引起的)控制焦点的嵌套。

示例图:

协作图

协作图是用于描述系统的行为是如何由系统的成分协作实现的图,协作图中包含的建模元素有对象、消息、链等。

状态图

状态图展现了一个状态机,它由状态(简单状态和组合状态)、转换、事件和活动组成。状态图关注系统的动态视图,强调对象行为的事件顺序。当某个事件发生后,对象的状态将发生变化。嵌套在另一个状态中的状态称为子状态,含有子状态的状态称为组合状态。转换是两个状态之间的一种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警戒条件满足时进入目标状态。动作是一个可执行的原子操作,是不可中断的,其执行时间是可忽略不计的。

示例图: 

活动图

活动图用于描述系统的工作流程和并发行为,可看作状态图的特殊形式,一个活动结束后将立即进入下一个活动。活动图一般包含活动状态、动作状态、转换和对象。

活动:活动表示的是某流程中任务的执行,它可以表示某算法过程中语句的执行。动作状态是原子的,不能被分解,没有内部转移,没有内部活动,工作所占用的时间是可忽略不计的,目的是进入执行动作,然后转向另一个状态。活动状态是可分解的,其工作的完成需要一点的时间。

泳道:是活动图中的区域划分,根据每个活动的职责对所有活动进行划分,每个泳道代表一个责任区。关心的是其所代表的职责,一个泳道可以由一个类或多个类实现。

分支:在活动图中,对于同一个触发事件,可以根据不同的警戒条件转向不同的活动,每个可能的转移是一个分支。

分叉和汇合:分支表示的是从多种可能的活动转移中选择一个,如果要表示系统或对象中的并发行为,则可使用分叉和汇合这两种建模元素。分叉表示两个或多个控制流经过分叉后,这些控制流并发进行;汇合与分叉相反。

对象流:对象可以作为活动的输入或输出,活动图中的对象流表示活动和对象之间的关系,如一个活动创建对象(作为活动的输出)或使用对象(作为活动的输入)等。

构件图

构件图展现了一组构件之间的组织和依赖,专注于系统的静态实现视图。与类图相关,通常把构件映射为一个或多个类、接口或协作。

部署图

部署图是用来对面向对象系统的物理方面建模的方法,展现运行时处理结点以及其中构件的配置。与构件图相关,通常,一个结点是一个在运行时存在并代表一项计算资源的物理元素,常常具有处理能力,包含一个或多个构件。

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值