设计模式前站——UML类图
符号表示访问权限:
+表示public
-表示private
#表示protected
~表示default,也就是包权限
_下划线表示static
斜体表示抽象
类之间关系:类与类一共有如下几种关系:继承(Generalization)、实现(Realization)、依赖(Dependence)、关联(Association)、聚合(Aggregation)、组合(Composition)。
继承:三角形+实线【三角是父类】
实现:三角形+虚线【三角是接口】
依赖:箭头+虚线【箭头是局部变量,或方法参数,对静态方法调用】
关联:箭头+实线 【箭头一方是成员变量】
聚合:空心菱形+实线箭头【菱形一方为整体】
组合:实心菱形+实线箭头【菱形一方为整体】
1、继承关系
继承关系用三角形+实线表示,方向从子类指向父类。
2、实现关系
实现是类与接口的一种关系,类实现接口的所有特征与行为。接口有标识<<interface>>
实现关系用三角形+虚线表示,方向从类指向接口。
3、依赖关系
依赖关系是一种弱的使用的关系, 即一个类的实现需要另一个类的协助。
依赖关系用箭头+虚线表示,方向从依赖类指向被依赖类。
代码体现在局部变量、方法的参数或者对静态方法的调用
public class Animal { public int lives; public void breeding() { if (lives > 0) { System.out.println("我要繁殖啦~"); } } //新方法,新陈代谢 public void metabolism(Oxygen o, Water w) { System.out.println("新陈代谢需要" + o.toString() + "和" + w.toString()); } }
4、关联关系
关联关系比较常见,是一种强的、稳定的、持久的关系, 它使一个类知道另一个类的属性和方法。
关联关系用箭头+实线表示。方向从关联类指向被关联类。
代码体现在成员变量(气候是企鹅类的成员变量)中
5、聚合关系
聚合关系表示部分与整体的一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
聚合关系用空心菱形+实线箭头表示,菱形顶端为整体。
代码体现在成员变量中,可以通过构造方法传递依赖,也可通过setter方法传递依赖。
public class WideGooseAggregate {
private WildGoose[] arrayWideGoose = new WildGoose[3]; public WideGooseAggregate(){ arrayWideGoose[0] = new WildGoose(); arrayWideGoose[1] = new WildGoose(); arrayWideGoose[2] = new WildGoose(); } public void vFly() { System.out.println("V型飞行"); for (WildGoose wGoose : arrayWideGoose) { wGoose.flyaway(); } } public void hFly() { System.out.println("一型飞行"); for (WildGoose wGoose : arrayWideGoose) { wGoose.flyaway(); } } }
6、组合关系
组合关系表示部分与整体的一种强的拥有关系,体现为严格的部分和整体关系,部分和整体的生命周期一样。
组合关系用实心菱形+实线箭头表示,菱形顶端为整体。
代码体现在成员变量中
原文地址:https://www.cnblogs.com/erlongxizhu-03/p/12584138.html
- 事件流处理框架NEsper for .NET
- Quartz.net官方开发指南 第五课: SimpleTrigger
- SQL Server Performance Dashboard Reports
- 添加WordPress评论输入邮箱实时显示Gravatar头像功能
- Quartz.net官方开发指南 第六课 : CronTrigger
- WordPress 中禁止某个用户在线编辑主题
- Quartz.net官方开发指南 第七课 : TriggerListeners和JobListeners
- Quartz.net官方开发指南 第八课:SchedulerListeners
- 为WordPress 后台编辑器文本模式(HTML模式)添加按钮
- 360安全扫描之WordPress 页面异常导致本地路径泄漏 的漏洞修补
- Quartz.net官方开发指南 第九课: JobStore
- 数据中心运营中出现的错误
- Quartz.net官方开发指南 第十课: 配置、资源使用以及SchedulerFactory
- WCF服务上应用protobuf
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 六、乘胜追击,将剩下的Git知识点搞定
- 树莓派基础实验39:解析无线电接收机PWM、SBUS信号
- nodejs源码分析第十九章 -- udp模块
- Spark Extracting,transforming,selecting features
- 逆向so文件调试工具ida基础知识点
- 二叉搜索树中的众数
- 了解递归:普通函数递归和非递归栈式实现之间的区别
- 字节真题 ZJ26-异或:使用字典树代替暴力破解降低时间复杂度
- curl命令半天没响应,有可能返回内容导致session挂了
- 查看JVM参数信息 查看G1堆的使用情况
- LC1263-AI寻路优化: 距离优先bfs -> heuristic + A* -> tarjan + A*
- 从Zookeeper 到 Elastic Job 的原理解析和使用(一)
- 从Zookeeper 到 Elastic Job 的Simple Job使用(二)
- resteasy 接收post请求参数——json and 表单
- 合理配置Mysql缓存,提高缓存命中率