UML的九种图+几大关系(一)、用例图1、定义:由参与者(Actor)、用例(UseCase)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图.(一)、用例图2、简要介绍:用例图主要用于为系统的功能需求建模,它主要描述系统功能,也就是从外部用户的角度观察,系统应该完成哪些功能,有利于开发人员以一种可视化的方式理解系统的功能需求。同时也是为了方便用户和系统分析人员的理解尽量一致,为用户和系统分析人员提供一个大众的,一致性的方法,准确地把握系统的需求,能够节省时间,提高效率!(一)、用例图用例方法是完全从外部来定义系统功能,它把需求和设计完全的分离开来。我们不用关心系统内部是如何完成各种功能的,系统对于我们来说就是一个黑箱子。用例图清楚地描述了使用者及它们之间的泛化关系,用例及用例之间的泛化、扩展关系,用例和参与者之间的关联关系,可从用例图中得到对于被定义系统的一个总体印象。3、导图概述4、用例图(机房收费系统)(二)、类图1、定义:是由若干类关联在一起,反映系统或者子系统组成结构的静态图。2、简要介绍:类图的建模贯穿工程的分析和设计阶段的始终。类图是用来描述系统的静态部分。3、导图概述4、类图(机房收费系统)(三)、对象图1、定义:对象图描述一个系统在某个具体时刻的静态结构。2、简要介绍:对象图实际上就是类图的实例。对象图表示一组对象及他们之间的联系,它是系统的详细状态在某一时刻的快照,常用于表示复杂类图的一个实例。UML中对象图与类图具有相同的表示形式。在UML中,对象图的使用相当有限,主要用于表达数据结构的实例,以及了解系统在某个特定时刻的具体情况。3、导图概述4、对象图(机房收费系统-注册)用户:操作员:机房收费系统注册学生信息记录添加正在值班的老师操作员工记录添加添加(四)、状态图1、定义:用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。2、简要介绍:状态图(StatechartDiagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应的。通常我们创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机(StateMachineDiagram),重点在与描述状态图的控制流。3、导图概述4、状态图(机房收费系统-注册)(五)、活动图1、定义:阐明业务用例实现的工作流程。2、简要介绍:活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。活动图能够表示并发活动的情形,活动图是面向对象的。3、导图概述4、活动图(机房收费系统-注册)(六)、序列图(又称顺序图,时序图)1、定义:是对对象之间传送消息的时间顺序的可视化表示。2、简要介绍:序列图的目的在于描述系统中各个对象按照时间的顺序的交互过程。序列图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。3、导图概述4、序列图(机房收费系统-注册)(七)、协作图(又称合作图)1、定义:描述相互合作对象间的交互关系。2、简要介绍:UML协作图是一种交互图,强调的是发送和接收消息的对象之间的组织结构。UML协作图用于显示对象之间如何进行交互以执行特定用例或用例中特定部分的行为。设计员使用UML协作图和序列图确定并阐明对象的角色,这些对象执行用例的特定事件流。它们是主要的信息来源,用于确定类的职责和接口。与序列图不同,UML协作图显示了对象之间的关系。序列图和UML协作图表述的是相似的信息,但表述的方式却不同。UML协作图显示对象之间的关系,它更有利于理解对给定对象的所有影响,也更适合过程设计。UML协作图的格式决定了它们更适合在分析活动中使用。它们特别适合用来描述少量对象之间的简单交互。随着对象和消息数量的增多,理解UML协作图将越来越困难。此外,UML协作图很难显示补充的说明性信息,例如时间、判定点或其他非结构化的信息,而在序列图中这些信息可以方便地添加到注释中。序列图常用来表示方案,协作图用于过程的详细设计。3、导图概述4、协作图(机房收费系统-注册)(八)、构件图1、定义:主要用于描述各种软件构件之间的依赖关系。2、简要介绍:构件图是从软件架构的角度来描述一个系统的主要功能,如子系统、类、包、构件等。使用构件最重要的是复用。构件是系统中遵从同一组接口且提供其实现的物理的、可替换的部分。构件图提供系统物理视图,在一个非常高的层次上显示系统中的构件与构件之间的依赖关系。3、导图概述4、构件图(机房收费系统)(九)、部署图1、定义:描述了一个系统运行时的硬件节点,在这些节点上运行的软件构件将在何处物理运行以及它们将如何彼此通信的静态视图2、简要介绍:系统开发人员和部署人员可以利用部署图去了解系统的物理运行情况。如果,开发的软件系统只需在一台计算机上运行,且使用的标准设备,则不需要为它画出系统部署图。部署图只需要给那些复杂的物理运行情况进行建模。部署图显示了系统的硬件,安装在硬件上的软件,用于连接硬件的各种协议和中间件等。部署模型的目的:描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。3、导图概述4、部署图(机房收费系统)机房收费系统ServerDataBaseServer打印机专用线缆局域网(十)、几种图的区别1、用例图侧重描述用户需求2、类图侧重描述系统具体实现;3、类图描述的是系统的结构4、序列图描述的是系统的行为5、构件图描述系统的模块结构,抽象层次较高6、类图是描述具体模块的结构,抽象层次一般7、对象图描述了具体的模块实现,抽象层次较低8、结构分类包括用例图、类图、对象图、构件图和部署图9、动态行为包括状态图、活动图、顺序图和协作图10、模型管理则包含类图关系1.泛化【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何实例化父类的所有行为和特征。【箭头及指向】:带空心三角箭头的实线,箭头指向父类。关系2.实现【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实线。【箭头及指向】:带空心三角箭头的虚线,箭头指向接口。关系3.关联【关联关系】:是一种拥有关系,一个类知道另一个类的属性和方法。如老师与学生的关联可以是双向的,也可以是单向的。双向关联可以有两个箭头或都没有箭头,单向关联只有一个箭头。【箭头及指向】:带普通箭头的实心线,指向被拥有者。关系4.聚合【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如火车和发动机就是整体和部分的关系,发动机离开火车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系【箭头及指向】:带空心菱形的实心线,菱形指向整体。关系5.组合【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如我们的胳膊就不能离开人的身体。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期。【箭头及指向】:带实心菱形的实线,菱形指向整体。关系6.依赖【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,依赖关系普遍存在,当有其他关系时,尽量不用依赖关系【箭头及指向】:带箭头的虚线,指向被使用者。关系7.包含【包含关系】:包含关系是用来把一个较复杂的用例所表示的功能分解成较小的步骤。包含关系是依赖的一种。包含关系是指当多个用例中存在相同的事件流时,可以把这些公共事件流抽象成为公共用例,这个公共用例成为抽象用例,而原始用例称为基础用例,基础用例与抽象用例之间就是包含关系。对于包含关系而言,基础用例是抽象用例执行中不可缺少的一部分,基础用例一般不单独存在且基础用例不知道抽象用例的存在,但是抽象用例知道基础用例的存在【箭头及指向】:带虚线的箭头,箭头指向基础用例(父类指向子类)关系8.拓展【拓展关系】:扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。扩展关系是依赖的一种。如果一个用例明显的混合了两种或两种以上的不同场景,可以将这个用例分为一个基础用例和一个扩展用例。扩展关系是基础用例在某些特定条件下才触发产生的,扩展用例不是基础用例必须存在的部分,扩展用例可以单独存在,扩展用例知道基础用例的存在,而基础用例不知道扩展用例的存在。【箭头及指向】:带虚线的箭头,箭头指向基础用例(子类指向父类)。