面向对象语言概论(一)

本书是我们上面向对象类型理论的教材。当时上这门课时,心里满不以为然,觉得自己的 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变量表示这 个对象自己。

时间: 2024-12-31 23:43:23

面向对象语言概论(一)的相关文章

面向对象语言概论(四)

四,彻底划清界限(继续分离Subclassing和Subtyping) 在第二节我们讨论了部分分离Subclassing和subtyping的方法,即subclassing-implies-subtyping. 现今的许多面向对象语言,如Java, C#都是采用了这种技术.除此之外,还有一种进一步分离Subclassing和subtyping的方法.这种被称作inheritance-is-not-subtyping的方法通过完全割裂subclassing和subtyping之间的联系而在更大程度

面向对象语言概论(三)

传统的基于类的面向对象语言的一个主要特点就是inheritance, subclassing和subtyping之间的密不可分的联系.很多的面向对象语言的语法,概念,就是从这三者而来的.比如说,通过subclassing, 你可以继承父类的一些方法,而同时你又可以在子类中改写父类的方法.这个改写过的方法,通过subtyping, subsumption, 又可以从一个类型是父类的对象去调用. 但是,inheritance, subclassing, subtyping这三者并不是永远和睦相处的.

面向对象语言概论(二)

4. Subsumption和Dynamic Dispatch (译者按:呵呵,黔驴技穷,找不到合适的翻译了) 从上述的几个例子来看,似乎子类只是用来从父类借用一些定义,以避免重复.但是,当我们考虑到subsumption, 事情就有些不同了.什么是Subsumption呢?请看下面这个例子: var myCell: InstanceTypeOf(cell) := new cell; var myReCell: InstanceTypeOf(reCell) := new reCell; proc

连载:面向对象葵花宝典:思想、技巧与实践(2) - 面向对象语言发展历史

Simula  面向对象技术最早是在编程语言Simula中提出的.1967年5月20日,在挪威奥斯陆郊外的小镇莉沙布举行的IFIP TC-2 工作会议上,挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布了Simula 67语言.Simula 67被认为是最早的面向对象程序设计语言,是面向对象的开山祖师,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象.类.继承,但它的实现并不是很完整.  Simula虽然最早提出面向对象的概念,但因为其本身复杂,比较难学,

用面向对象语言进行面向过程的编程

问题描述 教研室的项目多为开发MIS,开发过程中采用结构化的开发方法(结构化的分析+结构化的设计),但是编程却采用.Net平台,使用C#语言,C#语言是一种纯的面向对象的语言呀,在定义类的时候,我们程序员都是自己根据自己的感觉去定义.这样会不会有不妥的地方呀? 解决方案 解决方案二:面向对象编程语言,本来就兼容全部面向过程编程方法.它们不是对立的,而是扩展和提升.中学生也可以学弹钢琴,而钢琴师也可以弹钢琴.它们的差别,跟钢琴没有关系.解决方案三:面向对象的语言就不可以结构化编程了?!解决方案四:

Objeck Programming Language 2.1.3发布 面向对象语言

Objeck Programming Language是一个具有与Java.C#和Pascal关系功能特性的面向对象的计算机语言.在该语言中,所有http://www.aliyun.com/zixun/aggregation/18278.html">数据类型都被视为对象.语言由一个编译器和一个附带内存管理和JIT编译器的虚拟机组成. Objeck Programming Language 2.1.3该版本主要集中在错误修正和性能提升.增强了类库.包括界面的全面支持,为String类中复制的

Objeck Programming Language 2.0.3发布 面向对象语言

Objeck Programming Language是一个具有与Java.C#和Pascal关系功能特性的面向对象的计算机语言.在这种语言中,所有http://www.aliyun.com/zixun/aggregation/18278.html">数据类型都被视为对象.语言由一个编译器和一个附带内存管理和JIT编译器的虚拟机组成. Objeck Programming Language 2.0.3版本修复了一个导致VM损坏的严重错误.2.0.x的版本,加强代码自动嵌入的方法,还有包括系

汉语——世界上唯一的面向对象语言

声明:除了汉语之外,我只会一点英语和日语.因此说是"唯一"略显夸张,有吸引眼球的嫌疑,请大家原谅.严谨地说,标题应该是"汉语是一种面向对象的高级语言".   在网上看到过很多有关汉语和英语比较的文章,他们写的都很不错,并且列举了大量的事例来证明汉语或者英语是优秀的.不过,我想用计算机软件设计的观点,来理性地分析汉语和英语的优缺点.经过分析,我可以断言:汉语是世界上唯一一种面向对象的高级语言.而以英语为首的其他语言,则属于密码型的索引语言.下面通过问答的方式来解释这种

AS代码2.0:面向对象模型

对象 自从几年前在Flash中引入动作脚本语言(Action Script)以来,它已经有了很大的发展.每一次发布新的Flash版本,动作脚本语言都增加了关键字.方法和其它语言元素.然而,与以前发布Flash版本不同,Flash MX 2004和Flash MX Professional 2004的动作脚本语言2.0引入了一些新的语言元素,可以更加标准的方式实施面向对象的编程,这些语言元素使核心动作脚本语言的能力显著增强. 动作脚本语言2.0并非一种新的语言.更确切地说,它由一套核心语言元素组成