UML 类图


# UML 类图

# UML 介绍

UML(Unified Modeling Language)中文名叫统一建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。

它本身包括很多类型的图,但在设计模式中,主要使用其中的一种 —— 类图,以及关系(泛化和关联)。

# 类图

  • + 表示 public:完全开放
  • # 表示 protected:对子类开放
  • - 表示 private:对自己开放

当然了,JavaScript 的语言特性本身只支持 public,而 TypeScript 可以支持这三种类型。

类名+ public属性名A: 类型# protected属性名B: 类型- private属性名C: 类型+ public方法名A(参数1, 参数2): 返回值类型# protected方法名B(参数1, 参数2): 返回值类型- private方法名C(参数1): 返回值类型

(类图的画法)

# 泛化和关联

  • 泛化,表示继承
    • 用空心箭头表示,箭头指向就是「继承自」
  • 关联,表示引用
    • 用实心箭头表示,箭头指向就是「引用了」

# 一个示例

代码示例:

  • 继承关系:A 和 B 继承了 People
  • 引用关系:People 里面引用了 House
class People {
  constructor(name, house) {
    this.name = name;
    this.house = house;
  }
  saySomething() {}

}

class A extends People {
  constructor(name, house) {
    super(name, house);
  }
  saySomething(){
    console.log('I am A');
  }
}

class B extends People {
  constructor(name, house) {
    super(name, house);
  }
  saySomething(){
    console.log('I am B');
  }
}

class Houst {
  constructor(city) {
    this.city = city;
  }
  showCity() {
    console.log(`houst in ${this.city}`);
  }
}

// 测试
let aHoust = new Houst('北京');
let a = new A('aaa', aHoust);
console.log(a); // a 有房子
let b = new B('bbb');
console.log(b); // b 无房子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

UML 类图示例:

People+ name: String+ house: House+ saySomething(): voidB+ saySomething(): voidHouse+ city: String+ showCity(): voidA+ saySomething(): void

(一个类图示例)

(完)