5.6 类与对象的进一步讨论_第1页
5.6 类与对象的进一步讨论_第2页
5.6 类与对象的进一步讨论_第3页
5.6 类与对象的进一步讨论_第4页
5.6 类与对象的进一步讨论_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 5.6类与对象的进一步讨论11.基本数据类型与对象在一些面向对象程序设计语言中,系统提供给程序员使用的基本数据类型也是以类的形式提供的,然而在C这类混合型面向对象程序设计语言中,基本数据类型是独立处理的。虽然从形式上看,由int声明的变量i与由类类型CLOCK声明对象cima有所不同,但从本质上来看,基本数据类型声明的变量与对象是相同的,我们可以将这些变量也理解为对象,其属性即是变量的值,其操作即是C提供的基本操作。22.抽象数据类型类是构造面向对象程序的基本单位,面向对象程序设计的主要任务就是设计类并利用类组装程序。一个面向对象程序是由一组相关的类组成的,在C语言中还必须提供一个主函数ma

2、in( ).类是关于一组结构与行为相似的对象的共同特性的描述。然而类与对象是两个不同的概念:类是面向对象程序静态文本中的概念,而对象则是面向对象程序动态运行时的概念。3类是一组相似对象的抽象描述,尽管各个对象内部状态是不同的,但类摒弃了这些差异,抽取出这些对象的共性组成一个共同的概念。与此类似,在类之上还有一个抽象描述,我们称之为抽象数据类型(Abstract Data Type,简称ADT),ADT是一组相似类的抽象描述,而是一个类是ADT的具体实现。4ADT只是一个数学意义上的形式系统,它通过定义数据结构上允许的操作的性质来定义一种数据类型。其“抽象”表现在两方面:一是不给出数据的具体表示

3、而只给出值域,二是不给出操作的实现细节而只给出其性质(操作必须满足的前置断言和公理)。类作为ADT的一个实现,其“实现”的含义有两个方面:一是给出了具体的数据结构表示,二是用面向对象程序设计语言给出了完成操作的语句序列。一个类可以声明多个对象,一个ADT也允许有多个类来实现它。53.设计良好的类界面ADT为描述现实世界或思维世界中的实体提供了一种理想的工具:不是从对象的物理表示来定义一个对象,而是从它的行为来定义。即这个对象提供给其他对象的服务。从这个意义上,ADT可以作为类界面的一种描述。6我们在设计一个类的界面时应该至少从三方面作评价:类界面应该具有完备性类界面应该是无二义的类界面应该是无

4、冗余的74.再论对象类作为软件重用的基本构件(component)需要在不同环境下重复使用,但并不是每次使用时一个类都是百分之百合用,在新的环境下我们可能需要为原有的类增加一些新属性或新操作。这地当然可以从原有类复制一个副本作修改,但更好的方法是使用面向对象程序设计的继承(inheritance)机制。继承是面向对象程序设计的一大特色。有时我们想为一个类提供多种声明对象时的初始化方式,即为类设计多个构造函数。这种允许一个运算符或函数名字具有多重含义的机制称为重载(overloading)。8设想一下,我们现在需要设计一个整数集合类INTEGERSET,这可以是一个非常完善的新类型。但我们下一次可能又需要一个实数集合类、字符串集合类,甚至是学生记录集合类,如果我们又要重新设计新的REALSET、STRINGSET或STUDENTSET,这些集合的共性就无法描述出来了。C与Ada、Eiffel等语言均提供了类属(generics)机制,允许把类型也作为参数。C语言的构造函数不允许有返回值,如果我们在声明一个新对象时,由于无足够内存、初始值不正确等原因出现异常时,应该如何处理?(exception h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论