学设计模式之前,必须会的uml类图
Posted 老何漫话
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学设计模式之前,必须会的uml类图相关的知识,希望对你有一定的参考价值。
为什么要介绍uml类图呢?
uml类图能不写代码且不用太多的语言,就能直观地表达设计模式的设计思想,以及展现类与类之间的关系。
好吧,既然如此,
uml类图常用知识点快速入门,现在奉上!!
uml类图分为两部分,一部分是表示类,一部分表示类与类之间的关系。
uml是怎么表示类的?
在面向对象中,常用的类有以下几种类:
普通类
抽象类
接口
1)普通类的表示
咱们先来定义一个女人类,
公有属性为:名字,年龄
公有方法为:吃饭,睡觉,
私有方法为:生孩子,做家务。
那么在uml类图上怎么展示呢?
如上图所示,定义了一个女人类,同时属性和方法也都定义了。
解释:
在uml类图中,每一个矩形框表示一个类。
普通类分为三部分,上部分为类名,中间部分为属性,下面部分为类的方法。
无论是属性还是方法,前面都有符号,分别代表公有,私有,受保护,如下:
'+' 表示public,
'-' 表示private,
“#' 表示protected.
2)抽象类的表示
抽象类的表示方法和普通类一样,分为三部分。
区别在于抽象类的类名是用斜体表示的。
如果有方法是抽象方法,也需要用斜体表示。
3)接口的表示
接口分为两部分,上部分和下部分。
上部分为固定的关键词<<interface>>和接口名称,
下部分为接口方法,如下所示:
uml类图如何表示类之间的关系?
为了清晰的表达类与类之间的关系,uml类图中常用如下几种关系:继承,实现,组合,聚合,关联,依赖。
1)继承关系的表示
在父类 与 子类 之间通过 空心三角形 + 实线 连接,由子类指向父类,如下图所示:
上图代表,女演员类继承了女人类,女人类是父类,女演员类是子类。
2)实现关系的表示,某某类实现某个接口
在实现类 与接口 之间通过 空心三角形 + 虚线 连接,由实现类指向接口,如下图所示:
超人实现了超能力里面的飞翔的方法。
3)关联关系的表示
在两个互相关联的类之间通过 带普通箭头的实心线 连接,同时箭头指向被关联者。
这里简单解释下关联关系,代表两个类之间存在关联关系,但关联的两者之间是平等的,比如老师和学生,丈夫与妻子。
表现在代码层面,是类B以类属性的形式出现在类A中。
上图中代表,订单类中有一个属性是商品对象,那么这两个类之间就可以用关联关系表示。
class Order
{
// 在订单类中,应用了商品对象;$goods
private $goods;
}
4)聚合关系的表示
聚合关系和关联关系一样,只是语义上聚合关系代表了整体与部分,比如班级包含了学生,强调的是整体与部分,且两者又可以独立
在有聚合关系的类之间通过 带空心菱形的实心线 连接,菱形指向整体
上图中代表,班级包含了学生,那么这两个类之间就可以用聚合关系表示。
class Student{
}
class Banji{
// 在班级类中,包含了学生
public $student;
}
5)组合关系的表示
组合关系体现的也是整体与部分间的关系,但此时整体与部分是不可分的,比如人有手和脚一样,是不能分开的,强调的是整体与部分,但两者不可以独立
在有组合关系的类之间通过 带实心菱形的实线 连接,菱形指向整体
上图中代表,人包含了手,那么这两个类之间就可以用组合关系表示。
class Hand{
}
class People{
// 在人类中,包含了手
public $hand;
}
6)依赖关系的表示
依赖关系,比如人学习的时候要依靠计算机。’
存在依赖关系的两个类之间 通过 带箭头的虚线连接,箭头指向被依赖者
如下:
表现在代码上,计算机类作为人类的学习方法中的参数使用,如下:
//人这个类里面有学习这个方法,方法中有一个computer对象作为参数
class Computer{
}
class People{
public function learn(Computer $copmputer){}
}
至此,关于uml常用的类图和关系也就介绍完成了。
很多人对于关联,聚合,组合这三者,容易混淆,其实这三者在代码呈现上一样,但是在语义上有所不同。
关联代表的是类之间平等的关系,聚合代表整体与部分,但彼此是独立的,组合代表整体与部分,而且这个整体和部分之间不能分割。
(本文中的图是在www.processon.com的在线画图网页中绘制的,小伙伴们可以去试试哈)
好了,关于uml类图就介绍到这里,明天见!!
以上是关于学设计模式之前,必须会的uml类图的主要内容,如果未能解决你的问题,请参考以下文章