Uml类图 - littleboy12580/learning_python GitHub Wiki
在UML中,类由三部分组成,分别是类名,类中的属性以及类中的方法,其大体构造如下图:
在类图中,类的每一个属性都被单独放置在一行,其基本格式为 属性名:属性类型,其中属性类型为可选项,它描绘了它所修饰的类属性的一些特点;列表具体形式如下表:
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实例
关联图中的数值所对应的含义如下表:
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中接口的表现是在名字上方加上《interface》标记,如果一个类要对一个接口进行扩展,可以使用虚线加空心箭头指向该接口来实现,其表现形式如下图:
除了两种基本的关联类型外,关联还有几种额外类型,分别是关联类,聚合与组合,自关联
关联类是用来修饰两个关联的类之间的关系的,其具体表现如下图:
聚合是一种强关联关系,它表示两个类之间的整体与部分的关系,且部分可以离开整体而单独存在;例如汽车与轮胎就是一种聚合关系;用带空心菱形的实心线来表示聚合,其中菱形指向整体,具体表示如下图:
组合则是一种更强的关联关系,它也表示两个类之间的部分与整体的关系,但部分不能离开整体而单独存在;如公司与部门就是一种组合关系;用带实心菱形的实线来表示组合,其中菱形指向整体,具体表示如下图:
##自关联 有时候一个单独的类可以与自身进行自关联,这样做的意义并不是说这个类的实例与自身相关联了,而是这个类的一个实例与这个类的另外一个实例相关联了;如员工与经理可以是一个类的两个实例;其具体表示如下图:
在UML中,可以用一些符号修饰类的属性与方法来表明这些属性与方法的属性是否可见,具体对应表如下:
Mark | Visibility type |
---|---|
+ | Public |
# | Protected |
- | Private |
~ | Package |
因此一个BankAccount类的类图可以这样写: