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

news/2024/11/17 0:39:27/

文章目录

  • 什么是类图
    • 类图的用途
    • 类图的组成
    • 什么是类
    • 类符号
    • 类关系
      • 依赖(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.ppmy.cn/news/53216.html

相关文章

“量子+生成式AI”!IBM联合生物制药公司Moderna进行疫苗研究

​ &#xff08;图片来源&#xff1a;网络&#xff09; 4月20日&#xff0c;以COVID-19疫苗而闻名的生物技术和制药公司Moderna Inc.表示&#xff0c;宣布正在与IBM公司合作&#xff0c;利用量子计算和生成式人AI探索推进研究mRNA技术的方法。 双方签署了一项协议&#xff0c;允…

Vue组件-非单文本组件

非单文本组件(用的少) 在vue中&#xff0c;组件是有两种编写格式的&#xff0c;第一种格式叫非单文本组件&#xff0c;第二种格式叫单文本组件 非单文本组件&#xff1a;一个文件中含有多个组件&#xff0c;也叫多文本组件&#xff0c;比如demo.html里面包含js,css… 单文本…

blast的-max_target_seqs?

Shah, N., Nute, M.G., Warnow, T., and Pop, M. (2018). Misunderstood parameter of NCBI BLAST impacts the correctness of bioinformatics workflows. Bioinformatics. 杂志Bioinformatics以letter to the editor的形式刊发了来自美国马里兰大学计算机系的Nidhi Shah等人…

Windows子系统保存位置更改释放C盘(最简单)

Windows子系统保存位置更改 目录 使用场景解决思路操作流程关闭子系统找到文件存放地址新的路径文件迁移创建链接 使用场景 使用WSL(Linux子系统)做深度学习开发&#xff0c;在微软的应用商店安装的Ubuntu22.04会将系统默认安装在C盘&#xff0c;随着使用时间测增长&#xff…

springmvc jpa 多数据源

本次使用Mysql 和 sqlServer 一 POM 版本大家自己换一下 <!-- JPA --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-commons</artifactId><version>1.13.13.RELEASE</version></d…

美颜SDK的性能测试和优化方案

美颜SDK作为美颜相机、短视频等应用的核心技术之一&#xff0c;对于提升用户体验和增加应用商业价值起到了至关重要的作用。然而&#xff0c;如何对美颜SDK进行性能测试和优化&#xff0c;成为了广大应用开发者们所面临的一大难题。很多开发者也曾经向小编提起过应该如何着手优…

干货:行政与人事管理的区别在哪里?

行政管理和人事管理是现代组织管理中非常重要的两个部分&#xff0c;两者共同构成了组织运作的基本框架。本文将对行政管理和人事管理进行解析&#xff0c;并探讨其在组织中扮演的角色以及如何有效地进行管理。 一、行政管理 行政管理是指对组织的资源进行规划、组织、领导、…

C语言从入门到精通第12天(函数的定义)

函数的定义 函数的概念函数的定义函数的参数函数的返回值 函数的概念 在程序设计中&#xff0c;为了实现某个功能需要编写多行代码&#xff0c;我们每次在使用时都将原来的代码重复编码&#xff0c;这样就非常的麻烦&#xff0c;而且编程的效率也不高。为了解决这一问题&#…