11.1.3 面向对象设计语言的技术特点
面向对象设计语言,借鉴了20世纪50年代的人工智能语言LISP语言,引入了动态绑定的概念,以及交互式开发环境的思想。面向对象设计语言开始于20世纪60年代的离散事件模拟语言SIMULA67,引入了类的要领和继承,成形于20世纪70年代的Smalltalk。
面向对象设计语言的发展有两个方向:一种是纯面向对象设计语言,如Smalltalk、EIFFEL等;另一种为混合型面向对象设计语言,他是在过程式语言或者其他语言中,加入类、继承等成分,如C++、Objective-C等。
下面介绍在选择面向对象设计语言时应该着重考察的一些技术特点。
(1)面向对象设计语言具有支持类和对象概念的定义与实现机制。几乎全部的面向对象设计语言,都提供了类的定义机制和对象的动态创建功能。类的定义是面向对象设计语言的基础,也是对象概念实现的描述。对象的动态创建可以通过类中定义的操作来创建本类的对象,也可以通过特殊的操作按定义创建对象。
(2)面向对象设计语言具有实现继承的语言机制。继承是面向对象程序设计的一个重要特色,是实现代码重用的重要手段。不同的面向对象设计语言提供了不同的继承实现机制。
(3)面向对象设计语言具有实现属性和服务的机制。面向对象设计语言支持消息连接、控制服务可见性的机制。通过消息的发送实现对象之间的相互协作,消息的格式和服务的调用方式上不同的语言有不同的实现方法。
(4)面向对象设计语言具有参数化类。参数化类是指使用一个或多个类型去参数化一个类的机制。有了这种机制,程序员就可以先定义一个参数化的类模板(即在类定义中包含以参数形式出现的一个或多个类型),然后把数据类型作为参数传递进来,从而把这个类模板应用在不同的应用程序中,或用在同一应用程序的不同部分。(https://www.daowen.com)
(5)面向对象设计语言提供类型检查。面向对象设计语言的编译系统在编译时,对类型的匹配检查的严格程度,是判断语言实现能力的一个重要指标。程序设计语言按照编译时进行类型检查的严格程度分为两类:一类是弱类型,语言仅要求每个变量或属性隶属于一个对象;一类是强类型,语言要求每个变量或属性必须准确地属于某个特定的类,当今大多数新语言都是强类型的。
强类型语言有两个优点:一方面表现在有利于在编译时发现程序错误,有助于提高软件的可靠性和运行效率;另一方面,增加了优化的可能性。
通常使用强类型编译型语言开发软件产品,弱类型是用于解释的解释型语言能快速开发原型。
(6)面向对象设计语言提供类库。如何去提高软件的可重用性?大多数面向对象设计语言都提供一个实用的类库,类库中包含实现通用数据结构(如动态数组、表、队列、栈、树等)的类,我们把这些类称为包容类。在类库中,还可以找到实现各种关联的类。更完整的类库通常还提供独立于具体设备的接口类(例如,输入/输出流)。此外,用于实现窗口系统的用户界面类也非常有用,它们构成一个相对独立的图形库。
(7)面向对象设计语言提供持久对象的保存。持久对象是可以长期保存的数据对象,与程序执行的生存周期无关。想要长时间保存数据有两个原因:一是实现不同程序之间的数据传输;二是恢复被中断程序的运行。
(8)面向对象设计语言提供封装与打包。可视化开发环境是目前应用最广泛地开发环境,良好的开发环境可以提高软件生产效率,保证软件产品的质量。
(9)面向对象设计语言提供可视化开发环境。不同的语言对封装的支持程度存在一些差异,允许一个类的代码去直接访问另一个类的属性以及适应继承不当等都可能损害封装。