UML类图

UML类图 是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解。UML类图 是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。

图示

解析

圆角矩形框,它就代表一个类(Class)

类图分为三层:

  • 第一层显示类的名称,如果是抽象类,则就用斜体显示
  • 第二层是类的特性,通常就是字段和属性
  • 第三层是类的操作,通常是方法或行为。
    • 注意前面的符号:

      • '+':表示public
      • '-' :表示private
      • '#':表示protected

接口

解析

矩形框,顶端有<<interface>>显示,第一行是接口名称,第二行是接口方法。

注意:接口还有另一种表示方法,俗称棒棒糖表示法。比如下图中的唐老鸭类就是实现了 "讲人话"的接口。

UML关系

1. 继承

描述:继承关系用 空心三角形+实线 来表示

举例:面向对象说过,继承是一种 "is a " 的关系,鸟是动物中的一种

2. 实现

描述:实现接口用 空心三角形+虚线 来表示

举例:大雁实现了 飞翔接口,定义大雁飞的方法

3. 关联

描述:关联关系用 实线箭头 来表示

举例:企鹅和气候两个类,企鹅是很特别的鸟,会游不会飞。更重要的是,它与 气候 有很大的关联。我们不去讨论为什么北极没有企鹅,为什么它们要每年长途跋涉。总之,企鹅需要知道 "气候" 的变化,需要了解 "气候" 规律。当一个类 "需要知道" 另一个类时,可以用关联(association)关系表示。



4. 聚合

描述:聚合关系用 空心的菱形+实线箭头 来表示

举例:大雁是群居动物,每只大雁都属于一个雁群, 一个雁群可以有多只大雁。所以它们之间就满足 聚合(Aggregation)关系。聚合表示一种弱的 "拥有" 关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。



5. 组合

描述:组合关系用 实心的菱形+实线箭头 来表示

举例:组合是一种强的 "拥有" 关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。鸟和其翅膀就是组合(合成)关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。

另外,你会注意到合成关系的连线两端还有一个数字 '1' 和数字 '2' ,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就用'n'来表示。关联关系、聚合关系也可以有基数



6. 依赖

描述:依赖关系(Dependency),用虚线箭头来表示

举例:动物要有生命力,需要氧气、水以及食物等依赖



万丈高楼平地起:UML类图的更多相关文章

  1. UML类图(下):关联、聚合、组合、依赖

    前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...

  2. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

  3. UML类图几种关系的总结

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...

  4. UML类图关系全面剖析

    UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...

  5. UML类图关系--继承(泛化)、实现、关联、聚合、组合、依赖

    在UML类图中,常见的有以下几种关系:  泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composi ...

  6. UML类图的6大关系

    <小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...

  7. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

  8. 初识UML类图--类之间关系

    前言 最近有打算学习一下设计模式,所以就去看了园子里面左潇龙大哥的设计模式文章,看完之后只有一个感觉,我啥时候也能写出来这么牛逼的文章啊,但是我这语文老师死的早的人还是算了,但是设计模式还是要学的,这 ...

  9. 我对uml类图关系的理解

    uml类图的关系: 泛化关系也就是继承. 实现关系就是一个类实现另外一个接口. 依赖关系就是一个类使用了另外一个类,是一种使用关系,在这个类的某个服务中需要另外一个类来协助. 关联关系就是一类拥有另外 ...

  10. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...

随机推荐

  1. 【基础整理】Mapping representation 机器人所用地图种类及相关介绍

    参考与前言 本文主要介绍 建图 Mapping 方面的一些 基础知识介绍与相关下游任务使用 涉及知识较为基础,SLAM大佬们可以提前退出了 主要针对应用为移动机器人与物流无人驾驶车:提前申明:大部分文 ...

  2. Java类全路径冲突解决方法

    1. 问题 今天在开发中遇到这样一个问题,A同事在导入了我们的实验SDK后,发现实验无法正常获取,查看日志发现了NoClassDefFoundError异常,无法加载的的类中逻辑比较简单,只依赖了另外 ...

  3. C++ Constructor And Destructor

    if you have problems with constructors and destructors, you can insert such print statements in cons ...

  4. ARP协议介绍与投毒攻击

    目录 ARP是什么? ARP协议工作原理 ARP攻击原理 攻击软件 防范 Reference ARP是什么? ARP是通过网络地址(IP)来定位机器MAC地址的协议,它通过解析网络层地址(IP)来找寻 ...

  5. 4. 系统I/O

    系统 I/O 示例代码: #include <iostream> // 标准库头文件 // #include "myheader.h" // 自己写的头文件 void ...

  6. Git常用命令汇总以及其它相关操作

    --文件目录操作命令 1 mkdir * 创建一个空目录 *指目录名 2 pwd 显示当前目录的路径. 3 cat * 查看*文件内容 4 git rm * 删除**文件 --git初始化操作 1 g ...

  7. 可视化—D3学习笔记小小案例记录一下

    D3全称是Data-Driven Documents数据驱动文档,是一个开源的javascript库,可以用于数据可视化图形的创建,该库更接近底层,与 g2.echarts 不同,d3 能直接操作 s ...

  8. [oeasy]python0079_控制序列_光标位置设置_ESC_逃逸字符_CSI

    光标位置 回忆上次内容 上次我们研究的比较杂 类型转化 进制转化 捕获异常 版本控制 生成帮助文档 变量的常用类型 变量的生命周期控制   数据类型主要研究了两个 字符串 str   整型数字 int ...

  9. [oeasy]python0092_homebrew_家酿俱乐部_比尔盖茨_保罗艾伦

    编码进化 个人电脑 intel 8080 的出现 让 人人都 可能有 一台计算机 Ed Robert 的 创业之路 从 售卖 diy 组装配件 到进军 计算器市场 计算器 毕竟不是 个人计算机 这计算 ...

  10. 我用Awesome-Graphs看论文:解读Naiad

    Naiad论文:<Naiad: A Timely Dataflow System> 前面通过文章<论文图谱当如是:Awesome-Graphs用200篇图系统论文打个样>向大家 ...