Think in java 导读

第1章 对象入门
“为什么面向对象的编程会在软件开发领域造成如此震憾的影响?”

管理上: 它实现了更快和更廉价的开发与维护过程
技术上: 建模处理变得更加简单,能生成清晰、易于维护的设计方案
程序员: 对象模型显得如此高雅和浅显

面向对象工具以及库的巨大威力使编程成为一项更使人愉悦的任务。每个人都可从中获益,至少表面如此。

初涉面向对象编程遇到的问题:
A. 需要了解巨大的库的使用方法。
B. 选择一个基本没有库的C++,深入学习语言机制,直到自己能编写对象库。 PS: 现在已经有STL等标准库了。

下面逐步介绍Java的面向对象编程思想。 PS: 本导读会摘取关键语句。

1.1 抽象的进步:

Alan Kay总结了Smalltalk的五大基本特征。这是第一种成功的面向对象程序设计语言,也是Java的基础语言。通过这些特征,我们可理解“纯粹”的面向对象程序设计方法是什么样的:

(1) 所有东西都是对象。
(2) 程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。
(3) 每个对象都有自己的存储空间,可容纳其他对象。或者说,通过封装现有对象,可制作出新型对象。
(4) 每个对象都有一种类型。根据语法,每个对象都是某个“类”的一个“实例”。其中,“类”(Class)是“类型”(Type)的同义词。一个类最重要的特征就是“能将什么消息发给它?”。
(5) 同一类所有对象都能接收相同的消息。继承出的子类可以处理父类的消息。这一特性称为对象的“可替换性”,是OOP最重要的概念之一。

1.2 对象的接口

一个对象提供自身的接口,来接收外部传入的信息,作出响应并适当返回消息。

“接口”(Interface)是一个Java内部的关键词,是为了进一步抽象出接口层而做的改进。

public(公开,全局访问),private (私有,本身类内函数访问),protected(保护,继承类可访问)以及暗示性的friendly(在包Package内访问)。

1.3 方案的重复使用 略

1.4 继承: 重新使用接口 略

1.5 改善类基础

1.5.1 等价与类似:  继承类扩展了父类,创建新接口和扩展定义,“类似”于父类。

1.6 多形对象的互换使用

对于多个继承于父类的子类,我们可以使用统一的对父类的操作,对不同子类进行。

1.6.1 动态绑定:Virtual 虚拟属性和 多态性(Polymorphism) 关于重载和继承的实现机制。

1.7 对象的创建和存在时间 略

1.7.1 集合与迭代器: 了解迭代器的使用,Iterator. Vector, List, Set 等类型。

1.7.2 单根结构: Java 所有类继承自Object,是单根的,利于配置动态内存等OO特性,而C++为了向上兼容没有使用。

1.7.3 集合库与方便使用集合

1.下溯造型与模板/通用性:Java在面对“下溯造型 (Downcasting)”是显得有些笨拙,由于他是单根的,解决的办法是参数化,Java保留关键词(generic), 而C++内部的template实现了参数化类型。

PS: 最新的JDK貌似已经完成了参数化类型工作。

1.7.4 清除时的困境:由谁负责清除? 略

1.8 违例控制:解决错误 : Exception学习。 另外关于断言的用法。

1.9 多线程: Thread和synchronized

1.10 永久性 Java1.1支持简单的把对象保存到磁盘上,下次取回继续使用。

1.11 Java和英特网 网络大部分略

1.11.3 服务器编程: Servelt

1.11.4 一个独立的领域: 应用程序 略

1.12 分析设计:《Object-Oriented Design with Applications , Version 2》

1.12 不要迷失: 清楚你设计的对象是什么,接口是什么。

1.12.2 阶段 : 拟出计划 –>要构建什么->如何构建->开始构建->校订->计划回报

1.13:Java还是C++?

Java或许在OO阶段相比C++更好编程,但是不代表会替代C++, 更何况Java虚拟机正常速度普遍低于C++。

PS: 目前已经知的提高Java程序效率的方法有很多,如Just In Time JIT, 低级的代码编译运行等。

此条目发表在Eclipse, JAVA, 编程分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注