UML 类图的画法

1.类图的画法

整体是个矩形,第一层类名,第二层属性,第三层方法。

  • +  :public
  • -   :  private
  • #  :  protected
  • 空格: 默认的default

 对应的类写法。

public class Student {public String name;public Integer age;protected Integer cardId;Integer mark;public void setName(String name) {this.name = name;}public String getName() {return name;}
}

抽象类

对比类,就是第1层类名第3层 方法名斜体表示。

 对应类。

接口

顶层多了interface字段,其余好像没啥区别了。

 包

里面就是对应包的名字。

对应java写法。

package com.zgxt.demo.domain;public class Student {}

 2.类图的关系

如果说,类图为了表现java中的类,那么类图的关系就代表java中中类、接口之间的关系。

 泛化关系

泛化就是Java中的继承

 表示符号,就是一个横线 + 空心三角

 对应的类关系图。

 

 实现关系

实现就是java中的实现

 表示方法,一条虚线 + 空心三角

 依赖关系

如果一个类失去一个类代码无法编译,那么说这个类依赖于这个类。

具体表现为:成员变量、局部变量、方法形参,方法返回值

 表示方法全虚线箭头

 对应的类关系。

// 小孩
class Child{private Hand hand; // 依赖关系:成员变量也成为关联public void riding(Foot foot){ // 方法形参Bike bike = new Bike(hand,foot); // 局部变量}
}

关联关系

2个类依赖关系且是依赖,并且是依赖中的成员变量,则存在关联关系。

而且再细分,感觉跟MySQL中的外键约束,表设计有异曲同工之妙。

MySQL FOREIGN KEY 外键约束 (w3schools.cn)

 关联对应表示图。

单向关联

 双向关联

 聚合

是在依赖的及基础上(成员变量),但是和关联表现的层级不同,关联表示同层级之间,而聚合表示整体和部分层级之间。

另外: 整体和部分之间可以相互独立存在。

如: 一个公司由老板和员工组成。那么公司和员工关系就是聚合。而老板和员工的关系就是关联。

 表示图形:空心菱形 + 箭头。

代码:一个Computer类需要Boss类和Employee类,聚合。

而Employee类中的businessTrip[出差]() 方法需要Boss的同意,这就是关联。

// 聚合和关联
class Computer{private Boss boss; // 聚合private Employee employee; // 聚合
}class Boss{}class Employee{private Boss boss; // 关联public boolean businessTrip(){// boss同意 return true// boss不同意 return false}
}

对应的图形 

组合

区别与聚合,组合的整体和部分之间不能独立存在。

如: 人由手、脚、头等身体部位组成,但是手离开人和人离开手都不能做相应的方法。

表示图形: 实心菱形 + 实线箭头。

这个我就不画了。

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

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

相关文章

【hello C++】特殊类设计

目录 一、设计一个类,不能被拷贝 二、设计一个类,只能在堆上创建对象 三、设计一个类,只能在栈上创建对象 四、请设计一个类,不能被继承 五、请设计一个类,只能创建一个对象(单例模式) C🌷 一、设计一个类&…

Sentinel使用实例

不说了,直接上官方文档 https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md Sentinel Example 项目说明 本项目演示如何使用 Sentinel starter 完成 Spring Clo…

【金融量化】对企业进行估值的方法有哪些?

估值的方法有哪些? 如何对企业进行估值?有2个方法估算。 1 绝对估值法 它是一种定价模型,用于计算企业的内在价值。 比如说你可以根据公司近N年的现金流情况。借此去预测未来N年的现金流情况。所有的现金流数据都可以在年报上查询到。最后…

ios 知识

IOS 类文件.h和.m中interface的区别 大家都知道我们在创建类文件时会发现&#xff1a; #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend和 #import "ViewController.h"interface ViewController ()end那么他们之间有何区别呢&#x…

力扣:62. 不同路径(Python3)

题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

WebRTC音视频通话-WebRTC本地视频通话使用ossrs服务搭建

iOS开发-ossrs服务WebRTC本地视频通话服务搭建 之前开发中使用到了ossrs&#xff0c;这里记录一下ossrs支持的WebRTC本地服务搭建。 一、ossrs是什么&#xff1f; ossrs是什么呢&#xff1f; SRS(Simple Realtime Server)是一个简单高效的实时视频服务器&#xff0c;支持RTM…

STM32CubeIDE的安装和黑色主题及自动补全代码

STM32CubeIDE之前用过一点时间&#xff0c;但后来因为不习惯放弃了最近在新电脑上又用起来了&#xff0c;感觉相对之前好了很多&#xff0c;其实如果在工作中基本使用的是STM32,用意法的生态软件也挺好的&#xff0c;意法最近在这块也在大力发展&#xff0c;STM32CubeIDE安装包…

【Linux】云服务器自动化部署VuePress博客(Jenkins)

前言 博主此前是将博客部署在 Github Pages&#xff08;基于 Github Action&#xff09;和 Vercel 上的&#xff0c;但是这两种部署方式对于国内用户很不友好&#xff0c;访问速度堪忧。因此将博客迁移到自己的云服务器上&#xff0c;并且基于 Jenkins&#xff08;一款开源持续…

浪涌保护器中SPD防雷模块的主要应用方案

浪涌保护器&#xff08;Surge Protective Device&#xff0c;SPD&#xff09;是一种用于限制瞬态过电压和导引泄放电涌电流的非线性防护器件&#xff0c;用以保护耐压水平低的电器或电子系统免遭雷击及雷击电磁脉冲或操作过电压的损害。SPD可以将过电压泄放到地线或限制过电压到…

多元最短路(Floyd)

是一个基于动态规划的全源最短路算法。它可以高效地求出图上任意两点之间的最短路 时间复杂度 O(n^3) 状态转移方程 f[i][j]min(f[i][j],f[i][k]f[k][j]) 核心代码 void floyd(){for(int k1;k<n;k)for(int i1;i<n;i)for(int j1;j<n;j)s[i][j]min(s[i][j],s[i][k…

Vue前端 更具router.js 中的meta的roles实现路由卫士,实现权限判断。

参考了之篇文章 1、我在登陆时获取到登录用户的角色名roles&#xff0c;并存入sessionStorage中&#xff0c;具体是在login页面实现&#xff0c;还是在menu页面实现都可以。在menu页面实现&#xff0c;可以显得登陆快一些。 2、编写router.js&#xff0c;注意&#xff0c;一个…

Spring 事务详解

目录 一、概述二、事务的特性&#xff08;ACID&#xff09;三、Spring 的事务管理3.1 编程式事务管理3.2 编程式事务管理 四、Spring 事务管理接口及其定义的属性4.1 PlatformTransactionManager:事务管理接口4.2 TransactionDefinition:事务属性4.3 TransactionStatus:事务状态…

Stable Diffusion+Temporal-kit 半虚半实应用

1.先下载temporal-kit,重启webui 2.下载好ffmpeg,配置好环境,下载Ebsynth 3.准备好你需要的视频,拖到预处理视频位置 4.填写参数,点解保存设置,然后并点击生成,会生成到目标文件夹的input位置 5.然后拉出input文件夹里面你想切换成处理的帧图片,然后填写prompt查看效…

中国省级、城市-数字经济创新创业、分项指数(2010-2020年)

一、数据介绍 数据名称&#xff1a;中国省级、城市-数字经济创新创业、分项指数 数据年份&#xff1a;2010-2020年 数据范围&#xff1a;31省、336个城市 数据来源&#xff1a;北大企业大数据研究中心 二、参考文献 参考文献&#xff1a; 戴若尘,王艾昭,陈斌开.中国数字…

Win10使用Guest和空密码访问共享的完整步骤

目录 前言 启动Guest 给予Guest网络权限 允许空密码登陆 启用不安全的来并登陆 总结 前言 我们经常需要使用空密码和guest账户访问Windows共享&#xff0c;因为某些设备不支持输入密码等&#xff0c;那么该如何设置呢&#xff0c;因为步骤比较固定而且繁琐&#xff0c;于…

Python小白入门:文件、异常处理和json格式存储数据

这里写自定义目录标题 所用资料 一、从文件中读取数据1.1 读取整个文件1.2 文件路径1.3 逐行读取1.4 创建一个包含文件各行内容的列表1.5 使用文件的内容1.6 包含一百万位的大型文件1.7 圆周率值中包含你的生日吗练习题 二、写入文件2.1 写入空文件2.2 写入多行2.3 附加到文件练…

Maven 生成(打包)带有依赖的可以直接执行的一个 jar 包

在pom中增加如下内容 <build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><archive><manifest><mainClass>com.example.xxx.YourClass</mainClass></manifest></…

酷开系统丨酷开会员,带你解锁K歌新姿势

不管时代怎么变化&#xff0c;K歌这项娱乐活动始终深受人们的喜爱。不知道你有没有遇到过这种情况&#xff1a;周末在家宅了一天&#xff0c;突然心血来潮想去KTV唱歌&#xff0c;但奈何外面过于闷热实在不想出门&#xff0c;可在手机上唱歌又不过瘾&#xff0c;让人很是苦恼……

tomcat入门介绍

tomcat官网下载8.5.9版本&#xff0c;官网地址&#xff1a;https://tomcat.apache.org/download-80.cgi 下载完成后直接解压即可 tomcat目录 解压后&#xff0c;可以看到tomcat有以下目录 /bin - 启动、关闭和其他脚本 *.sh后缀是linux下的脚本文件*.bat后缀windows系统下的…

绘画AI工具的介绍与使用----强到离谱-2023年必备免费好用的AI工具

一.绘画AI www.seaart.ai 这个是网站地址&#xff0c;进去之后直接注册登录即可&#xff0c;几乎都是免费使用&#xff0c;不用担心是否要VIP 点击网站进入之后登录&#xff0c;然后进入主页面&#xff0c;一张图片给你介绍清楚主页 我会根据菜单栏来给大家演示&#xff0c;首…