当前位置: 首页 > news >正文

UML建模

主要记录UML中的相关知识,包括类、对象、接口、方法、用例、活动、状态、组件和部署图,详细介绍类之间关系与类图的绘制

文章目录

  • 一、UML介绍
  • 二、类图
    • 类之间的关系
      • 依赖关系
      • 继承关系
      • 实现关系
      • 关联关系
      • 组合关系
      • 聚合关系


正文内容:

一、UML介绍

UML(Unified Modeling Language)是一种用于软件开发的标准建模语言,用于描述、构建、可视化和文档化软件系统的组织结构、行为和交互。UML提供了一套可扩展的图形符号和语法规则,可以用来表示系统的各种方面和部分,例如类、对象、接口、方法、用例、活动、状态、组件和部署等

UML图是UML的核心概念,主要有以下几种类型:

  1. 类图(Class Diagram):表示系统中的类、接口、对象和它们之间的关系
  2. 时序图(Sequence Diagram):描述对象之间的时序关系,表示对象之间的消息交互顺序
  3. 用例图(Use Case Diagram):描述系统的功能和行为,以及与外部环境的交互
  4. 活动图(Activity Diagram):描述系统的工作流程,表示各个活动的执行顺序和条件
  5. 状态图(State Diagram):描述系统中对象的状态转换,表示对象在不同状态下的行为和响应
  6. 组件图(Component Diagram):描述系统中的软件和硬件组件,以及它们之间的依赖关系
  7. 部署图(Deployment Diagram):描述系统的物理架构,表示软件和硬件组件的部署情况和连接方式

UML图可以用于各种软件开发过程中,例如需求分析、系统设计、编码实现、测试验证等阶段。它可以帮助开发人员更好地理解和设计系统,也可以用于系统的文档化和交流

二、类图

类之间的关系

类与类之间存在依赖,泛化,实现,关联,组合,聚合关系

依赖关系

依赖关系(Dependency):表示一个类的实现需要另一个类的协助。依赖关系用箭头表示,箭头指向被依赖的对象
通俗的讲,如果A类使用了B类,则A类的实现依赖于B类。如:B类作为A类成员属性;B类作为形参存在于A类方法;B类在A类方法中作为返回值;A类方法中使用B类
绘制示例
在这里插入图片描述

继承关系

继承关系(Inheritance):表示一个类继承自另一个类的属性和方法,表示一种类之间的泛化关系,通常以空心三角形和实线表示,箭头从子类指向父类
通俗的讲,继承是一种特殊的依赖关系
绘制示例
在这里插入图片描述

实现关系

实现关系(Realization):表示一个类实现了一个接口,表示类和接口之间的关系,通常以空心三角形和虚线表示,箭头从类指向接口
通俗的讲,实现也是一种特殊的依赖关系
绘制示例
在这里插入图片描述

关联关系

关联关系(Association):是指不同类之间的语义上的联系,用于表示类之间的关系,表示一个类中的对象和另一个类中的对象有连接。通常,关联被用来描述对象之间的连接,这些连接可以是单向的、双向的,也可以是多重的。关联也是一种特殊的依赖关系。在类图中,关联用一条带箭头的线表示,箭头指向表示被依赖者的类
关联关系分为以下几种
单向关联(Unidirectional Association):表示类之间的单向关系,箭头只指向被依赖者
双向关联(Bidirectional Association):表示类之间的双向关系,箭头指向两个类
自关联(Self Association):表示同一个类中不同对象之间的关系
聚合关系(Aggregation):表示整体与部分之间的关系,表示部分可以属于多个整体,用一个空心菱形表示
组合关系(Composition):表示整体与部分之间的关系,表示部分不能属于多个整体,用一个实心菱形表示
多重性关系(Multiplicity):表示关联的多重性,即关联关系的数量限制。例如,1对1、1对多、多对多等
绘制示例
在这里插入图片描述

组合关系

组合关系(Composition):表示整体和部分之间的强关系,即整体对象由部分对象组成,同时部分对象是整体对象的一部分,也就是说部分对象不能离开整体对象而单独存在。组合关系用实心菱形表示
绘制示例
此时需要注意,Computre包括Mouse与Monitor,此时的Mouse与Monitor与Computre共生存(成员属性定义的时候已经通过new关键字赋予实际值),Computre对象死亡后Mouse与Monitor对象跟着消亡,这是一种is-a的关系,Computre与(Mouse和Monitor)不可以分割

在这里插入图片描述

聚合关系

聚合关系(Aggregation):表示整体和部分之间的关系,即一个整体对象可以由多个部分对象组成(成员属性定义的时候只有引用,对象是通过set方法进行赋值),但是部分对象并不是整体对象的一部分,也就是说部分对象可以离开整体对象而存在。聚合关系用空心菱形表示
绘制示例
此时需要注意,Computre包括Mouse与Monitor,此时的Mouse与Monitor与Computre并没有共生存,Computre对象死亡后不会影响到Mouse与Monitor,这是一种has-a的关系,Computre与(Mouse和Monitor)可以分割

在这里插入图片描述
从关系强弱的角度来看,组合关系最强,因为部分对象与整体对象的生命周期是相同的,部分对象无法独立存在。聚合关系次之,因为部分对象可以离开整体对象而单独存在。依赖关系最弱,因为两个对象之间的关系是临时的、短暂的,一个对象的变化对另一个对象的影响是暂时的、有限的

http://www.lryc.cn/news/24883.html

相关文章:

  • JavaScript常见面试题(更新中)
  • TCP/IP协议
  • Python使用异步线程池实现异步TCP服务器交互
  • matplotlib常用操作
  • 二分算法题
  • Vue+ElementUI+SpringBoot项目配合分页插件快速实现分页(简单暴力)
  • 【回眸】牛客网刷刷刷!嵌入式软件中也会遇到的嵌入式硬件,通讯,通讯协议专题(一)
  • 使用Vue展示数据(动态查询)
  • 构建数据库测试数据——mysql
  • 你想要的Android性能优化系列:启动优化 !
  • python3的基础入门3:基本数据类型
  • 消息队列原理与实战-学习笔记
  • Linux权限相关知识(大量图文展示,及详细操作)
  • Ep_操作系统面试题-什么是协程
  • 在C#中使用互斥量解决多线程访问共享资源的冲突问题
  • JavaEE进阶第六课:SpringBoot配置文件
  • MySQL基础(一)SQL分类、导入、SELECT语句,运算符
  • 反激与正激的区别
  • 王道操作系统课代表 - 考研计算机 第四章 文件管理 究极精华总结笔记
  • 前端开发规范,你真的了解吗?一起来学习一下前端开发规范,让你的代码高级起来!
  • Licode—基于webrtc的SFU/MCU实现
  • 开发运维工具推荐 --- 解决远程访问局域网服务的问题。开发调试推荐
  • 【华为OD机试 】单词倒序(C++ Java JS Python)
  • PLC 诊断故障的基本原理
  • QT打开外部程序并嵌入Qt子窗口的缺点
  • 如何系统地学习 C++ 语言?
  • 【数据结构】单链表
  • Windows 右键菜单扩展容器 [开源]
  • 爆文制造机!小红书热榜3个方向,告诉你选题诀窍!
  • 【Web安全社工篇】——水坑攻击