• 通俗易懂的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(计算机)系统管理每个屋子的温度

    总结

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

  • 相关阅读:
    禁用LinkButton的方法
    Windows Server2008R2中导入Excel
    Viewport
    Firefox模拟手机访问手机网站
    关闭ReSharper中的[ Use 'var' ]提示(Disable C# “var” Recommendation in ReSharper)
    浏览器中如何获取想要的offsetwidth、、、clientwidth、、offsetheight、、、clientheight。。。
    JS中关于clientWidth offsetWidth scrollWidth 等的含义的详细介绍
    base64编码解码js
    scrollTop如何实现click后页面过渡滚动到顶部
    如何快速获取当前链接?后面的内容,location.search、页面滚动
  • 原文地址:https://www.cnblogs.com/worldline/p/15434952.html
Copyright © 2020-2023  润新知