详解 Class UML

一、说明

UML 是“统一建模语言”的简称,是用来构建模型的一种语言,UML 发展至今有 14 种之多,如果想详细了解 UML 发展可参考:什么是统一建模语言。Class UML 是软件设计中比较常用的一种,该篇我们主要探讨 Class UML。

二、类 

1、普通类

UML <-> Code:

public class Bird {
    public bool hasLife;
    public bool hasTooth;
    public void layEggs() {}
}

解析:

  1. 整个 UML 分 3 个部分,分别为:类名、属性名、方法名。
  2. 权限:
    1. +:全局属性或方法。
    2. - :私有。
    3. #:受保护。
    4. 下划线:静态。

2、抽像类

UML <-> Code:

abstract class Animal {
    public bool hasLife;
    public void metabolism(O2 o2, Water water) {}
    public void breed() {}
}

解析:

抽像类与普通类乍一看没什么区别,但仔细看会发现类名为斜体,所以将类名标识为任体即可,其它照旧。

3、接口

UML <-> Code:

public interface Fly {
    public void fly();
}

解析:

接口会在类名处有明显的 <<interface>> 标识。

三、关系

除了表示单个类对象,还有很多连接关系,为了方便理解,我们贴出一张关系图,并且之后的关系说明均以此图示例。

1、继承

表示:空心三角 + 实线

例如:鸟继承自动物;大雁、鸭子、企鹅继承自鸟类,他们之前的关系用“空心三角 + 实线”表示。

class Animal {...}

class Bird extends Animal {...}

2、实现

表示:空心三角 + 虚线

例如:大雁实际了飞翔的接口。

interface Fly {
    public void fly();
}

class WildGoose implements Fly {
    public void fly() {}
    ...
}

3、关联

表示:箭头 + 实线

例如:企鹅与气候关联

class Penguin {
    private weather;
    ...
}

class Weather {...}

4、依赖

表示:箭头 + 虚线

例如:动物的新陈代谢需要氧气和水。

class O2 {...}
class Water {...}
class Animal {
    public void metabolism(O2 o2, Water water) {...}
}

5、聚合

表示:空心菱形 + 实线箭头

例如:大雁和雁群的关系:雁群是由大雁聚合而来。

class WildGoose {...}
class WildGooseGroup {
    List<WildGoose> list;
}

6、组合(合成)

表示:实心菱形 + 实线箭头

例如:鸟和翅膀的关系。

Class Wing {...}
class Bird {
    private Wing wing;
}

四、易混

1、依赖 VS 关联

依赖和关联有点类似,区别是:关联代表一种更强的关系,一般体现为成员变量的引用;而依赖则代表了一种稍弱的关系,体现为方法中的引用(方法参数或方法内部)。

2、组合 VS 聚合

组合和聚合也是类似一种强依赖与弱依赖的关系:

聚合(弱依赖):雁群少了一只大雁依然是雁群。

组合(强依赖):鸟必须得有翅膀。

五、总结

Class UML 在大型软件建模中还是比较常用的。再者,学习设计模式时,几乎所有的书籍都会提到每个设计模式所对应的 UML,如果想学习设计模式,提前学习了解一下 UML 也是非常有帮助的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章