关于uml:UML-类图

UML 类图

类图是面向对象编程的外围建模工具。它形容了对象的类型,以及它们之间存在的各种动态关系。

类图的构造

类图由三个区域组成:

  • 名称:类/接口的名称;当类是接口时,须要在名称的上一行增加<<interface>>
  • 属性:构造为 [visibility attr] fieldName: dataType
  • 办法:构造为 [visibility attr] methodName(arg1Name: dataType, ...): returnDataType

在属性和办法的结尾是拜访修饰符(visibility attr)

  • “+”示意public
  • “-”示意private
  • “#”示意protected
  • 缺省值,同“+”,示意protected

类之间的关系

接口、类之间存在肯定的关系。UML类图中个别会用连线指明它们。

实现(Implementation)

接口与其实现类之间的关系,用实现示意。

空心三角虚线组成的箭头来示意实现关系;箭头指向接口

interface IPerson {
  name: string;
  age: number;
  sayHi(msg: string): void;
}

class Person implements IPerson {
  name: string;
  age: number;

  constructor (name: string, age: number) {
    this.name = name
    this.age = age
  }

  sayHi (msg: string): void {
    console.log(`${this.name} say: "${msg}"`)
  }
}

泛化(Generalization)

类与类之间是继承的关系,则用泛化(is a)示意。

空心三角实线组成的箭头来示意泛化关系;箭头指向父类

class Person {
  name: string;
  age: number;

  constructor (name: string, age: number) {
    this.name = name
    this.age = age
  }

  sayHi (msg: string): void {
    console.log(`${this.name} say: "${msg}"`)
  }
}

class Student extends Person {
  score: number;

  constructor (name: string, age: number, score: number) {
    super(name, age)
    this.score = score
  }

  printScore () {
    console.log(this.score)
  }
}

学生“is a”人类。“学生”继承了“人类”的所有个性,“人类”是父类,“学生”是子类。

关联(Association)

如果一个对象含有另一个对象的援用,则用关联示意。

实线箭头示意关联关系;箭头指向被关联的对象

class TimeCard {}

class Employee {
  name: string;
  timeCard: TimeCard;

  constructor (name: string, timeCard: TimeCard) {
    this.name = name
    this.timeCard = timeCard
  }
}

关联关系又能够分为三种:聚合关系组合关系依赖关系

聚合(Aggregation)

聚合(has a)关系是关联关系的一种,体现的是整体与局部的领有关系:整体蕴含局部,局部能够脱离整体而独自存在。

空心菱形实线箭头来示意聚合;空心菱形指向整体,箭头指向局部

class Engine {}

class Car {
  engine: Engine

  constructor (engine: Engine) {
    this.engine = engine
  }
}

发动机、底盘、变速箱等等零部件,能够组装一辆汽车。发动机和汽车的关系不是必须的。发动机也能够拆下来,供发电机应用。

组合(Composition)

组合(contains a)关系是关联关系的一种,体现的是整体与局部的领有关系:整体蕴含局部,局部不能够脱离整体。

实心菱形实线箭头来示意关联;实心菱形指向整体,箭头指向局部

class Mouth {}

class Face {
  mouth: Mouth;

  constructor (mouth: Mouth) {
    this.mouth = mouth
  }
}

人蕴含头、躯干、四肢,它们的生命周期统一。当人出世时,头、躯干、四肢同时诞生。当人死亡时,作为人体组成部分的头、躯干、四肢同时死亡。

依赖(Dependency)

如果在一个对象的办法中应用了另一个对象,例如:函数参数或函数返回值。则用依赖(use a)示意。

虚线箭头示意依赖;箭头指向被应用的对象

class Car {}

class Driver {
  drive (car: Car) {}
}

驾驶员应用汽车,两者就是依赖关系。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理