学设计模式之前,必须会的uml类图

Posted 老何漫话

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学设计模式之前,必须会的uml类图相关的知识,希望对你有一定的参考价值。

在介绍设计模式之前,先来 介绍下uml类 图。


为什么要介绍uml类图呢?


uml类图能不写代码且不用太多的语言,就能直观地表达设计模式的设计思想,以及展现类与类之间的关系。


好吧,既然如此,


uml类图常用知识点快速入门,现在奉上!!




uml类图分为两部分,一部分是表示类,一部分表示类与类之间的关系。


uml是怎么表示类的?


在面向对象中,常用的类有以下几种类:

  • 普通类

  • 抽象类

  • 接口



1)普通类的表示


咱们先来定义一个女人类,

公有属性为:名字,年龄

公有方法为:吃饭,睡觉,

私有方法为:生孩子,做家务。


那么在uml类图上怎么展示呢?


学设计模式之前,必须会的uml类图


如上图所示,定义了一个女人类,同时属性和方法也都定义了。


解释:


在uml类图中,每一个矩形框表示一个类。


普通类分为三部分,上部分为类名,中间部分为属性,下面部分为类的方法。


学设计模式之前,必须会的uml类图


无论是属性还是方法,前面都有符号,分别代表公有,私有,受保护,如下:

'+' 表示public,

'-' 表示private,

“#' 表示protected.


2)抽象类的表示


抽象类的表示方法和普通类一样,分为三部分。


区别在于抽象类的类名是用斜体表示的。


如果有方法是抽象方法,也需要用斜体表示。


学设计模式之前,必须会的uml类图


3)接口的表示


接口分为部分,上部分和下部分。


上部分为固定的关键词<<interface>>和接口名称,


下部分为接口方法,如下所示:


学设计模式之前,必须会的uml类图


uml类图如何表示类之间的关系?


为了清晰的表达类与类之间的关系,uml类图中常用如下几种关系:继承,实现,组合,聚合,关联,依赖。


1)继承关系的表示


在父类 与 子类 之间通过 空心三角形 + 实线 连接,由子类指向父类,如下图所示:


学设计模式之前,必须会的uml类图


上图代表,女演员类继承了女人类,女人类是父类,女演员类是子类。


2)实现关系的表示,某某类实现某个接口


在实现类 与接口 之间通过 空心三角形 + 虚线 连接,由实现类指向接口,如下图所示:


学设计模式之前,必须会的uml类图


超人实现了超能力里面的飞翔的方法。


3)关联关系的表示


在两个互相关联的类之间通过 带普通箭头的实心线 连接,同时箭头指向被关联者


这里简单解释下关联关系,代表两个类之间存在关联关系,但关联的两者之间是平等的,比如老师和学生,丈夫与妻子。


表现在代码层面是类B以类属性的形式出现在类A中


学设计模式之前,必须会的uml类图


上图中代表,订单类中有一个属性是商品对象,那么这两个类之间就可以用关联关系表示。

class Order{ // 在订单类中,应用了商品对象;$goods private $goods;}


4)聚合关系的表示


聚合关系和关联关系一样,只是语义上聚合关系代表了整体与部分,比如班级包含了学生,强调的是整体与部分,且两者又可以独立


在有聚合关系的类之间通过 带空心菱形的实心线 连接,菱形指向整体


学设计模式之前,必须会的uml类图

上图中代表,班级包含了学生,那么这两个类之间就可以用聚合关系表示。


class Student{}

class Banji{ // 在班级类中,包含了学生 public $student;}


5)组合关系的表示


组合关系体现的也是整体与部分间的关系,但此时整体与部分是不可分的,比如人有手和脚一样,是不能分开的,强调的是整体与部分,但两者不可以独立


在有组合关系的类之间通过 带实心菱形的实线 连接,菱形指向整体


学设计模式之前,必须会的uml类图

上图中代表,人包含了手,那么这两个类之间就可以用组合关系表示。


class Hand{}

class People{ // 在人类中,包含了手 public $hand;}


6)依赖关系的表示


依赖关系,比如人学习的时候要依靠计算机。’


存在依赖关系的两个类之间 通过 带箭头的虚线连接,箭头指向被依赖者


如下:



表现在代码上,计算机类作为人类的学习方法中的参数使用,如下:

//人这个类里面有学习这个方法,方法中有一个computer对象作为参数
class Computer{}class People{ public function learn(Computer $copmputer){}}


至此,关于uml常用的类图和关系也就介绍完成了。


很多人对于关联,聚合,组合这三者,容易混淆,其实这三者在代码呈现上一样,但是在语义上有所不同。


关联代表的是类之间平等的关系,聚合代表整体与部分,但彼此是独立的,组合代表整体与部分,而且这个整体和部分之间不能分割。


(本文中的图是在www.processon.com的在线画图网页中绘制的,小伙伴们可以去试试哈)


好了,关于uml类图就介绍到这里,明天见!!



< END >
公众号:老何漫话
ID:laohemanhua
微信扫描二维码,关注我的公众号

以上是关于学设计模式之前,必须会的uml类图的主要内容,如果未能解决你的问题,请参考以下文章

从零开始单排学设计模式「UML类图」定级赛

UML类图

UML类图

UML类图详解

UML的类图与关系

设计模式从青铜到王者第三篇:UML类图