Skip to content

Commit c2f99c8

Browse files
committed
校对翻译
1 parent 9d16479 commit c2f99c8

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

docs/book/01-What-is-an-Object.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
1010
计算机革命的起源来自机器。编程语言就像是那台机器,它不仅是我们思维的放大工具和另一种表达媒介,更像我们思想的一部分。语言的灵感来自其他形式的表达,如写作,绘画,雕塑,动画和电影制作。编程语言就是创建应用程序的思想结构。
1111

12-
面向对象编程(*Object-oriented programming OOP*)是一种编程思维方式和编码架构。本章讲述 OOP 的基本概述。如果读者对不太理解,可先行跳过本章。等你对编程具有一定理解后,请务必再回过头来看。因为这样你才能理解面对对象编程的重要性以及如何使用它来设计你的程序
12+
面向对象编程(*Object-oriented programming OOP*)是一种编程思维方式和编码架构。本章讲述 OOP 的基本概述。如果读者对不太理解,可先行跳过本章。等你具备一定编程基础后,请务必再回头看。只有这样你才能深刻理解面向对象编程的重要性及设计方式
1313

1414
## 抽象
1515

16-
所有编程语言都提供一种“抽象”的方法。从某种程度上来说,解决问题的复杂性与抽象的种类和质量直接相关。这里的“种类”意思是:你准备对什么进行抽象?汇编语言是对机器底层的一种少量抽象。后来的许多“命令式”语言(如 FORTRAN,BASIC 和 C)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了长足的进步,但它们的抽象原理依然要求我们着重考虑计算机的结构,而非问题本身的结构。
16+
所有编程语言都提供抽象机制。从某种程度上来说,问题的复杂度直接取决于抽象的类型和质量。这里的“类型”意思是:抽象的内容是什么?汇编语言是对底层机器的轻微抽象。接着出现的“命令式”语言(如 FORTRAN,BASIC 和 C)是对汇编语言的抽象。与汇编相比,这类语言已有了长足的改进,但它们的抽象原理依然要求我们着重考虑计算机的结构,而非问题本身的结构。
1717

18-
在机器模型(“解决方案空间”)与实际解决的问题模型(“问题空间”)之间,程序员必须建立起一种关联。这个过程要求人们付出较大的精力,而且由于它脱离了编程语言本身的范围,造成程序代码很难编写,而且要花较大的代价进行维护。由此造成的副作用便是一门完善的“编程方法”学科。
18+
程序员必须要在机器模型(“解决方案空间”)和实际解决的问题模型(“问题空间”)之间建立起一种关联。这个过程既费精力,又脱离编程语言本身的范畴。这使得程序代码很难编写,维护代价高昂。同时还造就了一门副产业的“编程方法”学科。
1919

2020
为机器建模的另一个方法是为要解决的问题制作模型。对一些早期语言来说,如 LISP 和 APL,它们的做法是“从不同的角度观察世界”——“所有问题都归纳为列表”或“所有问题都归纳为算法”。PROLOG 则将所有
2121
问题都归纳为决策链。对于这些语言,我们认为它们一部分是“基于约束”的编程,另一部分则是专为
@@ -37,10 +37,9 @@ Grady Booch 提供了对对象更简洁的描述:一个对象具有自己的
3737

3838
## 接口
3939

40-
亚里士多德(*Aristotle*)或许是认真研究“类型”概念的第一人,他曾谈及“鱼类和鸟类”的问题。是世界首例面向对象语言 Simula-67 中,第一次用到了这样的一个概念:
41-
所有对象——尽管各有特色——都属于某一系列对象的一部分,这些对象具有通用的特征和行为。在Simula-67 中,首次用到了 `class` 这个关键字,它为程序引入了一个全新的类型(`class` 和 type 通常可互换使用,有些人进行了进一步的区分,他们强调“类型”决定了接口,而“类”是那个接口的一种特殊实现方式)。
40+
亚里士多德(*Aristotle*)大概是第一个认真研究“类型”的哲学家,他曾提出过“鱼和鸟类”这样的概念。所有对象都是唯一的,但同时也是具有相同的特性和型位的对象所归属的类的一部分。这种思想被首次应用于第一个面向对象编程语言 Simula-67,它在程序中使用基本关键字 **class** 来引入新的类型(class 和 type 通常可互换使用,有些人对它们进行了进一步区分,他们强调 type 决定了接口,而 class 是那个接口的一种特殊实现方式)。
4241

43-
Simula 是一个很好的例子。正如这个名字所暗示的,它的作用是“模拟”(*Simulate*“银行出纳员”这
42+
Simula 是一个很好的例子。正如这个名字所暗示的,它的作用是“模拟”(*Simulate*类似“银行出纳员”这
4443
样的经典问题。在这个例子里,我们有一系列出纳员、客户、帐号以及交易等。每类成员(元素)都具有一
4544
些通用的特征:每个帐号都有一定的余额;每名出纳都能接收客户的存款;等等。与此同时,每个成员都有
4645
自己的状态;每个帐号都有不同的余额;每名出纳都有一个名字。所以在计算机程序中,能用独一无二的实
@@ -53,7 +52,7 @@ Simula 是一个很好的例子。正如这个名字所暗示的,它的作用
5352
在的地方)的元素与“方案空间”(对实际问题进行建模的地方,如计算机)的元素之间建立理想的“一对
5453
一”的映射关系。
5554

56-
那么如何利用对象完成真正有用的工作呢?必须有一种办法能向对象发出请求,令其解决一些实际的问题,比如完成一次交易、在屏幕上画一些东西或者打开一个开关等等。每个对象仅能接受特定的请求。我们向对象发出的请求是通过它的“接口”(Interface)定义的,对象的“类型”或“类”则规定了它的接口形式。“类
55+
那么如何利用对象完成真正有用的工作呢?必须有一种办法能向对象发出请求,令其解决一些实际的问题,比如完成一次交易、在屏幕上画一些东西或者打开一个开关等等。每个对象仅能接受特定的请求。我们向对象发出的请求是通过它的“接口”(*Interface*)定义的,对象的“类型”或“类”则规定了它的接口形式。“类
5756
型”与“接口”的对应关系是面向对象程序设计的基础。
5857

5958
下面让我们以电灯泡为例:

0 commit comments

Comments
 (0)