设计模式学习起点 UML类图笔记
2024-10-10 15:56:48
UML类图笔记
大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点。
UML定义类之间的关系主要有六种:泛化关系、实现关系、依赖关系、关联关系、聚合关系和组合关系。下面分别学习这几种关系。
>>泛化关系(Generalization)
使用带空心三角形的实线表示。
汽车与SUV之间为泛化关系:
泛化关系相当于面向对象中的继承关系。最终代码中,泛化关系表现为继承非抽象类。
>>实现关系(Emlpementation)
使用带空心三角形的虚线表示。
最终代码中,实现关系表现为继承抽象类。
”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才可以用来定义对象:
>>依赖关系(Dependency)
使用带箭头的虚线表示。
依赖是一种最弱的横向关系。假设A类的变化引起了B类的变化,则称B依赖于A。表现在代码上依赖关系一般有如下三种情况:
- A类是B类中(某个方法)的局部变量。
- A类是B类中某个方法的参数。
- A类向B类发送消息,从而影响B类变化。
>>关联关系(Association)
使用实线表示(可带箭头)。
乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;
从依赖——>关联——>聚合——>组合,可以认为是联系逐渐加强的,组合关系最强调依赖。
>>聚合关系(Aggregation)
使用带空心棱形的实线表示。
聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成。
>>组合关系(Composition)
使用带实心棱形的实线表示。
比如公司由多个部门组成;
相比聚合关系来说,组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了,
但是聚合关系的依赖性较弱,部门不在了,员工依然存在。
>>一个类图关系的典型示例
以下这个类图,类之间的关系是我们需要关注的:
- 车的类图结构为<<abstract>>,表示车是一个抽象类;
- 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;
- 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;
- 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;
- 学生与班级之间是聚合关系,使用带空心箭头的实线表示;
- 学生与身份证之间为关联关系,使用一根实线表示;
- 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;
参考 看懂UML类图和时序图
最新文章
- 洛谷P2434 [SDOI2005]区间
- docker 源码分析 五(基于1.8.2版本),Docker容器的创建
- android的一些关键词
- Chrome &; Linux font
- python排序算法的实现-插入
- 基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
- left join, right join , inner join, join, union的意义
- 【技术贴】解决 myeclipse打不开报错an error has occurred, see .
- if 和 swith的选择.
- js中setTimeout/setInterval定时器用法示例
- USG 2210
- HTML5_表单元素
- vbscript语句
- 【Spark篇】--Spark中的宽窄依赖和Stage的划分
- springboot事物回滚
- HDU4341-Gold miner-分组DP
- java框架之SpringMVC(1)-入门&;整合MyBatis
- vue-cli脚手架build目录中的build.js配置文件
- python中的轻量级定时任务调度库:schedule
- python的map函数