设计模式02 —— UML

设计模式02 —— UML

本教程参考:菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com)

参考书:《图解设计模式》

本系列为本人学习笔记,和课程学习笔记,资料和参考均源自互联网,希望各位大佬多多指点!


UML的概念

UML的全称是Undefined Modeling Language(统一建模语言)是让系统可视化,让规格和设计文档化的表现方法。

在笔记中可能会使用Java的术语。比如用Java中的“字段”(field)代替UML中的“属性”(attribute),用Java中的“方法”(method)来代替UML中的“操作”(operation)

类图

类图表达了一种静态的关系

类与层次结构

image

可以看到,这里是ChildClass继承了ParentClass

由子类指向父类

可以这样理解:定义子类的时候需要通过extends来指定父类,所以子类一定知道父类的定义。但是反过来父类并不知道子类的定义。我们可以理解为“只有知道了某个人的信息才能指向对方”,所以箭头是子类指向父类。

接口与实现

使用<>来表示Java的接口。箭头采取虚线

接口和抽象类使用斜体来表示,静态的方法使用下划线来表示

image

聚合

将这种“持有”的关系成为聚合。只要在一个类中只有另外一个类的实例——无论是一个还是多个,他们之间都是聚合关系。

展示聚合关系如下,使用菱形+非空心箭头来表示

可以使用联想记忆法,将空心菱形看作一个篮子,持有其他类的实例

image

可见性(访问控制)

image

  • “+” 表示public方法和字段,可以从类的外部访问方法和字段
  • “-” 表示private方法和字段,无法从类的外服访问方法和字段
  • “#” 表示protect方法和字段,只有类的本身,该类的子类,同一个包中的其他类可以访问这个方法和字段
  • “~” 表示default方法和字段,只有同一个包中的类才能访问的方法和字段

类的关联

在类的前面加上黑色三角表达类之间有关联,无论是“使用”,“生成”,“发送消息”等,都可以。

image

时序图

时序图表达的是一种随时间发生变化的动态行为。

UML的时序图表示程序在工作的时候,内部方法的调用顺序以及事件的发生顺序。

image

这个图中共有三个实例,长方形内部写有类名,跟在冒号之后,并且带有下划线,比如图中的Client。

如果需要,还可以在冒号前给出实例的名字,比如server:Server

每一个实例都有一个向下的虚线,称为生命线,可以理解为时间从上向下流逝,从过去到未来。生命线仅存在于实例的生命周期内

虚线上的长方形表示了实例正处于某种活动中。

最上面的线表示了Client调用了Server'的open方法。下面的虚线返回代表了open方法的返回,有些时序图也会省略返回的箭头。

沿着生命线从上到下阅读,遇到箭头时,可以顺着箭头所指的方向查看对象之间的协作。

posted @ 2023-10-16 18:36  ZzTzZ  阅读(9)  评论(0编辑  收藏  举报