UML图 - 类图(Class Diagram)

news2024/9/23 17:23:42

类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。

类图的结构

在这里插入图片描述

类一般由三部分组成:

  • 类名:每个类都必须有一个名字,类名是一个字符串。

  • 类的属性:类的成员变量。一个类属性个数大于等于零。 表示方法为:

    可见性 名称:类型 [ = 缺省值 ]

    a. “可见性”包括公有(public)、私有(private)和受保护(protected)三种,在类图中分别用符号+、-和#表示。表示属性对于类外的元素是否可见。
    b. “名称”用一个字符串表示属性名。
    c.“类型”可以是基本数据类型,也可以是用户自定义类型,表示属性的数据类型。 d.
    “缺省值”为可选项,即属性的初始值。

  • 类的操作:类的任意一个实例对象都可使用的类的成员方法。表示方法:

    可见性 名称(参数列表) [ : 返回类型]

    a.“可见性”的定义同属性。
    b.“名称”用字符串表示。
    c.“参数列表”表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。
    d.“返回类型”是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。

类的关系

关系类型含义符号例子
依赖(Dependency)表示一个类的方法通过另一个类的对象来完成。在这里插入图片描述电脑和USB接口的关系。电脑类的methods(如connectUSB)可能会用到USB接口,如果USB接口发生了改变,那么电脑类也可能需要相应地修改。
关联(Association)表示一个类知道另一个类的属性和方法,可以是双向的,也可以是单向的。在这里插入图片描述学生和课程的关系。每个学生可以关联多门课程,而每门课程也可以关联多个学生。
继承(泛化, Generalization)表示子类是父类的一种,子类继承父类的所有属性和方法,同时可以有自己特有的。在这里插入图片描述鸟类和乌鸦的关系
实现(Realization)通常用于表示类和接口之间的关系,类实现接口的所有方法。在这里插入图片描述接口和类的关系
聚合(Aggregation)表示一个类是另一个类的集合或部分,且部分和整体的生命周期可以不一致。在这里插入图片描述公司和员工的关系。公司由多个员工组成,但是员工可以离开公司,也可以更换公司。
组合(Composition)也表示一个类是另一个类的部分,但是它表示更强的所有权,整体和部分的生命周期合一。在这里插入图片描述人和心的关系,人的生存依赖于心脏,心脏不能离开人而存在。

注意

封装、继承和多态是面向对象编程的三个基本特征,它们是面向对象编程的基本思想,用来描述类或对象之间的交互和组织的方式。封装是个过程,,多态则是一种表现,他们不属于类的关系。

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

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

相关文章

很烦的Node报错积累

目录 1. 卡在sill idealTree buildDeps2、Node Sass老是安装不上的问题3、unable to resolve dependency tree4、nvm相关命令5、设置淘宝镜像等基操5.1 镜像 5.2 npm清理缓存6、Browserslist: caniuse-lite is outdated loader 1. 卡在sill idealTree buildDeps 参考&#xf…

【数据库系统概论】SQL是什么?它有什么特点?

SQL是什么SQL的特点SQL的基本概念感谢 💖 SQL是什么 SQL(Structured Query Language)即结构化查询语句,是关系数据库的标准语言。它的功能不仅仅是查询,而是包括数据库模式创建、数据库数据的插入和修改、数据库安全性…

【iOS】Fastlane一键打包上传到TestFlight、蒲公英

Fastlane一键打包上传到TestFlight、蒲公英 前言一、准备二、探索一、Fastlane配置1、Fastlane安装2、Fastlane更新3、Fastlane卸载4、查看Fastlane版本5、查看Fastlane位置6、Fastlane初始化 二、Fastlane安装蒲公英插件三、Fastlane文件编辑1、Gemfile文件2、Appfile文件3、F…

虹科方案丨自动驾驶多传感器数据融合方法

文章来源:雅名特自动驾驶 点此阅读原文:https://mp.weixin.qq.com/s/QsPMWZDGZaPdEx47L2VmeA 近年来,深度学习技术在涉及高维非结构化数据领域展现出了最先进的性能,如计算机视觉、语音、自然语言处理等方面,并且开始涉…

Vue3中reactive, onMounted, ref,toRaw,conmpted 使用方法

import { reactive, onMounted, ref,toRaw,conmpted } from vue; vue3中 reactive ,ref , toRaw,watch,conmpted 用法 toRaw 返回原响应式对象 用法: const rowList toRaw(row) reactive:ref: ref和reactive都是V…

Microsoft Office 2019 for Mac:提升工作效率的必备办公软件套装

在现代社会,办公软件已经成为我们工作生活中不可或缺的一部分。作为全球领先的办公软件品牌,Microsoft Office 2019 for Mac(Office全家桶)凭借其强大的功能和稳定性,成为了无数Mac用户提升工作效率的首选。 首先&…

教资成绩什么时候出来 2023教资笔试成绩查询时间介绍

上半年教资笔试成绩查询开放时期为2023年4月13日,面试成绩查询开放时间在6月14日。而下半年教资笔试成绩查询开放时间为2023年11月8日,2023下半年教资面试时间是2023年12月9日-10日。 值得一提的是如果考生对成绩有异议的话,还可以在成绩公布…

Python操作Hive数据仓库

Python连接Hive 1、Python如何连接Hive?2、Python连接Hive数据仓库 1、Python如何连接Hive? Python连接Hive需要使用Impala查询引擎 由于Hadoop集群节点间使用RPC通信,所以需要配置Thrift依赖环境 Thrift是一个轻量级、跨语言的RPC框架&…

LeetCode-496-下一个更大元素

题目描述: 题目链接:LeetCode-496-下一个更大元素 解题思路: 方法一:暴力 方法二:单调栈 方法一代码实现: class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {// 最笨的方法&am…

京东数据报告:2023年儿童面膜行业数据分析

如今,儿童面膜在不少家长群体中受到追捧。有的家长称自家孩子3岁开始敷面膜,而在某电商平台上,一位母婴博主称自己的女儿才2岁,“已经深知护肤的重要性了,每天洗完澡就嚷嚷着要敷面膜”。 而从市场角度看,…

Godot 添加Nuget 引用

前言 我的Godot 专栏 我在之前的文章中,解决了Visual Studio 如何去调试正在运行的Godot 程序。Godot 对于C# 的支持只剩下一个,那就是Nuget 添加。 Godot VisualStudio外部编辑器设置 添加Nuget Nuget 添加还是非常的容易的。我们直接添加一个最常用的…

(5)SpringMVC处理携带JSON格式(“key“:value)请求数据的Ajax请求

SpringMVC处理Ajax 参考文章数据交换的常见格式,如JSON格式和XML格式 请求参数的携带方式 浏览器发送到服务器的请求参数有namevalue&...(键值对)和{key:value,...}(json对象)两种格式 URL请求和表单的GET请求会将请求参数以键值对的格式拼接到请求地址后面form表单的P…

使用wireshark解析ipsec esp包

Ipsec esp包就是ipsec通过ike协议协商好后建立的通信隧道使用的加密包,该加密包里面就是用户的数据,比如通过的语音等。 那么如何将抓出来的esp包解析出来看呢? 获取相关的esp的key信息. 打开wireshark -> edit->preferences 找到pr…

[Machine learning][Part4] 多维矩阵下的梯度下降线性预测模型的实现

目录 模型初始化信息: 模型实现: 多变量损失函数: 多变量梯度下降实现: 多变量梯度实现: 多变量梯度下降实现: 之前部分实现的梯度下降线性预测模型中的training example只有一个特征属性&#xff1a…

ESPHome如何调用别的.yaml文件

在.yaml文件中,一般都需要填写wifi部分的信息 wifi:networks:- ssid: "1234"password: "123456789"- ssid: "abcd"password: "123456789"# 当连接不上指定wifi,开启热点配网ap:ssid: "设备配网"当你有很多设备的时候,WiFi信…

Linux相关概念及常见指令

注意:本篇博客除了讲解Linux的相关指令,还穿插着Linux相关概念及原理的讲解。 账号相关指令 whoami:查看当前用户 adduser 用户名: 添加新用户 passwd 用户名:为这个用户设置密码 ls指令 1.Linux中文件的理解 文件是Linux中存储数据的基本单…

Android Termux安装MySQL,并使用cpolar实现公网安全远程连接[内网穿透]

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

微软坚持Rust语言重写 Windows 11核心

近日微软 Azure首席技术官发文,公开微软最近宣布“扩大采用 Rust 语言的成果”,微软同时还在GitHub 中发布了一系列开发工具包,从而可以帮助开发者使用 Rust语言来编写 Windows 驱动程序。 实际上,早在 2019 年7月,微…

TestNG学会了,Java单元测试你就掌握了一半!

01、TestNG 01、简介 在日常测试工作中,经常需要用写代码和脚本来完成一些测试任务,比如自动化测试,接口测试,单元测试等。当写完若干脚本后,需要对这些脚本进行组织、管理和结果统计,这个时候就需要有一…

三维模型3DTile格式轻量化的跨平台兼容性问题分析

三维模型3DTile格式轻量化的跨平台兼容性问题分析 三维模型3DTile格式是一种开放的、高效的和互操作的空间信息数据格式。然而,它作为一种新兴的技术,其在轻量化与跨平台兼容性方面存在着一些问题。 首先,由于3DTile格式主要针对大型三维场景…