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