【译文】Thinking In Java (Introdution To Objects_The Progress of abstraction)01

2023-10-19 08:18

本文主要是介绍【译文】Thinking In Java (Introdution To Objects_The Progress of abstraction)01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                       身为一名合格的攻城狮能够编写程序是远远不够的,英文文献的阅读能力也是很重要的.如果在看懂的基础上还可以进行翻译,那无疑是更好的.于是我选择了一篇经典的《Thinking In Java》开始了我的英语学习之旅。并附上单词学习pdf图片与文字,供以后复习。

extrinsic                   外部

a side effect                副作用

alternative to               替代于

ultimately                  最终的

algorithmic                 算法的

constraint – based           基于强制

exclusively                  仅仅

manipulate                  处理

restrictive                   限制

domain                      领域

object-oriented                面向对象

represent                   描述

constraint                   限制

flexible                     灵活

analogy                     类比

summarize                   总结

Smaltalk                    程序

Variable                    变量

Component                 要素

Parlance                    术语

Synonymous                同义

Be guaranteed to             肯定会

Succinct                     简明

Concrete                     具体的

(concrete action)具体形状

Sense                      理解

Simulation                   模仿

Numerous                   很多

Account                     账户


《`

抽象的进步


      所有程序语言都提供抽象概念。可以认为,你所解决问题的难以程度,直接取决于

计的抽象方法的种类和质量。我所指的“种类”,是指“你正在以什么为抽象?“汇编语言是对底层机器很小的抽象。那些称之为”命令”语言的语言,比如FORTRANBASICC,都是对汇编语言的抽象。对于汇编语言,这些语言无疑是巨大的进步,但是这些语言的基础抽象概念还是需要你去根据机器结构进行抽象,而不是根据你要解决问题的本身进行抽象。程序验必须建立基于“机器模型”和“解决问题模型”的抽象联系;其中机器模型是指,在你的方案空间,也就是你要处理实施执行这个问题的地方,比如电脑;“解决问题模型”空间,也就是那个问题存在的地方,比如你的业务。这就需要攻城狮做出极大的努力,然而事实上,做出的这些努力都是与程序编写无关的外部内容。这样的程序难于编写并且难于维护。由此而产生的副作用便是创造了“程序方法”这门学科。

        替代机器模型的另一种方法,就是建立解决问题模型。早期语言,例如LISPAPL选择了一特殊角度看世界(所有问题最终都归于列表,或说所有问题最终都归于算法。)Prolog把所有问题都归于决策链。这些语言的程序创建都是基于强制性的,并且这些程序仅仅能处理图形符号。(后者更加具有限制性)基于本来就要用这些方法解决

的问题,他们显得很棒;但是当你跳出这个领域,他们就显的笨拙了。

          面向对象的方法,给攻城狮提供了工具,让其可以在问题空间中把要解决的问题

描绘成一种元素,而这正式正中方法进步的地方。这种描述很广泛,不会让攻城狮受限于问题的种类。我们把问题空间的元素,和他们在方案空间所代表的物体,成为“对象”。当然也有一些对象在问题空间没有与之对应的类。程序为了解决问题,允许其自身接受新的类型对象不断调整。所以当你阅读解决方案的代码时,也就是你在阅读这个问题本身。对比于之前的语言,这是一个更灵活更nb的抽象语言。因此,面向对象的程序允许你基于问题本身描述问题,而不是描述计算机如何运行这个解决方案。不过他也有和计算机相联系的地方:也就是,每一个对象都像一个小型计算机——他有状态也有操作,并且你可以让他去实施。无论如何【thisdoesn't seem like such a bad analogy to objects in the realworld,他们都有自己的属性和行为。


       AlanKay总结了程序的五种基本特点。第一个成功的面向对象语言,并且Java

是基于这个编写的。这些方法代表了纯粹的面向对象编程方法。:

1.所有东西都是对象 把对象想象成一种奇特的变量,它储存着数据,不过你可以作出要求,然她展现自身的操作。理论上讲,你可以把所有你要解决问题里的概念性的组件(比如狗,建筑,服务,等等)在程序中将其表达为一个对象。

2.程序是一堆对象的组合,通过发送信息,告诉彼此应该做什么。为了向对象提出请求,需要给该对象发送信息。更确切的讲,你可以把信息当做调用该对象特有的方法。

3.每一个对象都是由其他对象组成的储存空间。 用另一种方法讲,你创建的新的对象其

实就是把其他对象放到一个包里建立出来的。因此,尽管对象很简单,你也可以在程序

中建立起相当复杂的东西。

4.每一个对象都有一个类(type)。 用术语讲,每个对象(instance)都是类class)的实例,这里的类(class)和(type)是同义的。一个类的最重要的属性区别就是,他能接收什么信息。

5.基于同一个类的对象可以接收相同的信息。这实际是一种【loadedstatement,你在不就就会理解看到。圆这个类实际上也是形状这个类,一个圆肯定可以接收形状的信息。这也就意味着,你只需要编写形状这个代码,就可以自动控制符合形状描述的其他对象。【substituability】是面向对象的重要概念之一。


Booch给对象提供了一种更为简洁的描述:

"一个对象具有状态,行为和定义”

这也就意味着一个对象具有内在的数据(赋予它状态),方法(提供行为),并且每一个对象都是独特的以和其他对象区分开——具体的理解也就是,每一个对象在内存中都有一个特定的地址。




这篇关于【译文】Thinking In Java (Introdution To Objects_The Progress of abstraction)01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238536

相关文章

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.