UML--类图--软件工程系统学习-- idea查看类图-类关系图

news2024/9/21 2:33:00

文章目录

  • 什么是类图
    • 类图的用途
    • 类图的组成
    • 什么是类
    • 类符号
    • 类关系
      • 依赖(Dependence)
        • idea查看依赖
      • 关联关系(association)
      • 继承/泛化
        • idea查看继承
      • 实现(realization)
      • 聚合
      • 组成
      • 组合和聚合之间的差异
  • 类图详解
    • idea查看类图
    • 可见性
  • idea更多类图操作

什么是类图

在软件工程中,统一建模语言 (UML) 中的类图是一种静态结构图,它通过显示系统的类、其属性、操作(或方法)以及对象之间的关系来描述系统的结构。

类图的用途

  • 显示系统中分类器的静态结构(各个类的静态结构)
  • 图为UML规定的其他结构图提供了基本符号
  • 对开发人员和其他团队成员也有帮助
  • 业务分析师可以使用类图从业务角度对系统进行建模

类图的组成

  • 一组类的集合
  • 类的关系

什么是类

对系统中具有相似角色的一组对象的描述,包括:

  • 结构特点(属性)定义类的对象属性“知道什么”
    1. 表示类的对象的状态
    2. 类的结构特征还是静态特征的描述
如对于人这个类,他的状态有睡着和醒着,描述有姓名、年龄等等,这些都是人这个类的属性。
  • 行为特征(操作)定义类的对象“能做什么”
    1. 定义对象可以交互的方式
    2. 操作是对类的行为或动态特征的描述
同样是人这个类,他可以学习、可以吃、可以睡。这些就是其方法/操作。

类符号

类符号,由三部分构造,对应着类的组成

  • 类名
    • 类的名称出现在第一个分区中。
  • 类属性
    • 属性显示在第二个分区中。
    • 属性的可见性在最开头
    • 然后是属性的名字
    • 冒号后面是属性的数据类型
  • 类操作
    • 操作显示在第三个分区中。它们是类提供的服务。
    • 方法签名的开头也是可见性
    • 方法名称显示在可见性之后
    • 然后括号里面的是方法的参数
    • 方法的返回类型显示在方法签名末尾的冒号之后。
      在这里插入图片描述
本来想尝试画类图的,但是在选择绘图人家这一步上太纠结了。不过上面这个在以前startUML画的。

类关系

一个类可能与其他类有一个或多个关系。

UML类图中的五种关系的耦合强弱比较:依赖<关联<实现<继承<聚合<组合

依赖(Dependence)

依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。

在java中差不多就相当于你使用了这个类就有依赖关系了,无论是作为方法参数返回值,或者作为属性等等,当然作为属性有着更强耦合,画图应该表现为聚合了。

如果学过spring的话,这部分应该比较好理解,一个bean依赖于另一个bean的依赖和这个是类似的。依赖注入也就是构建类的依赖关系。

在dependence类中创建一个MyArrayList对象
在这里插入图片描述

idea查看依赖

在这里插入图片描述

类图显示
在这里插入图片描述

关联关系(association)

  • 关联表示一系列链接。二元关联(具有两端)通常表示为一条线。关联可以链接任意数量的类。具有三个链接的关联称为三元关联。可以命名关联,并且可以使用角色名称、所有权指示器、多重性、可见性和其他属性来装饰关联的末端。
  • 有四种不同类型的关联:双向、单向、聚合(包括组合聚合)和自反。双向和单向关联是最常见的关联。
    请添加图片描述

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

继承/泛化

  • 泛化关系其实就是继承关系:指的是一个类(称为子类、子接口)继承(extends)另外的一个类(称为父类、父接口)的功能,并可以增加自己额外的一些功能,继承是类与类或者接口与接口之间最常见的关系;
  • 在Java中此类关系通过关键字 extends明确标识。

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

idea查看继承

我们让其继承一下ArrayList
在这里插入图片描述
快捷键Ctrl+h打开继承表
在这里插入图片描述
右键点击显示图,可以看见完整的继承关系
在这里插入图片描述

实现(realization)

我们在上图中发现一种和依赖的很像的箭头,但是是空心的三角形,那是实现的画法。

  • 实现关系:指的是一个class类实现 interface接口(可以实现多个接口)的功能;实现是类与接口之间最常见的关系;
  • 在Java中此关系通过关键字implements明确标识。

聚合

  • 聚合是“具有”关联关系的变体;
  • 聚合比关联更具体。它是一个代表部分整体或部分关系的关联。
  • 如图所示,教授“有”一门课要教。作为一种关联类型,聚合可以命名,并具有与关联相同的装饰。
  • 但是,聚合可能涉及两个以上的类;它必须是二进制关联。此外,在实现过程中聚合和关联之间几乎没有区别,并且图表可能会完全跳过聚合关系。
    在这里插入图片描述
    当类是其他类的集合或容器,但包含的类对容器没有很强的生命周期依赖性时,可能会发生聚合。销毁容器时,容器的内容仍然存在。

在 UML 中,它以图形方式表示为包含类上的空心菱形,并用一条线将其连接到包含的类。聚合在语义上是一个扩展对象,在许多操作中被视为一个单元,尽管它在物理上是由几个较小的对象组成的。
在这里插入图片描述

组成

组合关系的 UML 表示形式将组合显示为将包含类连接到包含类的线的包含类端的填充菱形形状。
在这里插入图片描述

组合和聚合之间的差异

组成关系

  1. 当试图表示现实世界的整体关系时,例如发动机是汽车的一部分。
  2. 当容器被销毁时,内容物也会被销毁,例如大学及其部门。
    聚合关系
  3. 当表示软件或数据库关系时,例如汽车模型引擎 ENG01 是汽车模型 CM01 的一部分,因为引擎 ENG01 也可能是不同汽车模型的一部分。[9]
    2.容器被销毁时,内容物通常不会被销毁,例如教授有学生;当教授离开大学时,学生不会与他们一起离开。
    因此,聚合关系通常是“目录”包含,以区别于组合的“物理”包含。

类图详解

idea查看类图

选择类或者包右键点击,选择图标然后选择显示图
在这里插入图片描述
左上角可以勾选属性和方法。这样一个类图就出来了。
在这里插入图片描述

可见性

符号含义
+表示公共属性或操作
-表示私有属性或操作
#表示受保护的属性或操作
~表示包属性或操作
存取权公共(+)私人(-)保护(#)包(~)
属于同一类的成员是的是的是的是的
派生类的成员是的没有是的是的
任何其他类别的成员是的没有没有在同一包装内

idea更多类图操作

内部类idea中内部类下图用这个表示
在这里插入图片描x述

放大镜
idea按下alt可以开启放大镜
在这里插入图片描述
刷新数据
如果修改过代码可以在这里刷新
在这里插入图片描述
自定义线
如果需要自己画可以选择这个,然后就可以自己进行连线了。
在这里插入图片描述
更多
在图中右键类就可以显示更多的操作了
在这里插入图片描述

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

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

相关文章

无感平滑迁移:海量高并发数据库如何进行国产化改造?

首先&#xff0c;讲一下数据库国产化的大背景。 一、数据库国产化的背景 国家战略方面的&#xff0c;随着外部形势的日益复杂&#xff0c;核心技术急需实现自主可控、安全可靠、高效开放&#xff1b;另一个要求是业务方面的&#xff0c;当业务高速发展后各种问题会接踵而至&a…

Go | 一分钟掌握Go | 4 - 数组

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 说明 特意省去了很多基础章节&#xff0c;比如常量、变量、条件语句、判断语…

GPT应用-使用中文操作数据库

GPT应用-使用中文操作数据库 本次尝试使用langchain来操作数据库&#xff1b; 环境配置 下面是数据库相关的表&#xff0c;使用Mysql5.7 数据库,数据库名students 下面是相关表的介绍 学生表&#xff0c;有名字、分数、和老师的备注 学生父母表&#xff0c;其中有学生的名…

053:cesium显示网格切片标识,展示X、Y、Level 坐标

第053个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载瓦片网格切分标识地图。,它在切片方案中的每个渲染图块周围绘制一个框,并在其中绘制一个标签,指示图块的 X、Y、Level 坐标。 这主要用于调试地形和图像渲染问题。 直接复制下面的 vue+cesium源代码,操…

【Buildroot】基础知识:目录、根文件系统目录覆盖、编译性能分析(编译时间、目标尺寸、包依赖图)

文章目录 一、Buildroot目录介绍二、Finalizing target2.1 fs overlay2.2 post build2.3 post image 三、编译性能3.1 编译耗时3.2 编译依赖关系3.3 编译结果尺寸分析3.4 其他文件 buildroot官方教程 buildroot使用介绍 Buildroot官网上可以下载发布版 国内的SOC厂商Rockchip就…

第二届SWCTF部分WP

1、misc &#xff08;1&#xff09;Misc1 下载附件&#xff0c;压缩包里面有两张jpg图片 解压后习惯性的放进kali里面分析一下&#xff0c;没有隐藏文件 放到Stegsolve里分析&#xff0c;因为是两张一样的图片&#xff0c;combiner也没啥发现 分别对两张图片单独分析也没有发…

网卡,dma,内存关系

本篇主要讲网卡的工作原理 最近在做一个网卡仿真程序。主要目的是用程序代替网卡去向内存中填充报文。 网卡与内存的交互方式 1. rx阶段 网卡通过DMA向内存中发送数据包。 在内存中主要有三个数据结构 ① DMA环(rx_ring), 其中存储了DMA描述符, DMA描述符指向了实际物理地址…

【Python | 基础语法篇】01、字面量、注释、变量、数据类型及转换

目录 一、字面量 1.1 什么是字面量 1.2 常用的值类型 1.3 字符串 1.4 如何在代码中写它们 1.5 总结 二、注释 2.1 注释的作用 2.2 注释的分类 2.3 注释实战 2.4 总结 2.5 思考 三、变量 3.1 什么是变量 3.2 案例——模拟钱包 3.3 变量的特征 3.4 思考 3.5 …

一篇文章看懂MySQL的多表连接(包含左/右/全外连接)

MySQL的多表查询 这是第二次学习多表查询&#xff0c;关于左右连接还是不是很熟悉&#xff0c;因此重新看一下。小目标&#xff1a;一篇文章看懂多表查询&#xff01;&#xff01; 这篇博客是跟着宋红康老师学习的&#xff0c;点击此处查看视频&#xff0c;关于数据库我放在了…

主动式电容笔是什么?苹果平替电容笔性价比高的推荐

苹果Pencil在市场上有需求吗&#xff1f;苹果的原装电容笔&#xff0c;虽然功能强大&#xff0c;但价格却非常的昂贵。当然&#xff0c;你也可以用这个苹果Pencil&#xff0c;不过&#xff0c;如果你不想花大价钱买它&#xff0c;就可以选一支平替的电容笔。就当前的科技水平而…

黑客利用WordPress 插件暗中建立后门网站

东方联盟网络安全组织在上周发布的一份报告中透露&#xff0c;有人观察到威胁行为者利用一个合法但过时的 WordPress 插件暗中建立后门网站&#xff0c;作为正在进行的活动的一部分。 有问题的插件是 Eval PHP&#xff0c;由名为 flashpixx 的开发人员发布。它允许用户插入 PH…

从需求分析到上线发布,一步步带你开发收废品小程序

在如今的环保和可持续性的大趋势下&#xff0c;废品回收已经成为了人们日常生活中不可或缺的一部分。收废品小程序的开发可以帮助人们更方便地找到回收废品的地点&#xff0c;并有效减少废品对环境造成的污染。因此&#xff0c;我们的收废品小程序需要满足以下需求&#xff1a;…

Google Play编写长描述的最佳实践

在我们为应用编写详细说明时&#xff0c;要遵循以下建议&#xff1a; 我们作为应用营销人员&#xff0c;要了解受众群体的需求和顾虑&#xff0c;如果不知道用户关心什么&#xff0c;那么我们可以查看关键词的搜索量、每个关键词的 Google Play 安装报告、当前关键字排名等等。…

数据湖Iceberg-Hive集成Iceberg(3)

文章目录 Hive集成Iceberg环境准备Hive与Iceberg的版本对应关系如下上传jar包&#xff0c;拷贝到Hive的auxlib目录中修改hive-site.xml&#xff0c;添加配置项启动 HMS 服务启动 Hadoop 创建和管理 Catalog默认使用 HiveCatalog指定 Catalog 类型使用 HiveCatalog使用 HadoopCa…

HTML+CSS+JS 学习笔记(三)———Javascript(下)

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;前端 &#x1f331;往期回顾&#xff1a;HTMLCSSJS 学习笔记&#xff08;三&#xff09;———Javascript(上) &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 JavaScrip…

【ChatGPT】如何让 ChatGPT 不再频繁报错,获取更加稳定的体验?

文章目录 一、问题描述二、方案1&#xff1a;使用 OpenAI API Key 来访问 ChatGPT三、方案2&#xff1a;安装 Chrome 插件3.1 介绍3.2 安装步骤3.2.1 插件 & 脚本安装3.2.2 解读功能 一、问题描述 最近一段时间&#xff0c;相信大家都发现了 ChatGPT 一个问题&#xff0c;…

阿里二面:Spring用到了哪些设计模式?

代理模式 所谓代理&#xff0c;是指它与被代理对象实现了相同的接口&#xff0c;客户端必须通过代理才能与被代理的目标类进行交互&#xff0c;而代理一般在交互的过程中&#xff08;交互前后&#xff09;&#xff0c;进行某些特定的处理&#xff0c;比如在调用这个方法前做前…

计算机网络|第二章:应用层

分层体系结构回顾 在本章中&#xff0c;我们学习有关网络应用的原理和实现方面的知识。 我们从定义关键的应用层概念开始&#xff0c;其中包括应用程序所需要的网络服务、客户和服务器、进程和运输层接口。详细考察几种网络应用程序&#xff0c;包括Web、电子邮件、DNS、对等文…

工业一体机在CNC机台起到什么作用?

随着工业自动化的不断发展&#xff0c;CNC机床已经成为现代制造业的重要设备之一。而工业一体机在CNC机台则是CNC机床的一种新型形态&#xff0c;其具有全封闭式设计、高精度、高效率等特点&#xff0c;广泛应用于各种制造行业。 全封闭工业一体机 一、工业一体机的功能&#x…

部门来了个软件测试工程师,听说是00后,上来一顿操作给我看呆了...

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍!给公司省了…