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

【AI驱动的设计模式:类图的智能化解读】

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)
🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”

文章目录

    • UML
    • 含义
    • 类图概述
    • 类图表示方法
    • 类图之间的关系
      • 关联关系
      • 聚合关系(整体没了部分还存在)
      • 组合关系(整体没了部分也没了)
      • 依赖关系(在一个类的方法里面调用另一个类的对象)
      • 继承关系
      • 实现关系

UML

含义

  • UML(Unified Modeling Language , UML)统一建模语言:是用来设计软件可视化的建模语言。
  • 特点:简单、统一、图形化、能表达软件设计中的动态与静态信息。
  • UML图包括以下9种类型图,如果有时间,我会把它们单独出来撰写相关类型图的画法,在设计模式中,最主要的是类图,所以,本篇文章主要是与类图有关。

在这里插入图片描述

类图概述

  • 类图(Class Diagram)显示模型的静态结构(静态成员变量、成员方法等),特别是模型中存在的类、类的内部结构以及它们与其它类的关系等。类图不显示暂时性信息。类图是面向对象建模的主要组成部分。

类图表示方法

在这里插入图片描述

  • +:表示public

  • -:表示private

  • #:表示protected

  • 属性的完整表示方式: 可见性 名称 : 类型

  • 方法的完整表示方式: 可见性 名称(参数列表)

类图之间的关系

关联关系

在这里插入图片描述

  • 1.单向关联:

在这里插入图片描述

    • 在UML图中单向关联,用一个带箭头的实线表示。上图表示每个顾客都有一个地址,通过让Customer类持有一个类型为Address的成员变量实现。
  • 2.双向关联:

在这里插入图片描述

    • 双向关联就是对方各自持有对方类型的成员变量。
    • 双向关联用一个不带箭头的直线表示。上图中在Customer类中维护一个List<Product>,表示一个顾客可以购买多个商品;在Product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客购买。
  • 3.自关联

在这里插入图片描述

    • 自关联用一个带箭头且指向自身的线表示。
    • 上图的意思是Node类包含类型为Node的成员变量,也就是“自己包含自己”。

聚合关系(整体没了部分还存在)

  • 聚合关系:是关联关系的一种,是强关联关系,是整体与部分之间的关系。
  • 聚合关系是通过成员对象实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。

在这里插入图片描述

  • 例如:上图中的学校与老师之间的关系,学校包含老师,但是如果学校停办了,老师依然存在。
  • 在UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。

组合关系(整体没了部分也没了)

  • 组合关系:组合表示类之间整体和部分的关系,是更强烈的一种聚合关系。
  • 在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。

在这里插入图片描述

    • 组合关系用带实心菱形的实线来表示,菱形指向整体。上面所示是头和嘴的关系图。

依赖关系(在一个类的方法里面调用另一个类的对象)

  • 依赖关系:是一种使用关系,他是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。

在这里插入图片描述

    • 如上图,Driver依赖于Car,依赖关系使用带箭头的虚线表示,箭头从使用类指向被依赖的类。

继承关系

  • 继承关系:是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系。

在这里插入图片描述

    • 继承关系(泛化关系)用带空心三角箭头的实线来表示,箭头从子类指向父类。在代码实现时,使用面向对象的继承机制来实现泛化关系。上图中,Student 和 Teacher类都是Person的子类。

实现关系

  • 实现关系:是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有抽象操作。

在这里插入图片描述

    • 实现关系使用带空心三角箭头虚线表示,箭头从实现类指向接口。如上图中,汽车和船实现了交通工具。

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)
](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)


http://www.kler.cn/a/446428.html

相关文章:

  • RestTemplate实时接收Chunked编码传输的HTTP Response
  • Restaurants WebAPI(二)——DTO/CQRS
  • C语言中的内存管理:理解指针、动态内存分配与内存泄漏
  • 一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器
  • Spark-Streaming集成Kafka
  • C# 中的委托与事件:实现灵活的回调机制
  • [机器学习] 决策树
  • 关于VS项目中添加第三方库出现error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 错误的解决方法
  • 【Visual Studio Code(VSCode)介绍】
  • 城市灾害应急管理集成系统——系统介绍
  • Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
  • [react] <NavLink>自带激活属性
  • 项目29:简易谜语生成器 --- 《跟着小王学Python·新手》
  • 如何解决Elastic Job Lite任务分配到不健康实例问题?
  • Java 中 wait 和 sleep 的区别:从原理到实践全解析
  • lua dofile 传参数
  • GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录
  • 基于 Python 将 PDF 转 Markdown 并拆解为 JSON,支持自定义标题处理
  • Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
  • Python Turtle图形库基本命令详解
  • leetcode之hot100---160相交链表(C++)
  • MFC/C++学习系列之简单记录2——thread和Release
  • 【服务器】MyBatis是如何在java中使用并进行分页的?
  • 中阳科技的量化交易模型:从理论到实践的全面探索
  • 1688跨境代购代采:API赋能的自动化与信息化革新
  • 【NLP 18、新词发现和TF·IDF】