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)
上一篇 2022年4月24日 下午9:00
下一篇 2022年4月24日 下午9:00


相关推荐

  • 无刷直流电机模糊PID控制「建议收藏」

    无刷直流电机在克服了有刷直流电机机械换相缺点的同时,又具有结构简单、运行可靠以及调速性能好等优点,在很多领域中得到了广泛的应用。本次课题阐述了无刷直流电机的基本结构、运行原理和数学模型,并以无刷直流电机为被控对象,根据电机的特点和控制要求确定了三闭环控制策略,分别是位置、转速及电流环控制三者之间实行串级连接。采用模糊PID控制理论,搭建无刷直流电机和控制器的仿真模型来验证电机控制策略的可行性,使要能使伺服控制器的具体性能满足:无静差,响应快,超调量小的设计要求。结合三闭环控制结构的特点,在位置环中采用模

    2022年4月16日
    70
  • DeepSeek API使用教程

    DeepSeek API使用教程

    2026年3月15日
    2
  • nginx sendfile 参数解释

    nginx sendfile 参数解释转载地址: https://blog.csdn.net/renyican/article/details/50582085sendfile 现在流行的web服务器里面都提供sendfile选项用来提高服务器性能,那到底sendfile是什么,怎么影响性能的呢?sendfile实际上是Linux2.0+以后的推出的一个系统调用,web服务器可以通过调整自身的配置来决定是否利用sendfi…

    2022年6月5日
    41
  • C 移位运算

    C 移位运算移位运算分为左移 lt lt 与右移 gt gt 包含逻辑移位 logicalshift 和算术移位 arithmeticsh 二者区别如下 1 逻辑移位 移出去的位丢弃 空缺位 vacantbit 用 0 填充 2 算术移位 移出去的位丢弃 空缺位 vacantbit 用符号位来填充 移位算只能作用于整数 不能作用于浮点数 对于无符号整数与有符号整数 左移

    2025年10月30日
    5
  • 【SpringBoot】45、SpringBoot中整合JWT实现Token验证(注解篇)「建议收藏」

    前言上篇文章,我们已经在SpringBoot中整合了JWT并实现了Token验证,那我们在实际应用中就会发现,如果每个视图层(controller)都手动验证token,代码就会显得特别臃肿,本篇文章主要为了解决该问题。如果对整合JWT还不熟悉的朋友,可以先看看我的这篇博客:【SpringBoot】四十四、SpringBoot中整合JWT实现Token验证自定义注解1、创建自定义注解packagecom.asurplus.common.annotation;import

    2022年4月14日
    125
  • hotumoyi吉他_木棒能做什么

    hotumoyi吉他_木棒能做什么乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 50 个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式输入包含多组数据,每组数据包括两行。第一行是一个不超过 64 的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。输出格式为每组数据,分别输出原始木棒的可能最小长度

    2022年8月9日
    12

发表回复

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

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