首页 > 其他分享 >UML知识回顾

UML知识回顾

时间:2023-12-07 13:33:24浏览次数:29  
标签:关系 回顾 对象 知识 视图 关联 协作 UML 描述

UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。

UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类图,对象图,包图,构件图,部署图。动态图分为:状态图,活动图,协作图,序列图。

1.用例图:

用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。

参与者和用例之间的关系使用带箭头或者不带箭头的线段来描述,箭头表示在这一关系中哪一方是对话的主动发起者,箭头所指方是对话的被动接受者。

 

2.类图:

用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

   各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

2.1.泛化

    【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

2.2.实现

    【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。

2.3.关联

     【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

2.4.聚合 

    【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

  聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

  【代码体现】:成员变量

2.5.组合

    【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

  组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

    【代码体现】:成员变量

    【箭头及指向】:带实心菱形的实线,菱形指向整体

2.6.依赖  

     【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

        【代码表现】:局部变量、方法的参数或者对静态方法的调用

        【箭头及指向】:带箭头的虚线,指向被使用者

 

 

 

3.对象图

描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。

对象图可以视作类图的实例,用来表达各个对象在某一时刻的状态。

对象图中的建模元素主要有对象和链,对象是类的实例,链是类之间的关联关系的实例。

 

 

4.状态图

是一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。

一个状态图表示一个状态机,主要用于表现从一个状态到另一个状态的控制流。它不仅可以展现一个对象拥有的状态,还可以说明事件(如消息的接收、错误、条件变更等)如何随着时间的推移来影响这些状态。

状态图用于对系统的动态方面建模,动态方面指出现在系统结构中任一对象按事件排序的行为,其中这些对象可以是类、接口、构件和节点。

 

5.活动图

是状态图的一种特殊情况,这些状态大都处于活动状态。本质是一种流程图,它描述了活动到活动的控制流。    

交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流。

活动图是一种表述过程基理、业务过程以及工作流的技术。

5.1 带泳道的活动图

      泳道表明每个活动是由哪些人或哪些部门负责完成。

5.2 带对象流的活动图

    用活动图描述某个对象时,可以把涉及到的对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。对象流用带有箭头的虚线表示。

 

6.序列图-时序图(Sequence Diagrams):

    交互图的一种,描述了对象之间消息发送的先后顺序,强调时间顺序。

    序列图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。

6.1 生命线

    生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。

6.2 同步消息

    同步等待消息

6.3 异步消息

    异步发送消息,不需等待

6.6 组合    

    组合片段用来解决交互执行的条件及方式。它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。常用的组合片段有:抉择、选项、循环、并行。

 

7.协作图

交互图的一种,描述了收发消息的对象的组织关系,强调对象之间的合作关系。时序图按照时间顺序布图,而写作图按照空间结构布图。

协作图就是表现对象协作关系的图,它表示了协作中作为各种类元角色的对象所处的位置,在图中主要显示了类元角色和关联角色。类元角色和关联角色描述了对象的配置和当一个协作的实例执行时可能出现的连接。当协作被实例化时,对象受限于类元角色,连接受限于关联角色。

从结构方面来讲:
协作图和对象图一样,包含了一个角色集合和它们之间定义行为方面的内容的关系,从这个角度来说,协作图也是类图的一种,但是协作图与类图这种静态视图不同的是,静态视图描述了类固有的内在属性,而协作图则描述了类实例的特性,因为只有对象的实例才能在协作中扮演自己的角色,它再协作中起了特殊的作用。

从行为方面来讲:
协作图和序列图一样,包含了一系列的消息集合,这些消息在具有某一角色的各对象间进行传递交换,完成协作中的对象则为达到的目标。可以说在协作图的一个协作中描述了该协作所有对象组成的网络结构以及相互发送消息的整体行为,表示潜藏于计算过程中的三个主要结构的统一,即数据结构、控制流和数据流的统一。
示例:

 

 

8.构件图

构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。

构件图的基本功能在于帮助系统使用人员和开发人员更好地了解系统的物理构件。构件图从软件架构的角度来描述一个系统的基本功能,例如系统包括哪些子系统,子系统又包括哪些类和构件等等。使用构件图可以清楚地看出系统包括哪些功能和结构,方便项目组成员制定工作目标和了解工作情况,同时有利于软件的复用。

 

示例:

 

9.部署图

部署图(Deployment Diagram),也称为实施图,它和组件图一样,是面向对象系统的物理方面建模的两种图之一。组件图是说明组件之间的逻辑关系的,而部署图则是在此基础上更进一步,描述了系统运行时进行处理的结点以及在结点上活动的构件的配置。强调了物理设备以及之间的连接关系。。部署图可以显示计算节点的拓扑结构和通信路径、节点上运行的软件组件。

 

部署模型的目的:

描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。

 

软件工程-UML各种图总结-精华_软件工程uml图-CSDN博客

标签:关系,回顾,对象,知识,视图,关联,协作,UML,描述
From: https://www.cnblogs.com/hmy22466/p/17881804.html

相关文章

  • uml总结
    ——uml学习体会养成良好的绘制uml序列图的习惯在学习uml的过程中,你可能会遇到绘制uml序列图的问题,这里就讨论一下怎样才能养成良好的绘制uml序列图的习惯。有一些方法可以帮助您提高uml序列图的质量和效力。它们包括:和主题问题专家一起验证决策;使解决方案尽量简单;为绘制消息和......
  • uml类图
    泛化概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在java中用来表示继承的关系。表示方法:用实线空心三角箭头表示。  实现概念:实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类......
  • Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第一章、传统SSM开发回顾以及问题Spring+SpringMVC+MybatisSSM实现一个简单功能员工添加、查询…SSM项目简单实现项目需求分析—>概要设计—>(库表设计)—>详细设计—>(验证库表正确性)—>编码(环境搭建+......
  • DDR内存基础知识
    一、DDR基础知识1.几个频率(1)核心频率:真实运行频率。(2)倍增系数:DDR通过数据预取技术放大速率,每代ddr倍率是固定的,ddr=2,ddr2=4,ddr3=8,ddr4=8,ddr5=16(3)有效频率;厂商标注的频率,可以理解为数据传输速率。厂商也想逐步淡化其它频率的概念,只让我们记住有效频率。其实......
  • 十、RabbitMQ其他知识点
    一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一ID+指纹码机制Redis原子性(推荐)二、优先级队列1、使用场景2、如何添加3、实战4、测试结果三、惰性队列1、使用场景2、两种模式3、内存开销对比......
  • Linux课堂知识总结
    这是学习Linux的第七节课,老师跟我们讲述了Linux的存储管理操作。[root@linux-server~]#ll/dev/sd*#创建LVM[root@linux-server~]#pvcreate/dev/sdb#创建pv[root@linux-server~]#pvs#查看pv[root@linux-server~]#vgcreatevg1/dev/sdb#创建vg[root@linux-serve......
  • 7 种查询策略教你用好 Graph RAG 探索知识图谱
    近来NebulaGraph社区在LLM+Graph和GraphRAG领域进行了深入的探索和分享。在LlamaIndex和LangChain中,NebulaGraph引入了一系列知识图谱和图存储工具,支持编排、图谱与大模型间的交互。之前,NebulaGraph布道师古思为作为这项工作的主要贡献者已向大家详细介绍了如何构......
  • 自行回顾所用(如:setTimeout、nextTick、await等)
    自行回顾所用setTimeout()setTimeout()是一个JavaScript函数,它用于在特定的时间后执行一段代码。这个函数需要两个参数:一个是要执行的函数,另一个是延迟的毫秒数setTimeout(()=>{...},delay)中的delay是延迟的毫秒数,表示在多少毫秒后执行传入的函数。例如,如果你设置......
  • 数据库基础知识
    DDL语言DDL(Data  Definition Language),数据定义语言,用来定义数据库对象(数据库,表,字段)关于数据库操作1.创建数据库语法:createdatabase数据库名;注意:数据库名需要满足命名规则2.删除数据库语法:dropdatabase数据库名;3.查询所有库语法:showdatabases;4.切......
  • 吴恩达最新短课,知识很硬核,附中英字幕
    吴恩达最新短课,知识很硬核,附中英字幕简介大家好我是老章,吴恩达老师忠实粉丝之前刷过他的很多课程:吴恩达新课,1.25倍速刷完了给吴恩达的最新短课加了中英文字幕最近吴老师又限时免费开放了一个短课:《构建和评估高级RAG应用程序》该课程由由llama_index和truera_ai的j......