数据模型

数据模型

  • 对象可以采用的值,例如很多数据模型包含具有整数值的对象,数据模型的这个方面是静态的,它告诉我们对象能接受哪些值,编程语言数据模型的这一静态部分通常被称为类型系统。
  • 数据的运算。例如执行加法这样的运算。模型的这一方面是动态的,它告诉我们改变值和创建新值得方式。

编程语言数据模型

每种语言的数据类型各不相同。基本原则是:每个程序都可以访问我们用于表示存储区域的“框”。每个框都具有一个类型,比如int或者char。框中可以存储类型对应的值,通常将可以存储到这些框中的值称为数据对象。框的名称视作该程序的变量。

C语言中常见的静态数据类型:整数,浮点数,字符,数组,结构,指针……

对数据可执行的操作:整数和浮点数的常规算术运算,数组或结构元素的存取操作以及指针的解指引。
指针的解指引:找到指针所指向的元素

C语言中整数表可以用链表这种数据结构表示,表的元素被存储在链表的节点中,链表及其节点可用如下类型声明定义:

1
2
3
4
5
typedef struct CELL *LIST;
struct CELL{
int element;
struct LIST next;
}

该声明定义了有着两个字段的自引用结构CELL,第一个字段是element,存放着表中元素的值,而且其类型是int。

每个CELL的第二个字段是next,存放着指向节点的指针。LIST类型其实是指向CELL的指针,因此,LIST类型的结构可以通过它们的next字段链接起来,构成了所谓的链表。

数据类型和数据结构

表和链表是不同的概念。
表示数学抽象(数据模型)
链表是种数据结构,通常用于c语言以及相似语言中的数据结构,用来表示程序中的抽象表。
有些编程语言不需要用数据结构表示抽象表,比如:
表(a1,a2,…,an)在Lisp语言中可以直接表示为[a1,a2,……,an],而在Prolog语言中也可以表示为类似形式。

系统软件中的数据模型

操作系统的功能:管理和调度计算机的资源。
像UNIX这样的操作系统,其数据类型具有文件,目录和进程这样的概念。

  • 数据本身存储在文件中,在UNIX系统中,文件都是字符串和字符。
  • 文件被组织成目录,目录就是文件和其他目录的集合。目录和文件形成了树形结构,而文件处在树叶的位置。
  • 进程是指程序的独立执行,进程接受流程作为输入,并产生流作为输出。在UNIX中,进程可以通过管道连接,让下一个进程的输出作为下一个进程的输入,这种进程组合可看做有着自己输入输出的独立进程。

文本编辑器中数据模型

文本编辑器的每种数据模型都结合了文本字符串的表示和对文本的编辑操作。
这种数据模型通常会包含行的概念,行和多数文件一样,就是字符串,不过,与文件不同的是,行可能有着与其相关联的行号,行还可能被组织成更大的单元(比如段落),而且对行进行的操作通常适用于行内的任何位置,不会像多数常见的文件操作那样,只是对前部进行操作。

电子表格 视频游戏

每个调用程序都必须遵守被调用程序的数据模型,见到的各种数据模型彼此间截然不同,无论是用来表示数据的原语,还是向用户提供的数据操作方式,全部不同。而且各数据模型都是通过数据结构和使用它们的程序,用某种编程语言实现的。

电路的数据模型—命题逻辑

计算机是由称为门的基本元件组成的,每个门都有着一个或者多个输入以及一个输出,输入输出的值只能是0,1.门具有一个简单的功能,比如AND运算(与运算),就是如果所有输入都是1,那么输出就是1,而如果至少有一个输入为0 ,那么输出就是0。从某个抽象层来说,计算机设计就是选择如何连接门来执行计算机基本运算的过程。

解释数据模型静态方面和动态方面的差异

静态基本是描述性的,但是动态会有相关的运算过程。
比如想要做一碗糖醋排骨,去菜场买了糖,买了醋,买了排骨,这些事静态方面的,然后买回来做的过程是动态的,要把排骨腌制,要上火,烧,最后才会出现想要的。

描述最喜欢的视频游戏的数据模型,区分其模型的静态方面和动态方面。提示:静态部分不仅是指计分牌上不会移动的部分。例如:在《吃豆人》游戏里,静态部分不仅包括地图,还包括强化药丸和怪物等。

最近在玩王者荣耀和荒野行动,里面人物的角色,地图,怪物,设备,草地,树木。。。。。。都是静态部分,但是各种技能就是动态部分了。

描述最喜欢的文本编辑器的数据模型

sublime

描述电子表格程序的数据模型