UML 类图
UML 类图
1 类图的结构
用动物园的类图结构来举例,先抽象化动物类如图所示:
一个类图包括类名、属性和行为,类名不用解释,在介绍属性和行为前,先了解一下访问权限:
-
‘ - ’ private:只有类内部的成员才能访问
-
‘ + ’ public:类内部和类外部都能访问
-
‘ # ’ protected:类内部和它的子类才能访问
-
‘ ~ ’ package/default:同一个包中任何其它的类都能访问
属性以” -name:string“为例,' - '表示访问权限为private,'name'是属性名,'string'是属性name的数据类型。
行为以”-eat():bool“为例,' - '表示访问权限为private,'eat'是行为名,'bool'是行为eat的返回值。
2 类之间的关系
- ' —▷ ' Inheritance,继承
- ' — ' Association,联合
- ' —◇ ' Aggregation,聚合:表示整体和部分关系,而且部分可以脱离整体存在,类之间没有强的生命周期依赖
- ' —◆ ' Composition,组合:表示整体和部分关系,而且部分不能脱离整体存在,有强的生命周期依赖,一个类被删了,组合的类也随之被删了
此外,多重性指在类之间关系连接上的数字,表示它们之间的数量约束,如1表示只能有一个,1...*表示有一到多个。
3 读类图
看到类图,我们先看清有什么类,再看类之间的关系和多重性,从而理解整个类图的结构和各个属性和行为的含义。
在这个类图中,首先看到User用户类,它有4个属性和一个方法,用来实现用户的登录。
随后是Administrator管理员类和Customer顾客类,它们都是User的子类,继承User所有的属性和方法,同时也有自己特定的属性和方法,比如Administrator可以updateCatalog更新目录。
再看Customer类,有Shopping Cart购物车类和Order订单类和它组合,意味着若Customer类被销毁,那么Shopping Cart类和Order类也将消失,它们不能独立存在于Customer外部。Customer可以有任意个(0...*)Shopping Cart和Order,但Shopping Cart和Order只能有一个Customer。
最后看Order类,Shipping info发货信息类和Order Details订单详情类也和它组合,Order只能有一个Shipping info和一个Order Details,Shipping info和Order Details也只能有一个Order。