媒体报道

类图是怎样炼成的?

标签:媒体报道
作者:Admin
时间:2019/11/7 15:46:47

学过UML的人对类图想必都不陌生,作为结构建模的核心工具,类图充当着沟通现实世界与概念世界的桥梁。没有学过UML的同学也不必担心,在开始正文之前,我会先简要介绍一下UML和类图的基本概念。

什么是UML?

通俗地讲,UML就是统一建模语言(Unified Modeling Language)。如果说咱们平时用的汉字是帮助日常沟通的,那么UML就是帮助我们将现实抽象化,对其中的结构和行为进行建模。

举个简单的例子:你是一个人,现在,你对另一个人说话。在这个过程中,你使用了一种名为交流的功能。而交流,是需要你的喉咙、鼻腔、舌头、口腔和嘴唇共同完成的,我们可以把它们统称为发声器官,而喉咙这些小的部件就是发声器官的结构。

功能是由结构驱动的,而功能在UML中属于行为建模,由用例图承担。产品经理所熟知的用例模板其实是用例图的补充说明,当然这一块不在本篇文章的讨论范围之列。我们要讨论的,是承担结构建模的工具——类图。

类图是怎样炼成的

上图是一张典型的类图,由三部分组成(由上自下):类名、属性、方法。

如果你是程序员出身,大概对这些很熟悉了——string是字符串,integer是整数,void为空,这些都代表属性的数据类型。至于“+”和“-”,则代表着公有和私有的区别。

如果你不是程序员,也不用担心,暂且抛开数据类型和底下的方法,只保留类名和属性就好。

类图是怎样炼成的

你可以忽略前面的加号,也可以把它当成一种惯例接受,这都不影响你对类图本身的使用。

其实类图本身很简单,它本身只是把类具象化的一种工具。关键是要明白它为什么存在?有什么意义?要怎么用?

要解决这些问题,首先就得明白什么是类。

通俗地讲,类就是现实世界的事物在概念世界的映射

在理解这句话之前,我们需要明白一个隐秘的常识,即所有思维层面的活动都依赖于概念进行,我们不是在对实物思考着;而只是通过把它抽象化成概念,用概念在抽象世界中运行着。

当我们思考人的时候,我们是把人作为一种概念,存储在自己的脑海里。我说你是一个人,但人本身在现实世界是没有对应物的,你是人,他也是人,但你不是他,我无法用他来指涉你。

因为实体本身的制约,我们不得不把你和他抽象为一种共同的存在,用这种存在来指涉拥有共同特征的存在。这种存在就是类,而类本身就是一种概念。

拿人来说,人就是你、我、他在概念世界中的映射。换句话说,人就是类。

要知道,我们本来是没有办法思考实物的,因为实物就在那儿,我们不可能把它变成我们脑海中的物质材料,像厨子一样做出一道思维大餐。

可是通过类,我们突然可以分析真实世界了,只要我们将它们抽象化,映射在概念世界就好。

如果我们了解到这一点,就该知道,我们无论要解决何种问题,首先要做的事,就是把问题抽象化、概念化。

当然,当我们将实物抽象化以后,就该用一种可视化的方式将其呈现出来,一来为了与共事者交流,二来我们也可以更轻松地进行逻辑推导——类图就是一种很好的可视化方式。

如上面所讲,简化版类图包含两点:类名和属性。

之所以有类名,是为了方便人们称呼它,使这个类从虚无中显现出来。我们无法称呼一个没有名字的存在,更无法去思考它。

毕竟,最虚无缥缈的东西,老子都要强曰道之后,我们才能去探究它。

而光有了名字还不够,不同的两件事物,完全可以有相同的名字。譬如你可以叫张三,我也可以叫张三,但我们俩其实是完全独立的存在。

概念也是如此,单单把“人”提取出来,而不给它任何定义,那么我们怎么能知道“人”和“动物”这两个类的区别是什么?而属性,就是给类下定义的方式。

人这个类,有名字,有年龄,还有性别,职业,婚姻关系,住址……

而动物,则有物种,有年龄,有性别,有栖息地……

通过这些属性,人与动物得以区别。

可是,如果你仔细品味一下的话,会发现人和动物的属性有重合的地方。诸如年龄、性别什么的,人和动物都有啊。

为什么呢?

这就涉及到类与类之间的关系:继承。

类与类之间是有简单和复杂的区分的,而复杂的类往往继承自简单的类。譬如你是你父亲的儿子,你比他懂得更多,但你也仍然继承了他的一些特点。

而人和动物,都继承了来自简单类——生物的基本属性。

人与动物,在继承自生物这块的属性上,大同小异,而真正使他们做出区分的,是独属于其本身的那部分属性。譬如人的婚姻关系,动物的栖息地。婚姻关系是社会形态下出现的新型关系,动物是无法演化出来的。同样,动物的栖息地属于族群概念,与人的住所(涉及所有权问题)又有天壤之别。

试想一下,倘若栖息地转化成住所,那么动物的概念就不再适应,而必须演变成一种新的类:家养宠物。正是通过属性的不同,类本身的区别才能进行精准的回答。

有的读者看到这里可能会疑惑,我知道了类,对我有什么用呢?

这个问题的回答本来在开头就应该阐明,但考虑到有的同学并不了解类是什么,因此放到第一部分的结尾来解答。

理由有三:

  1. 类是一种抽象建模的思维方式,它充当现实世界和概念世界的接口;使用这种方式,能让我们在世界观的层面上革新我们的方法论。




正道诚信 真知灼见