参考链接:10 分钟学会 UML 类图
UML整个系统比较复杂,但通常,我们自己些代码,只会用到最简单的类图,简要的笔记如下。
假设我们要设计一个动物园系统,里面最基本的组成部分,每个动物都是Animal
类:
那么怎么抽象这个类呢,通过相应的属性和方法来模拟:
这些属性/方法主要有三种权限:
private(-)
:在类的外部无法被访问(即使是它的子类、或者通过类.私有
进行访问 )protected(#)
:在子类中可以访问;public(+)
:任何地方都可以访问它们;
除此之外,不同类之间主要有4种关系(有且仅有):
继承:海龟继承动物类,其中一种关系(海龟是动物类的一种);
关联:狗类吃食物类,两者没有依赖关系,可以互相独立存在;
聚合:说明整体、部分,一群乌龟军团,army军队,单个乌龟,依然可以单独成立;
组合:游客中心跟厕所的关系,访客大厅由厕所、售票处等组成,游客中心没有厕所就不完整,不能单独存在;
除此之外,我们还需要对它们之间的数量关系进行约束,也称为多重性数字约束。例如:一个访客大厅类只能有一个售票处,但是厕所要好几个。将约束关系写为m..n
:
需要说明的是,数字约束关系是互相的,比如说:购物网站里一个用户可以有多个订单类,但一个订单类只能由一个用户拥有。
举例,一个购物网站的架构:
此外,对于组合关系来说,被组合的对象是不能单独存在的,比如,当订单类被销毁后,相应的购物类也会被同时摧毁:
在写代码之前,先不要着急写,在draw.io在把整个类图的框架、交互关系、流程图画好,写代码会容易地多。