编辑: 黑豆奇酷 2019-07-08

2、数据对象的属性可存放在描述子中作为运行时数据对象的一部分,如:LISP、Prolog等,这里灵活性是主要目标.通常硬件不提供对描述子的直接表示.数据对象的表示通常独立于存储位置,这样给定类型的每个对象有相同的表示(除位置不同),通常用需要的内存块的尺寸(大小)来描述,同时也涉及属性和值在块中的布局.通常内存块的每一个字或字节的地址用于表示数据对象的位置. 基本数据类型的实现 操作的实现

1、直接作为硬件操作如:整数表示为硬件整数,+,-也直接用硬件实现.

2、作为过程或函数子程序如:平方根操作.如数据对象不使用硬件表示,则所有操作必须是软件仿真,通常以子程序的形式.

3、作为In-line(内嵌)代码序列.这也是操作的软件实现形式,但不是使用短小的子程序,而是将子程序中操作代码拷贝到程序中的调用点. 返回 数据对象的声明 编写程序时,程序员确定数据对象的名字和类型.还要确定:生命期、在程序中的活动范围、相关操作等.声明:一种程序语句,告知语言翻译器关于数据对象的信息.如声明语句放在特定的程序或类定义中,则指明了对象希望的生命期.声明可以是显式的,也可以是隐含的或缺省的.声明可以为数据对象赋上初始值,也可指定常量值. 数据对象的声明 操作的声明翻译时需要的关于操作的信息,主要是其基调signature.对基本操作,不需显式的参数类型和结果类型声明,是语言中固有的.对程序员定义的操作,则必须指定之.如:sub: int*float→float =>

float Sub (int x,float y) 声明的目的

1、选择存储表示声明可以给语言翻译器提供关于数据类型和数据对象属性的信息,使得翻译器可以确定数据对象的最佳的存储表示,从而减少整体的存储需求和被翻译程序的执行时间.

2、存储管理――声明使其更为高效声明可以提供关于数据对象生命期的信息,从而使得在程序执行过程中进行更高效的存储管理.如:在C语言中,在子程序头部声明的数据对象有相同的生命期,这样可以在进入子程序时分配一个整体的块来存放所有的数据对象,而在退出子程序时释放.其它动态创建的数据对象则需单独处理. 声明的目的

3、多态操作――包括重载和真正多态大多数语言均使用特殊的符号来表示一组不同的操作,具体操作的选择将依赖于参数的数据类型.此即所谓重载.如:+可以是整数加、实数加,甚至可用于字符和字符串操作.重载是一个在语法层次上处理的概念.由编译器处理.真正的多态通常是语义级别的概念,操作符的具体动作的确定是在运行时进行.如:函数语言中,类型可以作为参数带入,从而使函数的动作的选择依据类型实参而确定.恒等函数就是典型的多态.面向对象的继承机制也提供了所谓的包含多态性,即子类的对象可用于父类对象出现的地方.

4、类型检查――最重要的目标,属语义检查,目标是排错,分静态或动态类型检查.类型检查提供了很好的防止错误的机制. 返回 类型检查和类型转换 计算机硬件固有的数据存储表示通常不含类型信息.数据上的基本原始操作也不需类型检查.如一个位串:111001……0011可能是整数、实数、字符串、或指令,没有办法来区分.硬件提供的基本操作(如加法),不能检查其参数是否为整数,他们仅仅是位串.汇编语言或机器语言编程中常见的错误源于错误的操作类型,这种错误难于发现,因为操作并不以明显的方式失败.操作可进行,但结果没有意义.有时这种错误可在连续的一串操作后出错,有时程序停止也不出错. 类型检查 类型检查:指检查程序中每个操作均接收了正确数目的正确类型参数,可在运行时完成,即动态类型检查;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题