Java编程思想之每天两小时(一)

之前也学过Java,但是因为很少用,所以一直没有当回事,现在想想,那时真是太年轻啊。后来朋友推荐这本Java编程思想给我,刚拿到这本书,被这厚厚的一本惊呆了,里面的很多内容也是似懂非懂。不知道从何看起。然后这本书一直被搁置在书架上。现在开始做项目时才发现有个扎实的Java基础是非常有必要的。所以翻开这本书,每天两小时边调试边学习。顺便一做个笔记,以后可以时常温习。如果有道友对这方面比较熟悉,求指教。感激不尽!
* 第一章 对象导论*
之前学习Java时老师也没说过什么对象导论,这个对象导论也是我第一次接触。
“我们之所以将自然界分解,组织成各种概念,并按其含有分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来。。。除非赞成这个协定中的有关语言信息的组织和分类,否则我们根本无法交谈”—Benjamin Lee Whorf
我对这段话的理解差不多就这个世界里的万物之所以叫那些,只是因为我们这些口语交流的参与者制定的,我们称火为火,但是在动物看来,火可能是被他们称为一种可怕的红色的花。所以在Java语言的世界里,我们就要遵守它们的语言规则。不同于人类语言的一种新的协定。
计算机革命起源于机器,因此,编程语言的产生也是始于对机器的模仿。计算机是头脑延伸的工具。就像是头脑的自行车。同时还是一种不同类型的表达媒体。更像是我们头脑的一部分。面向对象程序设计(Object-oriented Programming,oop)便是这种以计算机作为表达媒体的大趋势中的组成部分。

1.1 抽象过程

所有编程语言都提供抽象机制。人们所能解决的问题的复杂性直接取决于抽象的类型和质量。
所谓的类型–所抽象的是什么?汇编语言是对底层机器的轻微抽象。这个阶段出现了很多“命令式”语言—FORTRAN,BASIC,C等,都是对汇编语言的抽象。虽然他们在汇编语言的基础上有了大幅度的改进,但是它们所作的主要抽象仍要求在解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构来考虑。(个人理解为这些语言是为了计算机而存在,并不是为了解决问题而存在。当你需要使用这些语言解决问题时,得先考虑是否基于计算机的结构。)程序媛必须建立起在机器模型(位于“解空间”内,这是你对问题建模的地方,比如计算机)和实际待解问题的模型(位于“问题空间”,这是问题存在的地方,例如一项业务)之间的关联。建立这种映射是很费力的,而且这不属于编程语言所固有的功能。
另一种对机器建模的方式就是只针对待解决问题建模。早期的编程语言比如LISP和APL,都是选择考虑世界的某些特定视图(分别对应于“所有问题最终都是列表”或者“所有问题都是算法形式的”)PROLOG则是将所有问题都转化成决策链。此外还产生了基于约束条件编程的语言和专门通过对图形符号操作的来实现编程的语言(后者被证明限制性过强)但是这些方式一旦超出起特定领域就力不从心了。
(所谓抽象类是用来表征我们在对问题领域进行分析、设计中得出的抽象念,是对一系列看上去不同,但是本质上相同的具体概念的抽象;所谓接口,相当于电源插座,可插入构件相当于电器。可插入构件的关键在于存在一个公用的接口,以及每个构件都实现了这个接口。接口是实现构件的可插入性的关键。
Demo抽象类的定义方式如下:
abstract class Demo {
abstract void method1();
abstract void method2();
… })
面向对象方式的实质:程序可以通过添加新类型的对象使自身适用于某个特定问题,OOP允许根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题。OOP和计算机的联系体现在:每个对象看起来都有点像一台微型计算机,他有状态,还具有操作,用户可以要求对象执行这些操作。
下面是Alan Kay总结的Smalltalk(Java所基于的语言之一)的五个基本特性:
1) 万物皆为对象。
2) 程序是对象的集合,它们通过发送消息来告知彼此需要做的。可以把消息想象成某个特定对象的方法的调用请求。
3) 每个对象都有自己的由其他对象所构成的存储。就是可以通过创建包含现有对象的包的方式来创建新类型的对象,因此,可以在程序中构建复杂的体系,同时将其复杂性隐藏在对象的简单性背后。
4) 每个对象都拥有其类型。每个对象都是某个类(class)的一个实例(instance)。这里的类相当于类型
5)某一特定类型的所有对象都可以接收同样的消息。这种可替代性是OOP中最强有力的概念之一。
Booch 对对象提出了一个更加简洁的描述:对象具有状态,行为,标识。每个对象在内存中都有唯一的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值