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

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.lryc.cn/news/130844.html

相关文章:

  • SAP ME2L/ME2M/ME3M报表增强添加字段(包含:LMEREPI02、SE18:ES_BADI_ME_REPORTING)
  • 探讨uniapp的数据缓存问题
  • 服务的拆分
  • Uniapp Syntax Error: Error: Unbalanced delimiter found in string
  • 视频集中存储EasyCVR视频汇聚平台定制项目增加AI智能算法
  • 确保Django项目的稳定运行和持续改进
  • HAProxy负载均衡 代理
  • 前端面试的游览器部分(8)每天10个小知识点
  • 【【verilog典型电路设计之流水线结构】】
  • 大数据课程K2——Spark的RDD弹性分布式数据集
  • Seaborn数据可视化(一)
  • Sentinel规则持久化
  • Transformer 相关模型的参数量计算
  • 企业信息化过程----应用管理平台的构建过程
  • 揭秘程序员的鄙视链,你在哪一层?看完我想哭
  • 在docker下进行mysql的主从复制
  • 【机器学习】处理不平衡的数据集
  • JVM前世今生之JVM内存模型
  • redis事务对比Lua脚本区别是什么
  • Java“牵手”根据店铺ID获取1688店铺所有商品数据方法,1688API实现批量店铺商品数据抓取示例
  • linux-shell脚本收集
  • 使用 MBean 和 日志查看 Tomcat 线程池核心属性数据
  • Visual Studio 2019源码编译cpu版本onnxruntime
  • Go和Java实现模板模式
  • angular:quill align的坑
  • 设计模式篇---抽象工厂(包含优化)
  • Azure创建可用性集
  • SpringBoot中优雅的实现隐私数据脱敏(提供Gitee源码)
  • Elasticsearch集群shard过多后导致的性能问题分析
  • Unity框架学习--5 事件中心管理器