Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

Thinking_in_java中文第4版(Word完全版) PDF 下载


分享到:
时间:2022-02-15 09:54来源:http://www.java1234.com 作者:转载  侵权举报
Thinking_in_java中文第4版(Word完全版) PDF 下载
失效链接处理
Thinking_in_java中文第4版(Word完全版) PDF 下载



本站整理下载:
提取码:masa 
 
 
相关截图:
 
主要内容:

第 1 章 对象入门
“为什么面向对象的编程会在软件开发领域造成如此震憾的影响?” 
面向对象编程(OOP 
)具有多方面的吸引力。对管理人员,它实现了更快和更廉价的开发与维护过程。对分析与设计人
员,建模处理变得更加简单,能
生成清晰、易于维护的设计方案。对程序员,对象模型显得如此高雅和浅显。此外,面向对象工具
以及库的巨大威力使编程成为一
项更使人愉悦的任务。每个人都可从中获益,至少表面如此。
如果说它有缺点,那就是掌握它需付出的代价。思考对象的时候,需要采用形象思维,而不是程序
化的思维。与程序化设计相比, 
对象的设计过程更具挑战性— — 
特别是在尝试创建可重复使用(可再生)的对象时。过去,那些初涉面向对象编程领域的人都必须
进行一项令人痛苦的选择: 
(1) 选择一种诸如 Smalltalk 的语言,“出师”前必须掌握一个巨型的库。
(2) 选择几乎根本没有库的 C++(注释 ),然后深入学习这种语言,直至能自行编写对象库。 
:幸运的是,这一情况已有明显改观。现在有第三方库以及标准的 C++库供选用。
事实上,很难很好地设计出对象— — 从而很难设计好任何东西。因此,只有数量相当少的“专家” 
能设计出最好的对象,然后让其他人享用。对于成功的 OOP 
语言,它们不仅集成了这种语言的语法以及一个编译程序(编译器),而且还有一个成功的开发环境,
其中包含设计优良、易于使
用的库。所以,大多数程序员的首要任务就是用现有的对象解决自己的应用问题。本章的目标就是
向大家揭示出面向对象编程的概
念,并证明它有多么简单。
本章将向大家解释 Java 
的多项设计思想,并从概念上解释面向对象的程序设计。但要注意在阅读完本章后,并不能立即编
写出全功能的 Java 
程序。所有详细的说明和示例会在本书的其他章节慢慢道来。
1.1 抽象的进步
所有编程语言的最终目的都是提供一种“抽象” 
方法。一种较有争议的说法是:解决问题的复杂程度直接取决于抽象的种类及质量。这儿的“种类”
是指准备对什么进行“抽象” 
?汇编语言是对基础机器的少量抽象。后来的许多“命令式”语言(如 FORTRAN,BASIC 和 C 
)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了长足的进步,但它们的抽象原理依
然要求我们着重考虑计算机的结
构,而非考虑问题本身的结构。在机器模型(位于“方案空间”)与实际解决的问题模型(位于“问
题空间” 
)之间,程序员必须建立起一种联系。这个过程要求人们付出较大的精力,而且由于它脱离了编程
语言本身的范围,造成程序代码
很难编写,而且要花较大的代价进行维护。由此造成的副作用便是一门完善的“编程方法”学科。
为机器建模的另一个方法是为要解决的问题制作模型。对一些早期语言来说,如 LISP 和 APL,它
们的做法是“ 
从不同的角度观察世界”— — “所有问题都归纳为列表”或“所有问题都归纳为算法”。PROLOG 
则将所有问题都归纳为决策链。对于这些语言,我们认为它们一部分是面向基于“强制” 
的编程,另一部分则是专为处理图形符号设计的。每种方法都有自己特殊的用途,适合解决某一类
的问题。但只要超出了它们力所
能及的范围,就会显得非常笨拙。
面向对象的程序设计在此基础上则跨出了一大步,程序员可利用一些工具表达问题空间内的元素。
由于这种表达非常普遍,所以不
必受限于特定类型的问题。我们将问题空间中的元素以及它们在方案空间的表示物称作“对象”
(Object 
)。当然,还有一些在问题空间没有对应体的其他对象。通过添加新的对象类型,程序可进行灵活的
调整,以便与特定的问题配合
。所以在阅读方案的描述代码时,会读到对问题进行表达的话语。与我们以前见过的相比,这无疑
是一种更加灵活、更加强大的语
言抽象方法。总之,OOP 
允许我们根据问题来描述问题,而不是根据方案。然而,仍有一个联系途径回到计算机。每个对象
都类似一台小计算机;它们有自
己的状态,而且可要求它们进行特定的操作。与现实世界的“对象”或者“物体”相比,编程“对
象” 
与它们也存在共通的地方:它们都有自己的特征和行为。
Alan Kay 总结了 Smalltalk 的五大基本特征。这是第一种成功的面向对象程序设计语言,也是 Java 
的基础语言。通过这些特征,我们可理解“纯粹”的面向对象程序设计方法是什么样的: 
(1) 
所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。
理论上讲,可从要解决的问题身
上提出所有概念性的组件,然后在程序中将其表达为一个对象。
(2) 程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,
需向那个对象“发送一条消息” 
。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。
(3) 
每个对象都有自己的存储空间,可容纳其他对象。或者说,通过封装现有对象,可制作出新型对象。
所以,尽管对象的概念非常简
单,但在程序中却可达到任意高的复杂程度。
(4) 每个对象都有一种类型。根据语法,每个对象都是某个“类”的一个“实例”。其中,“类”(Class)
是“类型”(Type 
)的同义词。一个类最重要的特征就是“能将什么消息发给它?”。
(5) 同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法,大家不久便能理解。由于
类型为“圆”(Circle 
)的一个对象也属于类型为“形状”(Shape)的一个对象,所以一个圆完全能接收形状消息。这意
味着可让程序代码统一指挥“形状
”,令其自动控制所有符合“形状”描述的对象,其中自然包括“圆”。这一特性称为对象的“可替
换性”,是 OOP 最重要的概念之一。
一些语言设计者认为面向对象的程序设计本身并不足以方便解决所有形式的程序问题,提倡将不同
的方法组合成“ 
多形程序设计语言”(注释 )。
Page 17

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐