来源:【公众号】
Python技术
程序处理的是概念
程序是什么?
简单说,程序是处理数据的计算机代码
几乎所有的程序都可以分为三部分
输入--> 处理 --> 输出
程序可以理解成一个加工处理数据的过程,或者工具
那么被加工的数据又是什么呢?
数据有多种形式,如文本、图像、音频、视频等等
无论数据形式如何,都代表的是某种信息
大部分信息,可以经过数字化处理,变为计算机里的数据
那么信息又是什么呢?
信息就是对某个事物、事情、现象的一种描述
既然是描述,就意味着,其中包含了一些概念
概念是我们思考、认识、交流的重要的元素
如果理解了信息是由一些概念组成的,那么就能理解:
程序处理的实际上是 概念
再进一步,就能理解:
计算机是人类大脑的延伸
我们思考、认识、交流都是基于某些概念的,而且教育的主要就是关于抽象概念的
概念就是实体
概念表示某种具体或者抽象的事物
任何一个事物,都具有某种特性或者属性
比如一个人,具有性别、年龄、肤色、国籍等一系列属性
再比如一个课程,具有名称、级别、课时、授课老师等一系列属性
再比如一张图片,具有大小、尺寸、名称、存放位置等一系列属性
看到了吗,对这些概念的进一步分析,获取到其中的各种属性,就能得到这个概念在程序里的表示形式
一个概念在程序里的表现形式就是实体
实体,就就是建立现实世界和计算机世界之间的联系的
现实世界里,各个东西都是概念,计算机世界里各种东西都是实体
概念和实体之间是可以相互表示的
前面我们知道了,程序处理的就是概念,那么将概念表示为实体,就可以编写为程序了
实体之间的关系
概念之间是有联系的,同样,实体之间也是有联系的
相对概念之间的联系,实体之间的联系更为简单
只有一对一,一对多,和多对多的联系
是不是感觉有点熟悉了,这不就是数据库表之间的联系吗?
没错,数据库表实际上是用来存放概念的,比如存放人员信息,课程信息,图片信息
即它实际上存放的就是实体
日常大多数程序,并不需要和数据库打交道
但并不意味着不和实体大交道
数据库只是存放实体的一种形式,并且实现了实体之间的一对一和一对多的关系
一对一,意味着,两个实体之间是一一对应的,比如每个人只有一个身份证,
一对多,意味着,两种实体之间具有包含的关系,比如一个家庭,由多个个人组成,或者一个学生可以同时选择多们课程
这种关联关系,在程序中会被处理成顺序处理,和循环处理
实体的表示
程序设计,需要像建筑图纸一样表示出来
对于实体,应该如何表示呢
通过参考各种资料,特别是学习了 《系统分析与设计方法》,并结合工作实践,我总结了一套表示实体的方法
在不同的设计阶段,需要用到不同的表示方式
一般分为 概要实体 和 详细实体
区别在于,概要实体不用关注实体的熟悉,而详细实体,需要关注实体的属性
今天我们只讨论概要实体
概要实体用一个方框表示:
实体
方框里面写实体的名称
实体之间的关系,用链接它们的线条表示
实体关系
线条两端,需要特别注意,靠近外面的表示一或者多
一 是一个小短线,多 是三分叉
靠近里面的小圈,表示 0 即可以不存在,小短线表示 1 即表示必须存在
例如第一条线左端,读作:有且有一个,右端读作:有且有一个或者多个
第二条线左端,读作:没有或仅有一个,右端读作:没有或者可以有多个
第三第四咋读,你可以试试吧,欢迎留言讨论
下面我们看一个实际的例子
实体关系
这幅图,描绘了一个学校系统的基本结构,通过图示,我们就能轻松的读取它所传递的信息
比如学校必须有一个或者多个班级,班级必须属于一个学校,
一个班级里可以没有学生或者有多个学生
一个学生可以不选或者选择多个课程
一个课程可能没有学生选择或者有多个学生选择
……
如果进一步展开,这些关系里实际上包含着业务规则,比如一个班级没有任何学生的状态可能是在开学前,还没学生报名的时间点
以及 不能存在一个没有班级的学校 等等
而不同的业务场景下,规则是不一样的,所有实体图,体现当前的业务场景,并不存在适应所有场景的实体图
这就是实体关系图,通过它不仅可以方便地记业务信息,而且还可以方便地交流
总结
今天我们梳理了程序设计中的实体部分,从程序处理的是什么开始,一直引导到程序处理的是概念这个观点,概念不仅是我们认识世界的工具,也是我们做程序设计的基础,抓住了实体,就像抓住了程序的纲。