[Java笔记]ThinkingInJava一书中Bruce Eckel关于OOP的描述

//本文编译自BruceEckel的Thinking in Java, 3rd edition一书

编程语言发展的历史上,汇编语言是对机器语言的抽象,Basic/C/Fortran这种命令式语言(Imperative Language)是对汇编的抽象,C/Basic/Fortran较之汇编有了较大的提升,但用这些语言书写程序时仍然要花很大气力在机器模型和问题模型之间建立联系,这种在问题实体和问题解决系统之间做映射的过程使得程序难写且不易维护。

Lisp和APL选择了一些世界观,如“所有的问题归根结底是列表”,“所有的问题都是可演算的”。而Prolog把所有的解决问题看作是做作一连串的选择……这些各种各样的编程语言所代表的观点在各自擅长的领域表现得不错,但一旦出了作者设计该语言时所针对的领域便力不从心。

直到OOP的出现,面向对象为程序员提供了工具来表示问题中的元素,这些工具能用在各种各样的问题当中,我们把这些元素及其在程序中的表示叫做对象(objects)。这样通过增加新类型的对象,程序可以更加适应问题的实际需求(原文:The idea is that the program is allowed to adapt itself to the lingo of the
problem by adding new types of objects.)。而描述问题解决方案的程序实际上也描述了问题本身。这种强有力的抽象超越了以前的所有尝试。因此,面向对象允许用问题的语言而不是机器的语言描述问题。

这里作者Bruce Eckel引用了Alan Kay总结的Smalltalk的五个特性

(*Smalltalk是历史上第一个成功的面向对象编程语言,Java和Objective-C都从中获得了灵感* 自注)

1.万物皆对象(Everyingthing is an object.)

2.程序是一群对象在互相传递信息(A program is a bunch of objects telling each other
what to do by sending messages.)[注:Smalltalk是典型的消息结构的编程语言]

3.每个对象所存储的内容都是由其他对象组成的(Each object has its own memory made up of other
objects.)

4.每个对象都有类型(Every object has a type.)

5.同一种类型的对象总是可以接受同类的消息(All objects of a particular type can receive the same
messages.)

 

Booch(UML发明者之一)则有言简意赅的描述:

对象有状态,行为和标识。 (An object has state, behaviour and identity.)

 

 

[未完待续……]

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值