UML——九种图和几大关系

UML——九种图和几大关系UML——九种图和几大关系

大家好,又见面了,我是你们的朋友全栈君。

UML中的图画完已经有一段时间了,前几天师父验收的时候,发现对这些图及其关系还需要进一步的理解,所以又整理了一下。

UML——九种图和几大关系

九种图

1.用例图


      
        
用来定义系统的功能需求。
        描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如关联、依赖和泛化。
图例:
UML——九种图和几大关系

2.类图

     
        
对静态结构的描述,用来定义系统中的类和类之间的关系。
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。
图例:
UML——九种图和几大关系

3.对象图

        表示类的对象实例。
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
图例:
UML——九种图和几大关系

4.活动图

        表示一个连续的活动流,用于描述某个操作执行时的活动状况。
描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
图例:
UML——九种图和几大关系

5.状态图

类所描述事物的补充说明,类所有对象可能具有的状态,以及引起状态变化的事物。
描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
图例:
UML——九种图和几大关系

6.序列图

反应若干对象之间的动态协作关系,在时间轴上,对象之间是如何交互的。
序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
图例
UML——九种图和几大关系

7.协作图

        和序列图作用相同,强调时间和序列顺序选择顺序图,强调对象之间的关系选择协作图。
和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
图例:
UML——九种图和几大关系

8.构件图

        反应代码的物理结构。
描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
图例:
UML——九种图和几大关系

9.部署图

        用来显示系统中软件和硬件的物理构架。
是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。
图例:
UML——九种图和几大关系

几种图的区别:

一:这九种模型图各有侧重

1:用例图侧重描述用户需求,


2:类图侧重描述系统具体实现;

二:描述的方面都不相同

1:类图描述的是系统的结构,


2:序列图描述的是系统的行为;

三:抽象的层次也不同

1:构件图描述系统的模块结构,抽象层次较高,


2:类图是描述具体模块的结构,抽象层次一般,


3:对象图描述了具体的模块实现,抽象层次较低。

 
结构分类、动态行为和模型管理:


1:结构分类包括用例图、类图、对象图、构件图和部署图,


2:动态行为包括状态图、活动图、顺序图和协作图,


3:模型管理则包含类图。


关系

1.泛化

【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何实例化父类的所有行为和特征。
【箭头及指向】:带空心三角箭头的实线,箭头指向父类。
                                                                                   
UML——九种图和几大关系

2.实现

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实线。
【箭头及指向】:带空心三角箭头的虚线,箭头指向接口。
                                                UML——九种图和几大关系

3.关联

【关联关系】:是一种拥有关系,一个类知道另一个类的属性和方法。如老师与学生的关联可以是双向的,也可以是                          单向的。双向关联可以有两个箭头或都没有箭头,单向关联只有一个箭头。
【箭头及指向】:带普通箭头的实心线,指向被拥有者。
                      UML——九种图和几大关系

4.聚合

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如火车和发动机就是整体和部分的关系,发                           动机离开火车仍然可以存在。
 聚合关系是关联关系的一种,是强的关联关系。
【箭头及指向】带空心菱形的实心线,菱形指向整体。
                                                UML——九种图和几大关系

5.组合

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如我们的胳膊就不能离开人的身体。
                         组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象                          负责代表部分对象的生命周期。
【箭头及指向】:带实心菱形的实线,菱形指向整体。
                                                          UML——九种图和几大关系

6.依赖

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,依赖关系普遍存在,当有其他关系时,尽                          量不用依赖关系。
【箭头及指向】:带箭头的虚线,指向被使用者。
                                                             UML——九种图和几大关系

7.包含

【包含关系】:包含关系是用来把一个较复杂的用例所表示的功能分解成较小的步骤。包含关系是依赖的一种。
包含关系是指当多个用例中存在相同的事件流时,可以把这些公共事件流抽象成为公共用例,这个公共用例成为抽象用例,而原始用例称为基础用例,基础用例与抽象用例之间就是包含关系。对于包含关系而言,基础用例是抽象用例执行中不可缺少的一部分,基础用例一般不单独存在且基础用例不知道抽象用例的存在,但是抽象用例知道基础用例的存在。
【箭头及指向】:带虚线的箭头,箭头指向基础用例(父类指向子类)。
                                    UML——九种图和几大关系

8.扩展

【扩展关系】:扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。扩展关系是依赖的一种。
如果一个用例明显的混合了两种或两种以上的不同场景,可以将这个用例分为一个基础用例和一个扩展用例。扩展关系是基础用例在某些特定条件下才触发产生的,扩展用例不是基础用例必须存在的部分,扩展用例可以单独存在,扩展用例知道基础用例的存在,而基础用例不知道扩展用例的存在。
【箭头及指向】:带虚线的箭头,箭头指向基础用例(子类指向父类)。
                               UML——九种图和几大关系


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105778.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intellij idea激活码 吾爱破解[免费获取]「建议收藏」

    (intellij idea激活码 吾爱破解)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlb…

    2022年3月21日
    2.3K
  • NFV基本概述[通俗易懂]

    NFV基本概述[通俗易懂]NFV介绍定义:NFV,即网络功能虚拟化,NetworkFunctionVirtualization。通过使用x86等通用性硬件以及虚拟化技术,来承载很多功能的软件处理。从而降低网络昂贵的设备成本。可以通过软硬件解耦及功能抽象,使网络设备功能不再依赖于专用硬件,资源可以充分灵活共享,实现新业务的快速开发和部署,并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等。目…

    2022年9月10日
    0
  • 重磅!2021年国内Java培训机构排名十强出炉啦!

    重磅!2021年国内Java培训机构排名十强出炉啦!在IT行业当中,Java是最受欢迎的编程语言之一,作为最早出现的编程语言至今都没有倒下,可以说是YYDS!近年来学习Java的小伙伴也是越来越多,通过参加培训的方式来学习Java技术是最快最有效的方法。如今Java培训机构多如牛毛,到底该怎么选呢?下面小编就给大家发布2021年Java培训机构排名十强的名单来供大家参考:1、动力节点(http://www.bjpowernode.com/)动力节点是Java培训界“口口相传的Java黄埔军校”,成立至今12年,专注Java培训事业,为学员提供更.

    2022年7月7日
    55
  • Maven–如何下载JSONObject相关依赖架包

    Maven–如何下载JSONObject相关依赖架包一、开发场景Java开发当中经常需要Json格式的数据,这就用到JSONObject类,本文章只提供以下两种JSONObject对应架包的下载方式。com.alibaba.fastjson.JSONObject(依赖1个架包fastjson-1.2.28.jar)net.sf.json.JSONObject(依赖6个架包commons-beanutils-1.9.3.jar、commons-c…

    2022年7月12日
    63
  • C# 互斥锁 Mutex

    C# 互斥锁 Mutex当两个或更多线程需要同时访问一个共享资源时,系统需要使用同步机制来确保一次只有一个线程使用该资源。Mutex 是同步基元,它只向一个线程授予对共享资源的独占访问权。如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。privatestaticMutexmut=newMutex();两个线程访问资源需要互斥时,两个线程都要用互斥锁。

    2022年6月26日
    55
  • 利用STM32F103精确控制步进电机

    利用STM32F103精确控制步进电机**利用STM32F103控制步进电机精确角度转动**欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,…

    2022年6月1日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号