本书是我们上面向对象类型理论的教材。当时上这门课时,心里满不以为然,觉得自己的 C++和OO已经颇有造纸,C++和Java的类型系统不说倒背如流,也是轻车熟路,上这么一门课 不是白拿学分?哈哈!
但一上起来,才发现自己竟如井底之蛙一样。老天,原来就这 么简单的面向对象竟有这么多说道!原来除了C++, Java, 面向对象还有这么多没见过甚至没 想过的东西!
前几章概论,勉强还都搞定了。但后面上到类型系统的建模,subject reduction的证明,就发现自己就象回到了本科时代,这,这,这怎么都是数学啊!
这两天心血来潮。就想把它翻译一下。后面艰深的地方自觉功力太浅,就不不自量力了。不 过,倒可以把前面几章的概论翻译一下,如果能起到帮助大家开阔眼界的作用,也就没白费 劲。
第二章,基于类的面向对象语言
基于类的面向对象语言是面向对象世界 里的主流。它包括:
Simula, 第一个面向对象语言
Smalltalk, 第一个支持动 态类型的语言
C++, 它的大部分基于类的特性继承自Simula.
等等等等。
与基于类的语言相对应的是基于对象的面向对象语言。这里“基于对象” 的概念和把Visual Basic叫做基于对象的概念是不同的。这里的“基于对象”是 指一个只以对象为中心,没有类的概念的语言,类似Python之类的语言。
现在,我们 来介绍一下基于类的面向对象语言的一些共同特征。
1.类和对象
让我们先看 一个类的定义:
class cell is
var contents: Integer :=0;
method get(): Integer is
return self.contents;
end;
method set(n:Integer) is
self.contents := n;
end;
end;
一个类是用来描述所有属于这个类的对象的共同结构的。这个cell类表 示的对象拥有一个叫做contents的整数属性(attribute),这个属性被初始化成0。它还描述 了两个操作contents的方法。Get和set. 这两个方法的内容都是很直观的。Self变量表示这 个对象自己。