【设计模式】二、UML 类图与面向对象设计原则 之 UML概述

二、UML 类图与面向对象设计原则
(一)UML 类图

  1. UML 概述
  2. 类与类的UML图示
  3. 类之间的关系

(二)面向对象设计原则

  1. 单一职责原则(Single Responsibility Principle, SRP)
  2. 开闭原则(Open-Closed Principle, OCP)
  3. 里氏替换原则(Liskov Substitution Principle, LSP)
  4. 依赖倒置原则(Dependence Inversion Principle, DIP)
  5. 接口隔离原则(Interface Segregation Principle, ISP)
  6. 迪米特法则(最少知道原则)(Law of Demeter, LoP)
  7. 合成复用原则(Composite Reuse Principle, CRP)

文章目录

    • 二、UML 类图与面向对象设计原则
      • (一)UML 类图
        • 1. UML 概述
          • (1)UML 定义
          • (2)UML 结构
            • (2.1)视图(View)
            • (2.2)图(Diagram)
            • (2.3)模型元素(Model Element)
            • (2.4)通用机制(General Mechanism)
      • ※ 本文小结


二、UML 类图与面向对象设计原则

​ 学习设计模式之前需要掌握一些预备知识,主要包括UML类图和面向对象设计原则,它们是“基础内功”,将为后续的“深入修行”设计模式奠定基础。


UML 类图 可用于描述每个设计模式的结构以及对模式实例进行说明,而模式结构又是设计模式解法的核心组成部分。学一个设计模式,如果不能绘制和理解其结构图,基本上等于没学。


面向对象设计原则 是评价每个设计模式应用效果的重要依据。每个模式都符合一个或多个面向对象设计原则(个别模式除外),这些原则都是从无数项目中提取出来的经验性原则,他们为消除软件设计和实现中的“臭味(Bad Smell)”而诞生,力图为当前系统提供最好的设计方案。常用的面向对象设计原则包括7个,分别是单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则(最少知道原则)和合成复用原则

(一)UML 类图

1. UML 概述
(1)UML 定义

UML(Unified Modeling Language,统一建模语言) 是一种通用的可视化建模(Modeling)语言,不同于编程语言,它通过一些标准的图形符号和文字来对系统进行建模,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。

​ UML 适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,UML 是一种总结了以往建模技术的经验并吸收了当今最优秀成果的标准建模方法。


​ UML 是一种语言,也就意味着它有属于自己的标准表达规则,它不是一种类似 Java、C++、C# 的编程语言,而是一种分析设计语言,也就是一种建模语言

(2)UML 结构

UML 是一种有图形符号表达的建模语言,UML结构主要包括以下四个部分:

  • 视图(View):包括用户视图、结构视图、行为视图、实现视图、环境视图。
  • 图(Diagram):包括类图、对象图、组件图、部署关系图这4种结构图,以及用例图、顺序图(序列图)、协作图、活动图、状态图这5种行为图。
  • 模型元素(Model Element):UML图中使用的概念(如:类、对象、消息)和这些概念之间的关系(如:关联关系、依赖关系、泛化关系、实现关系)。
  • 通用机制(General Mechanism):通用机制为模型元素提供额外的注释、信息和语义。
(2.1)视图(View)

UML 视图用于从不同的角度来表示待建模系统。视图是有许多图形组成的一个 抽象集合,在建立一个系统模型时,只有通过定义多个视图,每个视图显示该系统的一个特定方面,才能构造出该系统的完整蓝图,视图也将建模语言链接到开发所选择的方法和过程。

UML视图(View)包含五大系统视图:

  1. 用户视图:以用户的观点表示系统的目标,它是所有视图的核心,用于描述系统的需求。
  2. 结构视图:表示系统的静态行为,描述系统的静态元素,如包、类与对对象,以及它们之间的关系。
  3. 行为视图:表示系统的动态行为,描述系统的组成元素(如对象)在系统运行时的交互关系。
  4. 实现视图:表示系统中逻辑元素的分布,描述系统中物理文件以及它们之间的关系。
  5. 环境视图:表示系统中的物理元素的分布,描述系统中硬件设备以及它们之间的关系。
(2.2)图(Diagram)

UML 图是描述UML视图内容的图形。UML图(Diagram)主要包含9种,分为结构图和行为图,如下:

(一)结构图(4种)

  1. 类图:描述了系统中对象的类型以及它们之间存在的各种静态关系。
  2. 对象图:对象图是类图的一个实例,是系统在某个时间的详细状态的快照。
  3. 组件图:描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。
  4. 部署关系图:描述了系统内部的软件如何分布在不同的节点上。

(二)行为图(5种)

  1. 用例图:指由参与者、用例、边界以及它们之间的关系构成的用于描述系统功能的视图。(用于需求建模)
  2. 顺序图(序列图):描述了在用例的特定场景中,对象如何与其他对象交互。
  3. 协作图(通信图):描述了系统的行为是如何由系统的成分合作实现的。
  4. 活动图:描述了具体业务用例的实现流程。
  5. 状态图:描述了对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。

UML图(Diagram)对应的UML视图(View):

  1. 用户视图:(如:用例图)
  2. 结构视图:(如:类图、对象图、包图、组合结构图)
  3. 行为视图:(如:状态图、活动图、顺序图、通信图、定时图、交互概览图)
  4. 实现视图:(如:组件图)
  5. 环境视图:(如:部署图)
(2.3)模型元素(Model Element)

模型元素是指UML图中所使用的一些概念,它们对应于普通的面向对象概念,如类、对象、消息以及这些概念之间的关系,如关联关系、依赖关系、泛化关系等。

同一个模型元素可以在多个不同的UML图中使用,但是无论在哪个图中,同一个模型元素都必须保持相同的意义并具有相同符号。

(2.4)通用机制(General Mechanism)

UML提供的通用机制为模型元素提供额外的注释、信息和语义,这些通用机制也提供了扩展机制,允许用户对UML进行扩展,如定义新的建模元素、扩展原有元素的语义、添加新的特殊信息来扩展模型元素的规则说明等,以便适用于一个特定的方法或过程、组织或用户。


※ 本文小结

在这里插入图片描述
在这里插入图片描述


参考资料

参考书籍:《设计模式的艺术 / 刘伟著》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/457673.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

x86_64架构栈帧以及帧指针FP

文章目录 一、x86_64架构寄存器简介二、x86_64架构帧指针FP三、示例四、保存帧指针参考资料 一、x86_64架构寄存器简介 在x86架构中,有8个通用寄存器可用:eax、ebx、ecx、edx、ebp、esp、esi和edi。在x86_64(x64)扩展中&#xff…

基于检索增强的 GPT-3.5 的文本到 SQL 框架,具有样本感知提示和动态修订链。

文章目录 一、论文关键信息二、基础概念三、主要内容1. Motivations2. Insights3. 解决方案的关键4. 实验 四、总结与讨论 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题:Retrieval-augmented GPT-3.5-based T…

港大提出图结构大语言模型:GraphGPT

1. 引言 图神经网络(Graph Neural Networks)已经成为分析和学习图结构数据的强大框架,推动了社交网络分析、推荐系统和生物网络分析等多个领域的进步。图神经网络的主要优势在于它们能够捕获图数据中固有的结构信息和依赖关系。利用消息传递…

Selenium 自动化 —— 入门和 Hello World 实例

Selenium 是什么 Selenium 是一个用于自动化网页浏览器操作的工具,它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能,也可用于执行一些基本的浏览器操作任务,例如自动化表单填写、网页导航等。 Selenium 是一个开源项目&a…

大米自动化生产线的运作原理与科技创新

在当今科技飞速发展的时代,自动化生产线已经成为各个行业提高效率、降低成本的重要工具。而在粮食产业中,大米的自动化生产线更是以其独特的魅力,引领着粮食加工业的转型升级。星派将带您深入了解大米自动化生产线的运作原理,以及…

Docker 安装部署MySQL教程

前言 Docker安装MySQL镜像以及启动容器,大致都是三步:查询镜像–>拉取镜像–>启动容器 1、查询镜像 docker search mysql2、拉取镜像 拉取镜像时选择stars值较高的 docker pull mysql:5.7 #这里指定拉取对应的版本Mysql5.7,没有指…

【新手】在idea中配置tomcat服务器,并部署一个项目

目录 第一步:新建java项目第二步:新建完成后,按照步骤选择添加框架支持第三步:点击添加配置第四步:在web文件包下创建一个新的jsp第五步:在新建的jsp里编写java或者html 前言:本章学习的是在ide…

Ubuntu虚拟机的IP总频繁变化,导致Xshell断开连接

文章目录 一、IP变化的原因二、解决方法:固定IP三、参考文章 一、IP变化的原因 1.DHCP协议 虚拟机系统(Ubuntu、CentOS、UOS等Linux系统)启动后,加入本地局域网网络时,会向本地网络申请租约一个IP地址,租约时长不定。我这里租约时…

谁将主导未来AI市场?Claude3、Gemini、Sora与GPT-4的技术比拼

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚…

vscode 向下复制当前行(即visual studio 中的Ctrl + D)功能快捷键

参考:https://blog.csdn.net/haihui1996/article/details/87937912 打开vscode左下角键盘快捷键设置,找到copy line down,即可查看当前默认快捷键为“shift Alt ↓” 双击快捷键,输入自己想要的快捷组合,如CtrlD,然…

在 IntelliJ IDEA 中远程调试 Java 程序

1. 在idea中配置,如下图: 2. 配置启动脚本5005监听 启动脚本配置 nohup java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005-Duser.timezoneGMT08 -Dserver_name${appname} $JAVA_OPT -jar ${jarname} --spring.cloud.nacos.discover…

uniapp遇到的问题

【uniapp】小程序中input输入框的placeholder-class不生效解决办法 解决:写在scope外面 uniapp设置底部导航 引用:https://www.jianshu.com/p/738dd51a0162 【微信小程序】moveable-view / moveable-area的使用 https://blog.csdn.net/qq_36901092/…

计讯物联水库泄洪监测预警系统,保障水库安全度汛

近日,受台风外围环流影响,多地受到特大暴雨侵袭。因此水库泄洪是势在必行。泄洪作为水库防洪的重要方法之一,水库可通过其库容拦蓄洪水,在水库容量超出或下游需求的时候则开始实行泄洪,达到减免洪水灾害的目的&#xf…

【Unity】程序创建Mesh(二)MeshRenderer、光照、Probes探针、UV信息、法线信息

文章目录 接上文MeshRenderer(网格渲染器)Materials(材质)Material和Mesh对应Lighting光照Lightmapping材质中的光照 光源类型阴影全局光照Probes(探针)Ray Tracing(光线追踪)Additi…

Hive企业级调优

本质就是一个hadoop的客户端,将HIve SQL转化成MapReduce程序 一、企业级调优 这部分主要用在实际工作中和面试中 1、主要分为计算资源调优 & 执行计划调优 计算资源调优就是yarn资源的配置,和mapreduce的资源配置,分给多少内存&#xff…

基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台

tar -xzf prometheus-2.7.0-rc.1.linux-amd64.tar.gzcd prometheus-2.7.0-rc.1.linux-amd64/./prometheus --config.fileprometheus.yml --web.listen-address:5555 Prometheus 默认监听端口号为 9090,为了不与系统上的其它进程监听端口冲突,我们在启动…

docker 部署nacos

docker 部署nacos 1、配置数据库表 -- 导出 nacos 的数据库结构 DROP DATABASE IF EXISTS nacos; CREATE DATABASE IF NOT EXISTS nacos; USE nacos;-- 导出 表 nacos.config_info 结构 DROP TABLE IF EXISTS config_info; CREATE TABLE IF NOT EXISTS config_info (id bigi…

【Flutter 面试题】怎么理解Flutter异步编程的async和await?

【Flutter 面试题】怎么理解Flutter异步编程的async和await? 文章目录 写在前面口述回答补充说明完整代码示例运行结果详细说明 写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区…

GCNv2_SLAM-CPU详细安装教程(ubuntu18.04)

GCNv2_SLAM-CPU详细安装教程-ubuntu18.04 前言一、安装第三方库1.安装Pangolin2.安装OpenCV3.安装Eigen4.安装Pytorch(c) 二、安装以及运行GCNv2_SLAM1.安装编译GCNv2_SLAM2.单目模式运行演示案例 总结 前言 paper:https://arxiv.org/pdf/1902.11046.pdf githup::https://gith…

2、鸿蒙学习-申请调试证书和调试Profile文件

申请发布证书 发布证书由AGC颁发的、为HarmonyOS应用配置签名信息的数字证书,可保障软件代码完整性和发布者身份真实性。证书格式为.cer,包含公钥、证书指纹等信息。 说明 请确保您的开发者帐号已实名认证。每个帐号最多申请1个发布证书。 1、登录AppGa…