通俗易懂的UML类图

背景

小明去动物园看动物,来简述整个UML的认知过程

基础定义

​ 根据上面事实,我们将了解UML类途中的几种关系:Inheritance (继承) ,Realization(实现),Association(关联),Aggregation(聚合),Composition(组合),Dependency(依赖)

UML类的基本认识

在开始之前我们先认识下UML类的基本特征

对于属性和方法前面的修饰符 - + 等,具体是一下含义

  • - private 任何其他类和子类都不可访问
  • + public 可以被任何类进行访问
  • #protected 相同类或其子类存取
  • ~ package/default 同一个包中

继承

有了上面对类的基本理解,我们再看下不同实体之间的关系。

Inheritance 继承关系

  • 作用:它指定了子类如何特化父类的所有特征和行为,例如:老虎是动物的一种

  • 箭头指向:带三角箭头的实线,箭头指向父类,符号用下面的表示

    假设动物园有花豹、老虎、长颈鹿,分别对应Leopard、 Tiger、 Giraffe,他们有自己的名字、编号、年龄已经他们都可以吃东西,可以抽象为三个实体类

    三个实体我们可以抽出一个共用的Animal父类,三个子类分别继承 name id age… 属性和方法,可以用UML继承关系表示,如下

    另外,对于抽象类,我们可以类名变斜体Animal;或者类名加 <>

关联

Association 关联关系

  • 关联关系:关联关系比较简单,比如东北虎会捕食野猪作为食物,那么老虎和野猪就是关联关系

  • 箭头指向:关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,带普通箭头的实心线,指向被拥有者

聚合

Aggregation 聚合关系

  • 作用:是整体与部分的关系,并且部分可以存在于整体之外,如一群乌龟和一只乌龟之间的关系

  • 箭头指向:带空心菱形的实心线,菱形指向整体

    比如动物园中的一群乌龟,我们可以定义为Creep类,他与乌龟有关系,并且仍然可以独立存在

组合

Composition 组合关系

  • 组合关系:是整体与部分的关系,但是他是比聚合关系还要强的关系,要求普通聚合关系的整体部分的声明周期代表部分的生命周期

  • 箭头与方向:带实心菱形的实线,菱形指向整体

    比如动物园的 Visitor Center (访客中心),会有 Lobby (大厅) 和 Bathroom (厕所), Lobby 以及 Bathroom 与 VC之间就是组合关系,现实世界里,Lobby不可能脱离VC单独存在,Bathroom也不可能脱离VC单独存在

    另外,VC和lobby之间,VC和bathroom之间在数量级上,也有对应的一对一、一对多等关系。

    eg:

    1. 0…1 zero to one
    2. n specific number
    3. 0…* zero to many
    4. 1…* one to many
    5. m…n specific number range

    因此,一个VC中对应一个lobby,对应至少一个bathroom

依赖

Dependency 依赖关系

  • 依赖关系:是一种使用关系,尽量不要使用双向依赖

  • 箭头与方向:带箭头的虚线,指向被使用者

    zookeeper (动物圆管理员) 使用computer(计算机)系统管理每个屋子的温度

总结

总结以上的关系强度 继承>组合>聚合>关联>依赖,我们可以看下全部的关系图。

猜你喜欢

转载自blog.csdn.net/SpringBoots/article/details/120893730