UML类图

前言 什么是UML?

UML的定义

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产
品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。
UML 使用面向对象设计的的建模工具,但独立于任何具体程序设计语言

UML2.0 一共有 13 种图形(UML1.5 定义了 9 种,2.0 增加了 4 种)。分别是:用例
图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图 9 种,包图、
时间图、组合结构图、交互概览图
4 种。

  • 用例图(Usecase Diagrams):用来描述用户的需求,从用户的角度描述系统的功能,
    并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。
  • 类图(Class Diagrams):用于定义系统中的类。
  • 对象图(Object Diagrams):是类图的一个实例,描述了系统在具体时间点上所包含
    的对象以及各个对象之间的关系。
  • 构件图(Component Diagrams):一种特殊的 UML 图来描述系统的静态实现视图。
  • 部署图(Deployment Diagrams):定义系统中软硬件的物理体系结构。
  • 状态图(State Chart Diagrams):用来描述类的对象所有可能的状态以及时间发生时
    状态的转移条件。
  • 协作图(Collaboration Diagrams):描述对象之间的合作关系,更侧重和用户对象说
    明哪些对象有消息的传递。
  • 活动图(Activity Diagrams):用来描述满足用例要求索要进行的活动以及活动间的约
    束关系。
  • 时序图(Sequence Diagrams):描述对象之间的交互顺序,着重体现对象间消息传递
    的时间顺序,强调对象之间消息的发送顺序,同时显示对象之间的交互过程。
  • 包图(Package Diagrams):对构成系统的模型元素进行分组整理的图。
  • 组合结构图(Composite Structure Diagrams):表示类或者构建内部结构的图。
  • 时间图(Timing Diagrams):用来显示随时间变化,一个或多个元素的值或状态的更
    改,也显示时控事件之间的交互和管理它们的时间和期限约束。
  • 交互概览图(Interaction Overview Diagrams):用活动图来表示多个交互之间的控制
    关系的图。 UML 绘图规

在这里插入图片描述

事物描述

  • 类(Class):对一组具有相同属性,方法,关系和语义的对象的描述。
  • 接口(Interface):描述了一个类或构件的一个服务的操作集。它仅仅是定义了一组操
    作的规范,并没有给出这组操作的具体实现(代码)。
  • 用例(Usecase):是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参
    与者(Actor)有价值且可观察的结果。
  • 包(Package):是分组事物中最主要的,是 UML 中唯一的组织机制。

1. UML类图示例

在这里插入图片描述
如果是接口,在类名上方加<>

2. 类与类之间的关系

在这里插入图片描述

2.1 泛化(Generalization)

泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系

2.1.1 继承

表示方法:
继承使用空心三角形+实线表示。
示例:
鸟类继承抽象类动物
在这里插入图片描述

2.1.2 实现

介绍:
实现表示一个class类实现interface接口(可以是多个)的功能。
表示方法:

1)矩形表示法
使用空心三角形+虚线表示
比如:汽车改装音响,就要实现低音炮()接口
在这里插入图片描述

2)棒棒糖表示法
使用实线表示
在这里插入图片描述

2.2 关联(Association)

介绍:
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
表示方法:
关联关系用实线箭头表示。箭头指向被拥有者 ,或用不带箭头的实现表示(双向箭头的简化表示方式)
示例:
企鹅需要‘知道’气候的变化,需要‘了解’气候规律。当一个类‘知道’另一个类时,可以用关联。
在这里插入图片描述

2.3 聚合(Aggregation)

介绍:
表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期
表示方法:
聚合关系用空心的菱形+实线箭头表示。
示例:
每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。
在这里插入图片描述

2.4 组合 (Composition)

介绍:
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样
表示方法:
组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
示例:
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。

在这里插入图片描述

2.5 依赖 (Dependency)

介绍:
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
表示方法:
依赖关系用虚线箭头表示。
示例:
动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数

在这里插入图片描述

3.整体示例图

在这里插入图片描述

4.记忆技巧

箭头方向: 指向已知的(子类指向父类)
记忆技巧:

  1. 定义子类是需要extends关键字指定父类
  2. 子类一定是知道父类定义的,但是父类并不知道子类定义
  3. 只有知道对方信息时,才能指向对方
  4. 所以箭头方向是从子类指向父类

继承/实现: 用线条连接两个类
记忆技巧:

  1. 空心三角箭头表示继承或实现
  2. 实线表示继承,是is-a的关系,表示拓展,不虚,很结实
  3. 虚线表示实现,虚线代表 “虚”无实体

关联/依赖: 用线条连接两个类
记忆技巧:

  1. 虚线表示依赖关系:临时用一下,若即若离,虚无缥缈,若有若无
    表示一种使用关系,一个类需要借助另一个类来实现功能
    一般是一个类将另一个类作为参数使用,或作为返回值
  2. 实线表示关联关系:关系稳定,实打实的关系;铁哥们
    表示一个类对象对另一个类对象有关联;
    通常是一个类中,有另一个类对象作为属性;

组合/聚合: 用菱形表示
记忆技巧:

  1. 菱形表示一个盛东西的盘子
  2. 聚合:空心菱形,代表空盘子里可以放很多相同的东西,聚集在一起
    聚集在一起(箭头方向所指的类);
    整体和局部的关系,两者有独立的生命周期,是has-a的关系
  3. 组合:实心菱形,代表盘子里已经有实体结构的存在,生死与共;
    整体与局部的关系,和聚合关系对比,关系更强烈;
    两者具有相同的生命周期,是contains-a的关系

注意:UML类关系图中,没有实心箭头(有实心菱形)

参考与:
链接:https://www.jianshu.com/p/57620b762160


版权声明:本文为nonage_bread原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。