博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习起点 UML类图笔记
阅读量:7023 次
发布时间:2019-06-28

本文共 1075 字,大约阅读时间需要 3 分钟。

大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点。

UML定义类之间的关系主要有六种:泛化关系、实现关系、依赖关系、关联关系、聚合关系和组合关系。下面分别学习这几种关系。

泛化关系(Generalization)

使用带空心三角形的实线表示。

汽车与SUV之间为泛化关系:

_images/uml_generalize.jpg

泛化关系相当于面向对象中的继承关系。最终代码中,泛化关系表现为继承非抽象类。

实现关系(Emlpementation)

使用带空心三角形的虚线表示。

最终代码中,实现关系表现为继承抽象类。

”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才可以用来定义对象:

_images/uml_realize.jpg

依赖关系(Dependency)

使用带箭头的虚线表示。

依赖是一种最弱的横向关系。假设A类的变化引起了B类的变化,则称B依赖于A。表现在代码上依赖关系一般有如下三种情况:

  • A类是B类中(某个方法)的局部变量。
  • A类是B类中某个方法的参数。
  • A类向B类发送消息,从而影响B类变化。

关联关系(Association)

使用实线表示(可带箭头)。

乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;

从依赖——>关联——>聚合——>组合,可以认为是联系逐渐加强的,组合关系最强调依赖。

聚合关系(Aggregation)

使用带空心棱形的实线表示。

聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成。

六、组合关系(Composition)

使用带实心棱形的实线表示。

比如公司由多个部门组成;

相比聚合关系来说,组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了,

但是聚合关系的依赖性较弱,部门不在了,员工依然存在。

七、一个类图关系的典型示例

 以下这个类图,类之间的关系是我们需要关注的:

_images/uml_class_struct.jpg

  • 车的类图结构为<<abstract>>,表示车是一个抽象类;
  • 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;
  • 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;
  • 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;
  • 学生与班级之间是聚合关系,使用带空心箭头的实线表示;
  • 学生与身份证之间为关联关系,使用一根实线表示;
  • 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;

转载地址:http://ojvxl.baihongyu.com/

你可能感兴趣的文章
Java Thread.interrupt interrupted
查看>>
跨站脚本攻击实例解析
查看>>
Hadoop生态圈-phoenix的视图(view)管理
查看>>
monitor disk
查看>>
BootStrap学习笔记JS插件(一)--模态弹出框
查看>>
Q:链表的中间元素
查看>>
this函数的理解
查看>>
你不知道的函数节流,提高你的JS性能!
查看>>
headfirst设计模式(1)—策略模式
查看>>
[Android Pro] 创建快捷方式,删除快捷方式,查询是否存在快捷方式
查看>>
python基础之文件读写
查看>>
斐波那契递归的优化及指数计算的优化
查看>>
java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()
查看>>
mysql 相关2
查看>>
使用包时,报 xxx.default is not a function
查看>>
Java单例模式
查看>>
大白话理解promise对象
查看>>
Oracle 物理结构(七) 文件-归档日志文件
查看>>
shell中的${},##和%%的使用
查看>>
【网络协议】ICMP协议、Ping、Traceroute
查看>>