Uml类图 - littleboy12580/learning_python GitHub Wiki

类的创建格式

在UML中,类由三部分组成,分别是类名,类中的属性以及类中的方法,其大体构造如下图: 一个名为Flight的类的类图

类的属性列表

在类图中,类的每一个属性都被单独放置在一行,其基本格式为 属性名:属性类型,其中属性类型为可选项,它描绘了它所修饰的类属性的一些特点;列表具体形式如下表:

Flight类属性及其相关类型
Attribute Name Attribute Type
flightNumber Integer
departureTime Date
flightDuration Minutes

有时候除了显示类型外也可以加上属性对应的默认值,例如一个新的银行帐户类其卡内金额一般默认都是0,因此可以写成balance : Dollars = 0,下图显示了一个银行帐户类的大体构造:

一个银行帐户类的大体构造

类的方法列表

在类图中,类的每一个方法同样也是被单独放置在一行,其基本格式为 方法名(方法参数:参数类型):方法返回值,例如Flight类中的delayFlight方法,其标准写法为delayFlight(numberOfMinutes : Minutes) : Date;若没有参数或没有返回值,则为空;

类之间的几种基础关系

类间的几个基础关系有继承(泛化),关联与包

继承

用实现加空心箭头表示,展现了父类与子类的关系,其构造如下图: 继承基本构造图

如果一个父类有多个子类,可以使用树形表示,实例如下: 多子类的树形表示

关联

关联有5种类型,其中有两种基本类型:双向关联与单向关联

双向关联

双向关联表示两个类之间的关系是双向的,由一个连接两个类的实线线段来表示,其基本构造如图所示: 两个类之间的双向关联

该图表示如果Flight类创建了一个实例,那么它会有对应的0个或1个Plane实例;而如果Plane类创建了一个实例,那么它会有对应的0个以上的Flight实例

关联图中的数值所对应的含义如下表:

关联图数值含义
Potential Multiplicity Values
Indicator Meaning
0..1 Zero or one
1 One only
0..* Zero or more
* Zero or more
1..* One or more
3 Three only
0..5 Zero to Five
5..15 Five to Fifteen

单向关联

两个类存在联系,但只有一个类与另一个类存在关联,由一个从一个类指向另一个类的实线线段和一个开放箭头来表示,其基本构造如下图:

单向关联基本构造图

将一些具有相关性的类图关系整合到一个包中,其具体表现形式如下图:

UML中的包

类之间的一些扩展关系

除了一些基本关系外,类图中也存在一些扩展关系,如接口,关联的其他三种类型,可见性等

接口

在UML中接口的表现是在名字上方加上《interface》标记,如果一个类要对一个接口进行扩展,可以使用虚线加空心箭头指向该接口来实现,其表现形式如下图:

类间的接口关系图

关联的其他三种类型

除了两种基本的关联类型外,关联还有几种额外类型,分别是关联类,聚合与组合,自关联

关联类

关联类是用来修饰两个关联的类之间的关系的,其具体表现如下图:

关联类的表示

聚合与组合

聚合是一种强关联关系,它表示两个类之间的整体与部分的关系,且部分可以离开整体而单独存在;例如汽车与轮胎就是一种聚合关系;用带空心菱形的实心线来表示聚合,其中菱形指向整体,具体表示如下图:

聚合的表示

组合则是一种更强的关联关系,它也表示两个类之间的部分与整体的关系,但部分不能离开整体而单独存在;如公司与部门就是一种组合关系;用带实心菱形的实线来表示组合,其中菱形指向整体,具体表示如下图:

组合的表示

##自关联 有时候一个单独的类可以与自身进行自关联,这样做的意义并不是说这个类的实例与自身相关联了,而是这个类的一个实例与这个类的另外一个实例相关联了;如员工与经理可以是一个类的两个实例;其具体表示如下图:

自关联的表示

可见性

在UML中,可以用一些符号修饰类的属性与方法来表明这些属性与方法的属性是否可见,具体对应表如下:

可见属性对应表
Mark Visibility type
+ Public
# Protected
- Private
~ Package

因此一个BankAccount类的类图可以这样写:

BankAccount类图

⚠️ **GitHub.com Fallback** ⚠️