Java学习 --- 设计模式中的UML类图
目录
一、什么是UML
二、UML图分类
三、UML类图
3.1、依赖关系
3.2、泛化关系
3.3、实现关系
3.4、关联关系
3.5、聚合关系
3.6、组合关系
一、什么是UML
1、UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的结果。
2、UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和它们之间的关系,如类、接口、实现、泛化、依赖、组合、聚合等。
二、UML图分类
1、用例图
2、静态结构图:类图、对象图、包图、组件图、部署图。
3、动态行为图:交互图(时序图与协作图)、状态图、活动图。
类图:描述类与类之间的关系,是UML图的核心。
三、UML类图
1、用于描述类(对象)本身的组成和类(对象)之间的各种静态关系。
2、类之间的关系:依赖、泛化(继承)、实现、关联、聚合、组合。
类图示例代码:
public class Person {private Integer id;private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
对应的UML图:
3.1、依赖关系
只要在类中用到对方,它们之间就会存在依赖关系。
示例代码:
public class PersonServiceBean {private PersonDao personDao;public void save(Person person) {}public IDCard getIDCard(Integer personid){return null;}public void modify(){Department department = new Department();}
}
public class IDCard {
}
public class Department {
}
public class Person {
}
public class PersonDao {
}
对应的UML类图:
构成依赖关系总结:
1、类中用到对方。2、如果是类的成员属性。3、如果是方法的返回类型。 4、是方法接收的参数类型。 5、方法中使用到。
3.2、泛化关系
泛化关系就是继承关系,是依赖关系的特例。
示例代码:
public abstract class DaoSupport {public void save(Object entity){}public void delete(Object id){}
}
public class PersonServiceBean extends DaoSupport {
}
UML类图:
3.3、实现关系
实现关系就是一个接口被一个类实现了,是依赖关系的特例。
示例代码:
public interface PersonService {public void delete(Integer id);
}
public class PersonServiceBean implements PersonService {@Overridepublic void delete(Integer id) {}
}
UML类图:
3.4、关联关系
1、关联关系等同于类与类之间的联系,是依赖关系的特例。
2、关联具有导航性:就是双向关系和单向关系。
3、关联具有多重性
单向一对一关系:
代码示例:
public class IDCard {
}
public class Person {private IDCard idCard;
}
UML类图:
双向一对一关系:
public class IDCard {private Person person;
}
public class Person {private IDCard idCard;
}
3.5、聚合关系
聚合关系表示整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,同样具有导航性和多重性。
public class Computer {private Mouse mouse;private Moniter moniter;public void setMouse(Mouse mouse) {this.mouse = mouse;}public void setMoniter(Moniter moniter) {this.moniter = moniter;}
}
public class Moniter {
}
public class Mouse {
}
3.6、组合关系
整体与部分的关系,但是整体与部分不可以分开。
public class Computer {private Mouse mouse = new Mouse();private Moniter moniter = new Moniter();public void setMouse(Mouse mouse) {this.mouse = mouse;}public void setMoniter(Moniter moniter) {this.moniter = moniter;}
}
Java学习 --- 设计模式中的UML类图相关推荐
- android 继承类图,Android Studio中绘制UML类图介绍
Android Studio中绘制UML类图介绍 Android Studio中绘制UML类图介绍 动机 最近开始阅读项目源码,从其中一个模块开始看,奈何大项目中的一个模块,对于萌新而言,也太过于复杂 ...
- 一文掌握设计模式(定义+UML类图+应用)
一.引子 从学编程一开始就被告知,要想做一名优秀的程序员两大必要技能:1.源码阅读(JDK.C等底层语言封装) 2.设计模式(使用某种语言优雅的落地典型场景功能).一般随着工作年限的增长,被迫对底层语 ...
- Java:封装的概念,UML类图,构造方法,this关键字,static关键字,方法重载,包package
oop三大特性:封装,继承,多态 oop一般指面向对象程序设计(一种计算机编程架构) 一.封装的概念: 将东西包在一起,然后以新的完整形式呈现出来 ...
- 【大话设计模式-2】UML 类图的绘制(源码案例分析)
文章目录 1 UML 基本介绍 2 UML 图 3 UML 类图 4 类图-依赖关系(Dependence) 5 类图-泛化关系(generalization) 6 类图-实现关系(Implement ...
- Solidity - 使用Remix 插件 SOLIDITY 2 UML 生成UML类图 及 在以太坊浏览器中查看UML类图
今天想把已经写好的合约使用UML梳理一下,因为使用到了接囗.库.抽象合约及合约,所以想使用UML梳理一下更清晰.本来想用Viso,但是在其它语言里没有库(library)的概念,所以查了一下如何表示, ...
- Java设计模式之观察者模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- 怎么帮java转换成类图_有把java代码直接转成uml类图的工具吗 – 手机爱问
2012-05-31 如何将JAVA程序转化成C程序? 给你代码: typedef unsigned char byte; //这是个转换的基础数组,使用查表的方法将十六进制字符转换成数值 stati ...
- 设计模式中的工厂类图
工厂模式(易混淆,好不容易用会magicdraw:)) 1.简单工厂方法 2.工厂方法 3.抽象工厂方法
- Java设计模式(二):UML 类图和概述
目录 一·UML类图 1.1 UML 基本介绍 1.2 UML 图 1.3 UML 类图 1.4 类图-依赖关系 ( Dependence) 1.5 类图-泛化关系(generalization) 1 ...
最新文章
- DELL服务器重做RAID
- NBA部署SAP HANA内存数据库
- C# 温故知新 基础篇(7) 接口思维导图
- 只要你懂为啥有人爱砍传奇,就能明白《逃离塔科夫》为何会成功
- 两种解决IE6不支持固定定位的方法
- ssh远程连接(ubuntu、windows)
- java 双声道音频_Android 播放音频如何实现双声道效果
- wsl 重启_WSL(Windows Subsystem for Linux) 安装教程
- 【渝粤教育】国家开放大学2019年春季 7407药物治疗学(本) 参考试题
- 燕姿几首歌的歌词-偶得
- 雷蛇键盘灯光配置文件_三模连接一步到位,游戏宅女必备的雷蛇电竞外设套装...
- 因果推断笔记—— 相关理论:Rubin Potential、Pearl、倾向性得分、与机器学习异同(二)
- 新浪新闻发布Z世代洞察报告:Z世代偏爱深入“吃瓜” 对元宇宙兴趣强烈
- Opencv获取电脑摄像头抓拍的信息,
- 笔记代码(各种算法实现)
- bitset(位图)原理与用法
- 删除 Windows 的默认打开方式
- [摘录]第二部分 战略决策(3)
- /travel/src/main/java/cn/itcast/travel/util/MailUtils.java:[1,1] 非法字符:
- MeterSphere使用分享 | 使用MeterSphere进行接口测试
热门文章
- 【每天更新】2022年最新WordPress主题下载,外贸独立站商城/企业网站/个人博客模板 2022-5-14(1/6)
- 解决JVM内存不足的问题
- 常见颜色(color)与RGB 的调色
- npm install的时候报错 npm err code 1
- 中国移动 3G 随e行,大唐 DT800H 在CentOS下的设置笔记
- 公有云与私有云对比分析报告
- mysql 游戏 知乎_入行游戏测试之Navicat For MySQL
- TypeError pybind11::init(): factory function returned nullptr
- 百亿蓝海蓄势待发,手术机器人国产替代浪潮下的黄金赛道(上)
- python弹钢琴_flash钢琴自动弹奏之Python实现