From 3207cca9fc11267792f3e25d8ae7c3ddad509422 Mon Sep 17 00:00:00 2001 From: LingCoder Date: Tue, 1 Jan 2019 16:28:07 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=AB=A0=20=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E7=BB=93=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book/01-What-is-an-Object.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/book/01-What-is-an-Object.md b/book/01-What-is-an-Object.md index 110e699..f976691 100644 --- a/book/01-What-is-an-Object.md +++ b/book/01-What-is-an-Object.md @@ -14,7 +14,7 @@ ## 抽象 -所有编程语言都提供一种“抽象”的方法。从某种程度上来说,解决问题的复杂性与抽象的种类和质量直接相关。这里的“种类”意思是:你准备对什么进行抽象?汇编语言是对机器底层的一种少量抽象。后来的许多“命令式”语言(如FORTRAN,BASIC 和 C)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了长足的进步,但它们的抽象原理依然要求我们着重考虑计算机的结构,而非问题本身的结构。 +所有编程语言都提供一种“抽象”的方法。从某种程度上来说,解决问题的复杂性与抽象的种类和质量直接相关。这里的“种类”意思是:你准备对什么进行抽象?汇编语言是对机器底层的一种少量抽象。后来的许多“命令式”语言(如 FORTRAN,BASIC 和 C)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了长足的进步,但它们的抽象原理依然要求我们着重考虑计算机的结构,而非问题本身的结构。 在机器模型(“解决方案空间”)与实际解决的问题模型(“问题空间”)之间,程序员必须建立起一种关联。这个过程要求人们付出较大的精力,而且由于它脱离了编程语言本身的范围,造成程序代码很难编写,而且要花较大的代价进行维护。由此造成的副作用便是一门完善的“编程方法”学科。 @@ -295,6 +295,11 @@ Java 的异常处理机制在编程语言中脱颖而出。在 Java 中,异常 ## 本章小结 +面向过程程序包含数据定义和函数调用。要找到程序的意图,你必须要在脑中建立一个模型,弄清函数调用和更底层的概念。这些程序往往容易混淆,因为表达式的术语更多地面向计算机而不是我们要解决的问题。这就是我们在设计程序时需要中间表示的原因。OOP 在面向过程编程的基础上增加了许多新的概念,所以有人会认为使用 Java 来编程会比同等的面向过程编程要更复杂。在这里,我想给大家一个惊喜:通常按照 Java 规范编写的程序会比面向过程程序更容易被理解。 + +你看到的是对象的概念,这些概念是站在“问题空间”的(而不是站在计算机角度的“解决方案空间”),以及发送给对象以指示该空间中的活动的信息。面向对象编程的一个优点是:设计良好的 Java 程序代码更容易被人阅读理解。由于 Java 类库的复用性,通常程序要写的代码也会少得多。 + +OOP 和 Java 不一定适合每个人。评估自己的需求以及与现有方案作比较是很重要的。请充分考虑后再决定是不是选择 Java。如果在可预见的未来,Java 并不能很好的满足你的特定需求,那么你应该去寻找其他替代方案(特别是,我推荐看 Python)。如果你依然选择 Java 作为你的开发语言,我希望你至少应该清楚你选择的是什么,以及为什么选择这个方向。