前言
庞大而系统地学习某方面的知识,或许需要足够的心理准备,甚至身体状态、发量……
碎片学习试图通过10min以内的时间,采用高效的思路去理解某个实用的知识点,直击本质,心无旁骛。
这是碎片学习系列文章的第一篇。
文章目录
简介
-
UML是什么?
UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。
-
为什么要学UML?
简单来说,很多编程相关的书本、教程都采用UML类图来描述类(class)成员(变量、函数)以及类之间的关系(继承、组合等),看不懂则理解内容比较费劲。
学习以后,自己可以采用UML语言来设计程序的类关系,提高顶层设计能力,且便于与同行交流。
甚至存在UML软件能够将UML类图直接生成代码的操作,或能极大提升工作效率。
UML类图是UML语言中的一种图,用来表示类、接口以及它们之间的静态结构和关系。还有其它类型的图如组件图、对象图等,此处不涉及。
-
本教程目标?
10min看懂90%以上教程中的UML类图。
识图
多数教程思路为先给图,然后解释图。此处从代码实现需求出发,对需要的关系思考如何使用UML类图来表示。以下为C++代码中经常用到的表示:
-
类的基本表示
如图 1所示,一个类的表示采用3层长方形表示,第一层类名,第二层成员变量,第三层成员函数。
图1 类的基本表示
-
成员可见性
如图 2,在成员前的字符表示可见性:-私有、+公有、#保护。
图 2 成员可见性表示
-
继承关系
如图 3,B类继承了A类,采用空心三角形表示。在UML语言中一般采用泛化(Generalization)的描述。
图 3 继承(泛化)关系
-
成员关系
UML类图中表示成员变量常用2种:聚合(Aggregation)和组合(Composition)。聚合表示成员变量离开整体后能够单独存在,组合则不能单独存在。二者需要从事务逻辑上区分。
如图 4,聚合采用空心菱形,组合采用实心菱形,指向整体。键盘与电脑是聚合关系,键盘可以离开电脑继续作用;鸟与鸟的翅膀是组合关系,翅膀离开鸟之后不能作用。
图 4 聚合(上)与组合(下)
-
依赖关系
使用类A需要依赖于类B,如作为局部变量,或使用了B的静态方法等。如图 5所示。
图 5 依赖关系
绘图
本文中所有绘图均采用StarUml软件(下载地址),该软件使用完全免费且开源。
检测
可以看图 6,思考一下各部分的关系,或者使用软件绘出该图,以检验自己的掌握情况。
图 6 检验图