设计模式 - UML类图

news2024/12/25 12:20:36

1. 什么是 UML

统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统图形化、能表达软件设计中的动态与静态信息。L从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图部署图等9种图。

2. 类图

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

2.1 类图的作用

  • 显示模型的静态结构
  • 描述系统里类的集合,类的属性和类之间的关系
  • 简化了人们对系统的理解
  • 类图是系统分析和设计阶段的重要产物
  • 是系统编码和测试的重要模型

2.2 类的表示方式

在这里插入图片描述

可见性

  • +:表示public
  • -:表示private
  • #:表示protected

属性: 可见性 名称:类型 [=缺省值]
或者:-String name( 不标准)

方法:可见性 名称(参数列表) [:返回类型]
或者:+void work() (不标准)

2.3 类与类之间的关系

2.3.1 关联关系(引用)

2.3.1.1 单项关联(实线实心箭头,指向被引用)

在这里插入图片描述

2.3.1.2 双向关联(实直线)在这里插入图片描述

双方各自持有对方类型的成员变量。

2.3.1.3 自关联(实线实心箭头,指向自身)

在这里插入图片描述
自己包含自己。一般二叉树、链表中会用到。

2.3.2 聚合关系(空心菱形,指向整体)

在这里插入图片描述

聚合关系是关联关系的一种,是强关联关系,是整体和部分之间的关系。

聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在

例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。

2.3.2 组合关系(实心菱形,指向整体)

在这里插入图片描述

组合表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系

在组合关系中,整体对象可以控制部分对象的生命周期,一且整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。

例如,头和嘴的关系,没有了头,嘴也就不存在了。

2.3.3 依赖关系(虚线箭头,指向被使用)

在这里插入图片描述
依赖关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。

在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。

例如司机和汽车,司机驾驶汽车。

2.3.4 继承(泛化)关系(空心三角箭头,指向父类)

在这里插入图片描述

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

例如,Student类和Teacher类都是Person类的子类。

2.3.4 实现关系(虚线空心箭头,指向接口)

在这里插入图片描述

实现关系是接口与实现类之间的关系。

在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。
例如,汽车和船实现了交通工具。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8种数据结构

快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算…

【回答问题】ChatGPT上线了!有哪些3D点云算法模型?3D点云算法模型实现代码?

有哪些3D点云算法模型? 3D点云算法的模型有很多种,以下是一些常见的算法模型: 归一化重心法(Normalized point-to-point ICP):是一种常用的模型配准方法,用于将两个模型中的点匹配起来。 基于…

跨年晚会前夕,曹云金和前妻复合了

每到跨年晚会的时候,总会有大的新闻事件发生,比如说在今年跨年晚会前夕,主持人何炅的老父亲,就非常不幸地驾鹤西去了。话说主持人何炅,在父亲离开后坚强地主持节目,他泪眼婆娑的表情,也登上了各…

电子游戏销售之回归模型与数据可视化

电子游戏销售之回归模型与数据可视化 文章目录电子游戏销售之回归模型与数据可视化0、写在前面1、回归模型1.1 模型建立准备1.2 建立模型1.3 模型分析2、数据可视化3、参考资料0、写在前面 该篇文章的任务包括以下3个方面 检测与处理缺失值建立回归模型数据可视化 实验环境 Pyt…

我的2022年总结

我的2022年总结 行走于世,风大时要表现逆的风骨,风小时要表现顺的悠然。 我们可以转身,但是不必回头,即使有一天你发现自己走错了,你也应该转身大步朝着对的方向去,而不是回头埋怨自己错了。 一、旧事 …

INT201-Decision, Computation and Language(2)

文章目录5. Turing Machine5.1 TM Configuration5.2 TM Transitions5.3 TM Computation5.4 Language accepted by TM5.5 Decider5.6 Multi-tape TM5.6.1 Multi-tape TM equivalent to 1-tape TM5.7 Nondeterministic TM5.7.1 Address5.7.2 NTM equivalent to TM5.8 Enumerable …

【Linux操作系统】yum三板斧和yum源的配置

文章目录一.Linux下软件的生态二.yum三板斧1.yum简介2.list搜索软件包3.install下载并安装4.remove卸载软件三.windows/Linux下文件互传1.lrzsz的查看和下载安装2.rz上传3.sz下载四.Linux软件生态的本土化1.镜像简介2.Linux软件生态的本土化五.yum源的配置1.找到yum源配置文件并…

Jedis: Java连接redis服务

文章目录一、编程语言与 Redis二、Jedis 连接三、JedisPool 连接池四、可视化客户端提示:以下是本篇文章正文内容,Redis系列学习将会持续更新 一、编程语言与 Redis ● Java 语言连接 redis 服务   Jedis   SpringData Redis   Lettuce ● C 、C …

ArcGIS基础实验操作100例--实验40构建点对连线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验40 构建点对连线 目录 一、实验背景 二、实验数据 三、实验步骤 (1&…

可视化系列讲解:canvas的动画实现

文章目录一、Canvas动画1.1 Canvas绘图都是通过JavaScript 去操控的,如要实现一些交互性动画是相当容易的。那Canvas是如何做一些基本动画的?1.2 Canvas 画出一帧动画的基本步骤(如要画出流畅动画,1s 需绘60帧)&#x…

【回答问题】ChatGPT上线了!推荐30个以上比较好的自然语言处理模型

【回答问题】ChatGPT上线了!推荐40个以上比较好的自然语言处理模型以及github源码? BERT (Bidirectional Encoder Representations from Transformers): https://github.com/google-research/bert GPT (Generative Pre-training Transformer): https:/…

Taro笔记

Taro官网:https://nervjs.github.io/taro-docs/docs/ Taro简介 可使用React、Vue等框架开发跨端开发框架,一套代码编译到多端,使用Taro,只书写一套代码,再通过Taro的编译工具,将源代码分别编译出可以在不同端(微信小程序、H5、RN等)运行的代码。Taro 核心转化图 Taro使…

数据链路层重点总结

文章目录前言一、MAC地址二、一跳一跳的网络传输三、以太网四、ARP协议4.1 ARP协议的作用4.2 ARP协议的工作流程五、MTU5.1 什么是MTU5.2 MTU对IP协议的影响5.3 MTU对UDP协议的影响5.4 MTU对于TCP协议的影响总结前言 又是新的一年,展望2023年,博主给大家…

可视化系列讲解:canvas的进阶使用(颜色和样式设置,绘制文本,绘制图片)

文章目录一、Canvas的颜色和样式设置1.1 颜色(不设置默认黑色)1.2 透明度 Transparent1.3 线型 Line styles二、Canvas绘制文本2.1 文本的样式(需在绘制文本前调用)2.2 fillText(text, x, y [, maxWidth])2.3 strokeText(text, x,…

回首2022,展望2023

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,Java领域新星创作者📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到…

【自学Java】Java数据类型

Java数据类型 Java数据类型 数据类型在编程语言中占有重要的地位。Java 的数据类型分为基本数据类型和引用数据类型。 Java基本类型 Java 基本数据类型包括:boolean,byte,char,short,int,long&#xff…

node.js中fs\path\http模块的使用

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:Node.js的fs\path\http模块的使用,模块化开发概念 目录 一、node.js概念与作…

dubbo源码实践-serialize层的例子

目录 1 serialize层概述 2 序列化的简单例子 2.1 项目截图 2.2 三个类的源码 2.2.1 ABC是实体类 2.2.2 TestSeriarsWrite把ABC对象序列化到文件中 2.2.3 TestSeriarsRead从文件中读取ABC对象 2.2.4 运行结果 3 展示一个通过URL属性动态切换序列化实现类的例子 3.1 原理分…

为什么云并不总是足够的

虽然人们普遍认为云是未来,但云仍然有多种形式,理解每种形式的各自优点至少可以说是模糊的。 行业分析师有时会争论单租户与多租户部署的优缺点。虽然单租户部署在最近可能是某些组织的可行解决方案,但多租户部署为希望实现运营现代化的组织…

ansible(第一天)

第一章:认识ansible 一、ansible的安装与介绍 1.Ansible软件及公司 ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。 这个工具的目标有这么几项:让我们自动化部署APP;自动化…