Java设计模式精讲之UML急速入门
简单记录 - 慕课网 - Java设计模式精讲 Debug方式+内存分析
文章目录
第2章 UML急速入门
主要讲解UML基础、UML类图、UML类关系、UML时序图、UML类关系记忆技巧等,让大家急速入门UML,从而为后面设计模式的学习做好准备。
- 2-1 本章导航
- 2-2 UML类图讲解
- 2-3 UML类图讲解-自上而下
- 2-4 UML类图讲解-对比讲解联想记忆
2-1、UML简单入门
UML类图及时序图入门
定义 特点 分类
类图 时序图 记忆技巧
UML角度 理解 设计模式
UML定义
UML定义
- 统一建模语言(英文:Unified Modeling Language,缩写UML)
- 非专利的第三代建模和规约语言
UML特点
UML特点
UML是一种开发的方法
用于说明、可视化、构建和编写一个正在开发的面向对象的、软件密集系统的制品的开发方法。
制品 软件开发过程中 产物 模型 各种流程图 源代码 测试用例 等等 可视化 描述
UML展现了一系列最佳工程实践
这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效 通过UML对系统更深理解
UML 2.2分类
UML2.2中一共定义了14种图示,分类如下:
- 结构式图形:强调的是系统式的建模
- 行为式图形:强调系统模型中触发的事件
- 交互式图形:属于行为式图形子集合,强调系统模型中资料流程。
结构式图形
- 静态图(类图、对象图、包图)
- 实现图(组件图、部署图)
- 剖面图
- 复合结构图
行为式图形
- 活动图
- 状态图
- 用例图
交互式图形
- 通信图
- 交互概述图(UML2.0)
- 时序图(UML2.0)
- 时间图(UML2.0)
UML类图
- Class Diagram:用于表示类、接口、实例等之间相互的静态关系
- 虽然名字叫类图,但类图中并不只是类 包括权限、属性、方法等等
理解泛化、实现
泛化关系 继承关系 记忆技巧
UML箭头方向:从子类指向父类
提示:可能会认为子类是以父类为基础的,箭头应从父类指向子类
从来没有这么想过
记忆技巧-箭头方向
- 定义子类时需要通过extends关键字指向父类
- 子类一定是知道父类定义的,但父类并不知道子类的定义
- 只有知道对方信息时才能指向对方
UML 所以箭头方法从子类指向父类
实线-继承 | 虚线-实现
实现关系
被一个类实现了 ,A类实现B接口 实现关系
三角空心虚线
实现关系、继承关系
实线-继承 | 虚线-实现
空心三角箭头:继承或实现
实线-继承 ,is a 关系,扩展目的,不虚,很结实的。
虚线-实现,虚线代表“虚”无实体。实现接口 实现接口方法
理解依赖、关联
实线 -关联 | 虚线-依赖
关联关系 实线
依赖关系
实线 -关联 | 虚线-依赖
依赖关系 虚线
虚线-依赖关系:临时用一下,若即若离,虚无缥缈,若有若无
调用的时候才会用一下 虚线 依赖关系
表示一种使用关系,一个类需要借助另一个类来实现功能
一般是一个类使用另一个类做为参数使用,或作为返回值 参数 返回值
关系关系 实线
- 实线-关联关系:关系稳定,实打实的关系,铁哥们。
- 表示一个类对象和另一个类对象有关联
- 通过是一个类中有另一个类对象做为属性 属性 一个成员变量
理解聚合、组合
空心菱形-聚合 | 实心菱形-组合
菱形就是一个盛东西的器皿(例如盘子)
聚合:代表空器皿里可以放很多相同的东西,聚在一起(箭头方向所指的类 个体
组合:代表满器皿里已经有实体结构的存在,生死与共 强关系
整体与部分 可以离聚合 不可以离组合
组合关系
鸟和翅膀 人和头 强关系 相同的生命周期 你死我也死
数字?
空心菱形 聚合关系 记忆技巧
整体和局部的关系,两者有着独立的生命周期,是has a的关系
弱关系
大雁群 has a 大雁
消极的词:弱 - 空 空心菱形
实心菱形 组合关系 记忆技巧
整体与局部的关系,和聚合的关系相比,关系更加强烈
两者有相同的生命周期,contains-a的关系 包含
强关系
积极的词:强 - 满 实心菱形
常见数字表达及含义
一个鸟 两个翅膀
UML时序图
生命线 上到下 时间的流逝
方法调用
消息
类图 时序图 用例图 重要
时序图 调用关系
2-2、UML类 图讲解
类的表示
类名 抽象类 斜体表示 接口 <>
属性 行为
public
+ private
- protected
#
什么都不加 or ~
是表示 default
+
max
-
min private
#
protected
横线 static 属性
横线 static 静态方法
斜体 抽象方法 有抽象方法 是抽象类 要斜体来表示一下咯所以上面那个图错了
是抽象类 有抽象方法
有抽象方法的是抽象类 抽象类要斜体来表示一下
记住这个类图
类图表示 要 准确 避免产生歧义
2-3、UML类图讲解 自上而下
大话设计模式的图 UML图
一起来学习吧
依赖关系
虚线箭头 箭头方向 指向被依赖的对象
- 表示一种使用关系,一个类需要借助另一个类来实现功能
- 一般是一个类使用另一个类做为参数使用,或作为返回值 参数 返回值
鸟是一种动物
父类 子类 鸟继承动物 箭头方向:子类指向父类
UML箭头方向:从子类指向父类
提示:可能会认为子类是以父类为基础的,箭头应从父类指向子类
从来没有这么想过
记忆技巧-箭头方向
- 定义子类时需要通过extends关键字指向父类
- 子类一定是知道父类定义的,但父类并不知道子类的定义
- 只有知道对方信息时才能指向对方
UML 所以箭头方法从子类指向父类
实线-继承 | 虚线-实现
空心三角箭头:继承或实现
实线-继承 ,is a 关系,扩展目的,不虚,很结实的。
虚线-实现,虚线代表“虚”无实体。实现接口 实现接口方法
关联关系
关联关系 实线
- 实线-关联关系:关系稳定,实打实的关系,铁哥们。
- 表示一个类对象和另一个类对象有关联
- 通过是一个类中有另一个类对象做为属性 属性 一个成员变量
有一个类对象的属性
聚合关系
空心菱形 聚合关系 记忆技巧
整体和局部的关系,两者有着独立的生命周期,是has a的关系
弱关系
大雁群 has a 大雁
消极的词:弱 - 空 空心菱形
整体 大雁群 局部、部分 大雁
空心菱形 菱形指向很多大雁也就是大雁群 箭头指向大雁
实现关系 空心三角虚线 表示实现关系
空心三角虚线 大雁实现了飞翔这个接口
棒棒糖表示法 接口表示 实现关系
2-4、UML类图讲解 - 对比讲解联想记忆
依赖关系 虚线箭头 参数、返回值 使用的时候才会关注
关联关系 实线箭头 实打实的关系 ,一般用了一个类对象作为另一个类的属性
聚合关系 空心菱形 菱形在整体 箭头在部分 聚在一起 独立的生命周期 弱关系
组合关系 实心菱形 强关系 人与头 人挂了 头也没生命力了
继承关系 三角空心实线 类和类之间的关系 继承 子类指向父类
实现关系 三角空心虚线 虚 实现 指向要被实现的接口
看图 项目代码 看看UML图 快速理解项目
总结
定义
特点
分类
类图
时序图
记忆技巧 理解 多用
Java设计模式精讲之UML急速入门的更多相关文章
- 【设计模式】Java设计模式精讲之原型模式
简单记录 - 慕课网 Java设计模式精讲 Debug方式+内存分析 & 设计模式之禅-秦小波 文章目录 1.原型模式的定义 原型-定义 原型-类型 2.原型模式的实现 原型模式的通用类图 原 ...
- 设计模式课程 设计模式精讲 2-3 UML类图讲解自上而下
1 内容简析(易错加粗) 2 uml类图展示 1 内容简析(易错加粗) 1.1 设计模式中的对象关系 依赖关系 虚线箭头 组合关系 实心菱形 聚合关系 空心菱形(想象成盘子,盛东西,盘子的多,另一方少 ...
- 设计模式课程 设计模式精讲 2-4 UML类图讲解 对比讲解 demo
1 主要内容 1.1 关联和依赖的对比 1.2 组合和聚合的对比 1.3 继承和实现的对比 1.4 各种关系代码实现demo 1 主要内容 1.1 关联和依赖的对比 关联是a类中存在b类对象,企鹅类中 ...
- 设计模式课程 设计模式精讲 2-2 UML类图讲解
1 类图讲解 1 类图讲解 + 公共方法 - private权限 # protected权限 包内和包外继承的子类都能引用 ~ default权限(包权限)只有包内能引用 下划线 静态 Stati ...
- java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱
java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱 redis数据库 Redis企业集群高级应用精品教程[图灵学院] Redis权威指南 利用redis + lua解决抢红包高并 ...
- 设计模式课程 设计模式精讲 18-2 迭代器模式coding
1 代码演练 1.1 代码演练1(迭代器模式演练) 1.2 代码使用场景 1 代码演练 1.1 代码演练1(迭代器模式演练) 需求: 课程管理:需要实现课程可进行增添,删除,并能够打印出课程列表. u ...
- 8千字干货教程|java反射精讲
java反射机制精讲 目录 1. 反射机制的概念 2. 反射的基础Class类 3. 反射的用法 4. 反射的应用示例 作者简介:全栈学习笔记,一个正在努力的人 微信公众号:公众号日更,精彩美文每天推 ...
- 设计模式课程 设计模式精讲 22-2 备忘录模式coding
1 代码演练 1.1 代码演练1 1 代码演练 1.1 代码演练1 需求: 网站笔记需要存储快照,能实现回退的功能. 注意: a 设计的时候,可以分为笔记类,笔记快照类和 笔记快照管理类 三个类. ...
- 设计模式课程 设计模式精讲 7-2 建造者模式Coding
1 代码演练 1.1 建造者模式演练 1.2 静态内部类演练建造者模式(链式调用) 1 代码演练 1.1 建造者模式演练 需求: 根据讲师提供的课程名称,课程ppt,课程视频,课程手记,课程问答 制作 ...
随机推荐
- Kubernetes实战指南(三十四): 高可用安装K8s集群1.20.x
@ 目录 1. 安装说明 2. 节点规划 3. 基本配置 4. 内核配置 5. 基本组件安装 6. 高可用组件安装 7. 集群初始化 8. 高可用Master 9. 添加Node节点 10. Cali ...
- 网络 IO 模型简单介绍
一.同步阻塞 IO(BIO) 当用户线程调用了 read 系统调用,内核(kernel)就开始了 IO 的第一个阶段:准备数据.很多时候,数据在一开始还没有到达(比如,还没有收到一个完整的Socket ...
- js下 Day16、正则案例
一.封装格式化日期 功能思路分析: \1. 第一个参数format表示指定的时间格式 \2. 第二个参数date为指定的时间(可以不传,默认当前时间) \3. 获取第二个参数中指定时间的年月日时分秒 ...
- vue第十单元(动态组件 keep-alive(钩子函数) 递归组件(name) 组件命名约定)
第十单元(动态组件 keep-alive(钩子函数) 递归组件(name) 组件命名约定) #课程目标 熟练掌握动态组件的实现 掌握keep-alive缓存组件,以及相应的钩子函数 熟练掌握递归组件, ...
- 工具-效率工具-XMIND8破解(99.1.3)
@ 目录 1.下载 2.修改hosts文件 3.修改配置文件 4.填入序列号 5.破解完成 关于作者 1.下载 1.点击进入官方网站下载 2.下载破解包 网址:点击进入网盘地址 密码:domd 2.修 ...
- js配合php原生代码发送ajax请求
<?php //$a = "{'id':'1'}"; //$b = '{"id":1}'; //$a = iconv('ASCII',"UTF- ...
- gcc编译阶段打印宏定义的内容
背景 总所周知,代码量稍微大一点的C/C++项目的一些宏定义都会比较复杂,有时候会嵌套多个#if/#else判断分支和一堆#ifdef/#undef让你单看代码的话很难判断出宏定义的具体内容. 如果有 ...
- UWP 适配不同设备 屏幕
1.DeviceFamily-Type文件夹 将Index.xaml拷贝到DeviceFamily-Desktop 和DeviceFamily-Mobile,删除这2个目录下的Index.xmal.c ...
- C4 模型 - 可视化架构设计
前言 世界上最难的两件事是: 1. 把我的思想放进你的脑袋 2. 把你的钱放进我的口袋 第二点我们不探讨,因为这是众所周知的,不信?过来试试:) 对于第一点,对我们程序员来说,其实也是我个人一直强调的 ...
- 这可能是目前最轻量级、最支持MVVM、可定制性最高的开源Chart控件!
由于项目中经常用到Series Chart,而目前市面又实在找不到既支持MVVM,又轻量级的开源Chart控件,于是干脆就花了两周时间随手写了一个.昨天感觉还比较满意,就发布到了Github上:htt ...