设计模式02 —— UML
本教程参考:菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com)
参考书:《图解设计模式》
本系列为本人学习笔记,和课程学习笔记,资料和参考均源自互联网,希望各位大佬多多指点!
UML的概念
UML的全称是Undefined Modeling Language(统一建模语言)是让系统可视化,让规格和设计文档化的表现方法。
在笔记中可能会使用Java的术语。比如用Java中的“字段”(field)代替UML中的“属性”(attribute),用Java中的“方法”(method)来代替UML中的“操作”(operation)
类图
类图表达了一种静态的关系
类与层次结构
可以看到,这里是ChildClass继承了ParentClass
由子类指向父类
可以这样理解:定义子类的时候需要通过extends来指定父类,所以子类一定知道父类的定义。但是反过来父类并不知道子类的定义。我们可以理解为“只有知道了某个人的信息才能指向对方”,所以箭头是子类指向父类。
接口与实现
使用<
接口和抽象类使用斜体来表示,静态的方法使用下划线来表示
聚合
将这种“持有”的关系成为聚合。只要在一个类中只有另外一个类的实例——无论是一个还是多个,他们之间都是聚合关系。
展示聚合关系如下,使用菱形+非空心箭头来表示
可以使用联想记忆法,将空心菱形看作一个篮子,持有其他类的实例
可见性(访问控制)
- “+” 表示public方法和字段,可以从类的外部访问方法和字段
- “-” 表示private方法和字段,无法从类的外服访问方法和字段
- “#” 表示protect方法和字段,只有类的本身,该类的子类,同一个包中的其他类可以访问这个方法和字段
- “~” 表示default方法和字段,只有同一个包中的类才能访问的方法和字段
类的关联
在类的前面加上黑色三角表达类之间有关联,无论是“使用”,“生成”,“发送消息”等,都可以。
时序图
时序图表达的是一种随时间发生变化的动态行为。
UML的时序图表示程序在工作的时候,内部方法的调用顺序以及事件的发生顺序。
这个图中共有三个实例,长方形内部写有类名,跟在冒号之后,并且带有下划线,比如图中的Client。
如果需要,还可以在冒号前给出实例的名字,比如server:Server
每一个实例都有一个向下的虚线,称为生命线,可以理解为时间从上向下流逝,从过去到未来。生命线仅存在于实例的生命周期内
虚线上的长方形表示了实例正处于某种活动中。
最上面的线表示了Client调用了Server'的open方法。下面的虚线返回代表了open方法的返回,有些时序图也会省略返回的箭头。
沿着生命线从上到下阅读,遇到箭头时,可以顺着箭头所指的方向查看对象之间的协作。
标签:02,父类,子类,箭头,实例,UML,设计模式,方法 From: https://www.cnblogs.com/ZzTzZ/p/17768090.html