1.2 类与抽象数据类型
类是面向对象编程(www.cppentry.com)中强有力的结构,它直接支持抽象数据类型的设计、实现和使用。本节我们首先概述类这种程序设计结构,然后讨论什么是抽象数据类型以及类如何支持抽象数据类型。同时,通过与内建的基本数据类型进行比较,我们分析采用抽象数据类型进行程序设计的优点。
1.2.1 信息隐藏
设计现代软件产品是一项富有挑战性的工作,想象一下如何设计一套浏览器、字处理器、数据库系统、电子表格系统和数据通信软件包等。这些产品往往需要频繁的更新换代,有时候改动非常大。用户要如何适应这种频繁的变化呢?通常,一套软件产品希望保持一套比较恒定的接口(interface)。假设我们设计了一个字处理器软件,在产品升级后仍然支持打开文档、保存文档、打印文档、拷贝文档、格式化文档、拼写检查等操作。因此这个字处理器软件的接口就是用户通过命令而获得的上述功能集合。我们说接口是公有(public)的,即接口对用户是可见的。现代软件产品中非公有的部分就是软件的内部实现。一名经验丰富的程序员可能会猜到一个字处理器软件是如何实现的,但软件厂商通常会将软件的实现细节隐藏起来。原因有两个:第一,如果用户要了解成百上千的内部细节才能使用该产品的话就太强人所难了。第二,厂商可能需要对一些已知的错误进行修正,在推出新的版本之前需将实现细节隐藏起来。我们说实现是私有(private)的,即实现对用户是不可见的。总之,接口暴露给用户,而实现对用户隐藏。现代软件产品设计的一个目标就是保持一套相对恒定的接口,这样即使软件的私有实现改变或增强了,用户的操作仍然保持不变(或变动很少)。
面向对象语言中的类是支持信息隐藏(Information Hiding)的模块。C++(www.cppentry.com)语言使用关键字public和private来对类的属性和操作进行存取访问控制,其中public关键字用于显现类的接口,private关键字用于隐藏类的实现。由于C++(www.cppentry.com)的类直接支持信息共享,用C++(www.cppentry.com)语言的类机制进行程序设计时实际上就是把C++(www.cppentry.com)当成面向对象语言来使用。因此,通过类这种机制,面向对象语言可以很好满足现代软件系统的需求。