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

UML图 - 类图(Class Diagram)

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

类图的结构

在这里插入图片描述

类一般由三部分组成:

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

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

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

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

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

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

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

类的关系

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

注意

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

相关文章:

UML图 - 类图(Class Diagram)

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

sheng的学习笔记-【中文】【吴恩达课后测验】Course 2 - 改善深层神经网络 - 第二周测验

课程2_第2周_测验题 目录:目录 第一题 1.当输入从第8个mini-batch的第7个的例子的时候,你会用哪种符号表示第3层的激活? A. 【  】 a [ 3 ] { 8 } ( 7 ) a^{[3]\{8\}(7)} a[3]{8}(7) B. 【  】 a [ 8 ] { 7 } ( 3 ) a^{[8]\{7\}(3)} a…...

Nacos 监控手册

Nacos 0.8.0版本完善了监控系统,支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态,目前支持prometheus、elastic search和influxdb,下面结合prometheus和grafana如何监控Nacos。与elastic search和influxdb结合可自己查找相关资料…...

项目需求分析5大常见问题及解决方案

需求分析过程中,往往容易导致需求不准确和不完整,引起需求频繁变更,导致项目进度延误和成本增加;而需求分析的误解问题,导致交付产品无法满足客户期待,降低用户满意度和资源浪费。 那么在需求分析中&#x…...

C#学习系列相关之多线程(四)----async和await的用法

一、async、await用法的作用 async用法主要是用来作为修饰符将方法作为异步方法使用,await关键字只用作为在异步方法才能使用,也就是只有当方法有async修饰后,才能在方法中使用await,await后跟Task新的任务启动。(awai…...

极智AI | 大模型优化之KV Cache

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 大模型优化之KV Cache。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 在大模型的优化中经常会听到的一个技术叫…...

Android 使用 registerForActivityResult() 打开系统相册或相机获取图像

一、简介 当使用了 AndroidX 后,发现 startActivityForResult() 标记为过时了,而是推荐我们使用 registerForActivityResult() 函数。 registerForActivityResult() 函数是 Android 中用于启动 Activity 结果回调的新方式。这个函数的目的是简化在 Act…...

如何制作网页 ico

1. 制作 icon 可以通过 https://www.iconfont.cn/collections/detail?spma313x.7781069.1998910419.de12df413&cid13720 或者自己在 PPT 制作,然后截图导出png 文件。 2. 转换为 ico 文件 使用:https://www.bitbug.net/ 上传并且转换成自己要的…...

golang gorm 增删改查以及使用原生SQL(以操作mysql为例)

gorm mysql增删改查 model定义 package _caseimport "gorm.io/gorm"func init() {DB.Migrator().AutoMigrate(Teacher{}, Course{}) } type Roles []stringtype Teacher struct {gorm.ModelName string gorm:"size:256"Email string gorm:&q…...

代码随想录 单调栈part2

503. 下一个更大元素 II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数…...

详解利用高斯混合模型拆解多模态分布 + 精美可视化

文章目录 一、前言二、主要内容三、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 本文旨在介绍如何利用高斯混合模型(Gaussian Mixture Models,简称 GMMs)将一维多模态分布拆分为多个分布。作为统计 / / /机器学习领域常用的概率模型...

排序算法之【归并排序】

📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…...

Qt中QTimer定时器的用法

Qt中提供了两种定时器的方式一种是使用Qt中的事件处理函数,另一种就是Qt中的定时器类QTimer。 使用QTimer类,需要创建一个QTimer类对象,然后调用其start()方法开启定时器,此后QTimer对象就会周期性的发出timeout()信号。 1.QTimer…...

vue-组件定义注册使用

vue组件使用的步骤 定义组件注册组件使用组件 定义组件 Vue.extend(options) 其中options和new Vue(options)出入的options对象几乎一样,但是也有不同。 创建 el不用写—最终所有组件需要经过一个vm的管理,由vm的el决定服务哪个容器。 data必须写成函…...

斑馬打印機打印中文

创建项目 首先說一下,本文章是借鉴了其他大佬的文章,然后我记录一下的文章。 首先创建好一个.net framework的winform项目。 这里面主要用到两个库文件: Fnthex32.dll、LabelPrint.dll。 Fnthex32这个有8位参数和9位参数的,我这…...

(一)Apache log4net™ 手册 - 介绍

0、相关概念 Log4j 几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据这一规则,E.U. SEMPER 🌹项目决定编写自己的跟踪 API。那是在 1996 年初。经过无数次的增强、几个化身和大量的工作,API 已经发展成为 log4j —— 一个流行的 Ja…...

基于Java的民宿管理系统设计与实现(源码+lw+部署文档+讲解等)(民宿预约、民宿预订、民宿管理、酒店预约通用)

文章目录 前言具体实现截图论文参考详细视频演示代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技…...

039:mapboxGL更换地图上的鼠标样式

第039个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中更换地图上的鼠标的样式。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共74行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:htt…...

【云原生】K8S对外服务之Ingress

目录 一、Ingress 简介1.1Ingress 组成1.3Ingress-Nginx 工作原理 二、部署 nginx-ingress-controller2.1部署ingress-controller Pod及相关资源2.2ingress 暴露服务的方式2.3 采用方式二:DaemonSetHostNetworknodeSelector 三、采用方式二:DeploymentNo…...

分布式锁如何实现

分布式是现在的比较主流的技术,常常和微服务一起出现。那么对于多个实例之间,如何证分布式系统中多个进程或线程同步访问共享资源呢?我们其实一想到的就是锁,我们在java里边有 synchronized, 在python里有lock,但是这个…...

如何成为一名出色的SEO优化师

如何成为一名出色的SEO优化师 在当今的数字化时代,搜索引擎优化(SEO)已经成为了每个企业和个人网站获得流量和提升品牌知名度的关键手段。但是,成为一名出色的SEO优化师并非易事,需要掌握一系列专业知识和技能。本文将…...

AI 模型调度平台的系统架构

AI模型调度平台的系统架构:智能时代的核心引擎 在人工智能技术飞速发展的今天,AI模型调度平台成为企业实现智能化转型的关键基础设施。它通过高效管理、调度和优化AI模型资源,帮助用户快速部署和运行复杂的AI任务。本文将深入解析AI模型调度…...

轻量级抢占式任务调度器:面向Arduino的毫秒级实时调度

1. 项目概述Task Scheduler是一款专为 Atmel AVR(ATmega328P/ATmega2560)与 ARM Cortex-M3(SAM3X8E)架构微控制器设计的轻量级、抢占式实时任务调度器,面向 Arduino 生态系统深度优化。其核心目标并非替代完整 RTOS&am…...

低成本自动化:OpenClaw+Gemma-3-12b-it替代Zapier的5个场景

低成本自动化:OpenClawGemma-3-12b-it替代Zapier的5个场景 1. 为什么选择OpenClawGemma替代Zapier 作为一个长期使用Zapier的自动化爱好者,我最近开始尝试用OpenClawGemma-3-12b-it组合来替代部分Zapier工作流。这个转变源于两个痛点:一是Z…...

效率倍增:用快马AI生成服务器批量管理工具,告别重复劳动

最近在团队里负责服务器运维工作,经常需要同时管理几十台服务器。每次登录、执行重复命令、检查状态都要耗费大量时间,直到发现了用InsCode(快马)平台快速搭建批量管理工具的方法,效率直接翻倍。今天就把这个自动化管理方案分享给大家。 痛点…...

利用快马平台快速构建b站a8直播观看页面原型

利用快马平台快速构建B站A8直播观看页面原型 最近想尝试开发一个B站A8直播的观看页面原型,主要想验证一下直播相关的技术方案。作为一个前端开发者,我深知从头开始搭建这样一个页面需要花费不少时间,特别是在处理视频流、弹幕互动和响应式设…...

米哈游面经规律总结:我看了大量面经,挂掉的人都卡在同一层

米哈游面经规律总结:我看了大量面经,挂掉的人都卡在同一层 offer直通车-校招大礼包获取:入口 几乎所有挂掉的人,都挂在同一个地方 最近整理米哈游的面经,看到一个反复出现的场面。 面试官问:"说说智…...

深度解析jqktrader:基于Python的同花顺自动化交易架构设计与实战应用

深度解析jqktrader:基于Python的同花顺自动化交易架构设计与实战应用 【免费下载链接】jqktrader 同花顺自动程序化交易 项目地址: https://gitcode.com/gh_mirrors/jq/jqktrader 在量化交易技术快速发展的今天,传统手动交易已无法满足高频、精准…...

别再手动量了!用Python+Open3D给BIM模型做‘CT扫描’,自动揪出施工误差(附完整代码)

BIM模型质量检测革命:PythonOpen3D实现毫米级施工误差智能分析 施工现场的质量控制一直是建筑行业的核心痛点。传统靠人工抽检的方式不仅效率低下,还容易遗漏隐蔽问题。想象一下,如果能把BIM模型当作"数字孪生体",用三维…...

C++ 打破常识:无需传参,真正实现「调用时才触发 static_assert」

文章目录前言一、传统写法的死胡同二、核心突破思路三、可直接验证的终极代码效果承诺&#xff1a;报错效果&#xff1a;四、关键细节解释&#xff08;最重要的部分&#xff09;1. template<int 0> 到底是什么&#xff1f;2. 为什么不用参数也能实现延迟&#xff1f;3. …...