程序设计神器 之 实体

程序处理的是概念

程序是什么?

简单说,程序是处理数据的计算机代码

几乎所有的程序都可以分为三部分

输入–> 处理 –> 输出

程序可以理解成一个加工处理数据的过程,或者工具

那么被加工的数据又是什么呢?

数据有多种形式,如文本、图像、音频、视频等等

无论数据形式如何,都代表的是某种信息

大部分信息,可以经过数字化处理,变为计算机里的数据

那么信息又是什么呢?

信息就是对某个事物、事情、现象的一种描述

既然是描述,就意味着,其中包含了一些概念

概念是我们思考、认识、交流的重要的元素

如果理解了信息是由一些概念组成的,那么就能理解:

程序处理的实际上是 概念

再进一步,就能理解:

计算机是人类大脑的延伸

我们思考、认识、交流都是基于某些概念的,而且教育的主要就是关于抽象概念的

概念就是实体

概念表示某种具体或者抽象的事物

任何一个事物,都具有某种特性或者属性

比如一个人,具有性别、年龄、肤色、国籍等一系列属性

再比如一个课程,具有名称、级别、课时、授课老师等一系列属性

再比如一张图片,具有大小、尺寸、名称、存放位置等一系列属性

看到了吗,对这些概念的进一步分析,获取到其中的各种属性,就能得到这个概念在程序里的表示形式

一个概念在程序里的表现形式就是实体

实体,就就是建立现实世界和计算机世界之间的联系的

现实世界里,各个东西都是概念,计算机世界里各种东西都是实体

概念和实体之间是可以相互表示的

前面我们知道了,程序处理的就是概念,那么将概念表示为实体,就可以编写为程序了

实体之间的关系

概念之间是有联系的,同样,实体之间也是有联系的

相对概念之间的联系,实体之间的联系更为简单

只有一对一一对多,和多对多的联系

是不是感觉有点熟悉了,这不就是数据库表之间的联系吗?

没错,数据库表实际上是用来存放概念的,比如存放人员信息,课程信息,图片信息

即它实际上存放的就是实体

日常大多数程序,并不需要和数据库打交道

但并不意味着不和实体大交道

数据库只是存放实体的一种形式,并且实现了实体之间的一对一一对多的关系

一对一,意味着,两个实体之间是一一对应的,比如每个人只有一个身份证(正常情况下),

一对多,意味着,两种实体之间具有包含的关系,比如一个家庭,由多个个人组成,或者一个学生可以同时选择多们课程

这种关联关系,在程序中会被处理成顺序处理,和循环处理

实体的表示

程序设计,需要像建筑图纸一样表示出来

对于实体,应该如何表示呢

通过参考各种资料,特别是学习了 《系统分析与设计方法》,并结合工作实践,我总结了一套表示实体的方法

在不同的设计阶段,需要用到不同的表示方式

一般分为 概要实体详细实体

区别在于,概要实体不用关注实体的熟悉,而详细实体,需要关注实体的属性

今天我们只讨论概要实体

概要实体用一个方框表示:

实体

方框里面写实体的名称

实体之间的关系,用链接它们的线条表示

实体关系

线条两端,需要特别注意,靠近外面的表示一或者多

是一个小短线, 是三分叉

靠近里面的小圈,表示 0 即可以不存在,小短线表示 1 即表示必须存在

例如第一条线左端,读作:有且有一个,右端读作:有且有一个或者多个

第二条线左端,读作:没有或仅有一个,右端读作:没有或者可以有多个

第三第四咋读,你可以试试吧,欢迎留言讨论

下面我们看一个实际的例子

实体关系

这幅图,描绘了一个学校系统的基本结构,通过图示,我们就能轻松的读取它所传递的信息

比如学校必须有一个或者多个班级,班级必须属于一个学校,

一个班级里可以没有学生或者有多个学生

一个学生可以不选或者选择多个课程

一个课程可能没有学生选择或者有多个学生选择

……

如果进一步展开,这些关系里实际上包含着业务规则,比如一个班级没有任何学生的状态可能是在开学前,还没学生报名的时间点

以及 不能存在一个没有班级的学校 等等

而不同的业务场景下,规则是不一样的,所有实体图,体现当前的业务场景,并不存在适应所有场景的实体图

这就是实体关系图,通过它不仅可以方便地记业务信息,而且还可以方便地交流

总结

今天我们梳理了程序设计中的实体部分,从程序处理的是什么开始,一直引导到程序处理的是概念这个观点,概念不仅是我们认识世界的工具,也是我们做程序设计的基础,抓住了实体,就像抓住了程序的纲。

比心!

下次,会讨论一下程序设计的另一个神器:数据流

Python Geek Tech wechat
欢迎订阅 Python 技术,这里分享关于 Python 的一切。