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类图和时序图

最新文章

  1. 洛谷P2434 [SDOI2005]区间
  2. docker 源码分析 五(基于1.8.2版本),Docker容器的创建
  3. android的一些关键词
  4. Chrome &amp; Linux font
  5. python排序算法的实现-插入
  6. 基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
  7. left join, right join , inner join, join, union的意义
  8. 【技术贴】解决 myeclipse打不开报错an error has occurred, see .
  9. if 和 swith的选择.
  10. js中setTimeout/setInterval定时器用法示例
  11. USG 2210
  12. HTML5_表单元素
  13. vbscript语句
  14. 【Spark篇】--Spark中的宽窄依赖和Stage的划分
  15. springboot事物回滚
  16. HDU4341-Gold miner-分组DP
  17. java框架之SpringMVC(1)-入门&amp;整合MyBatis
  18. vue-cli脚手架build目录中的build.js配置文件
  19. python中的轻量级定时任务调度库:schedule
  20. python的map函数

热门文章

  1. 弱键(Weak Key, ACM/ICPC Seoul 2004, UVa1618)
  2. 我在 impress.js 中学到的小套路
  3. linux下python版webshell后门查杀工具
  4. Linux中用st_mode判断文件类型
  5. 资源池设计模式 (Resource Pool)和数据池的简单实现
  6. Android软键盘隐藏,遮挡EidtText解决办法
  7. 初识suse-Linux相关!
  8. 建立你的第一个 Git 仓库
  9. 坚持不懈之linux haproxy的配置文件关键字查询手册
  10. OpenStack 的Nova组件详解