Thinking in Java 读书笔记(一) --对象导论

来源:互联网 发布:臭氧消毒知乎 编辑:程序博客网 时间:2024/05/16 12:59

1.对象导论

前言

  • 面对对象程序设计(Object-oriented Programming OOP)

1.1 抽象过程

人们所能解决问题的复杂性直接取决于抽象的类型与质量。

  • 汇编语言—>BASIC,C—>C++,C#,Java 后面的语言都是对前面语言的在抽象,所以更加高级。

万物皆为对象

  • 抽取待解决问题的所有概念化部件(人,物,服务,工具等)
  • 对象是特殊的变量,可以存储数据,可以执行方法

对象具有状态、行为、标识。 –Booch

  • 状态:对象的内部数据
  • 方法:对象产生的行为
  • 标识:每一个对象在内存中有唯一的地址,可以和其他对象区别开来。

1.2 每个对象都有一个接口

  • 对象是类的实例。
  • 一个类实际上就是一个数据类型

接口确定了对某一特定对象所能发出的请求。

  • 每一个请求与一个方法相对应
  • 向对象发送消息,对象接收到请求,执行相对应的程序代码
  • 接口换言之是所有方法的集合

例: 对于 类 Ligtht 接口:on() off() brighten() dim()

  • UML(Unified Modelling Language)统一建模语言

1.3 每个对象都提供服务

  • 对象是服务的提供者,可以根据需要哪些服务(方法)来构建出那些对象
  • 不要苛求一个对象做过多的事情

1.4 被隐藏的具体实现

程序开发人员分为类创建者和客户端程序员

  • 类创建者只提供类的参数和方法,隐藏其他部分。即提供接口,隐藏实现
  • 客户端程序员负责搜集开发所需要的类

设定类的边界的三个关键词 public private protected

  • public 任何人都可以访问到
  • private 类的创建者和类的内部方法
  • protected 与privated一样,但继承类可以访问protected而不可访问private

1.5 复用具体实现

组合,使用现有的类合成新的类。

  • 可以将已有的类作为新的类的一个成员对象,HAS-A。例如,汽车这个类里面有引擎这个类。

1.6 继承

“是一个”与”像是一个”的关系

  • “是一个”:导出类完全是覆盖(overriding)基类的方法
  • “像是一个”:导出类还存在自己新的方法

1.7 伴随多态可互换对象

你是一个Shape,我知道你可以erase()和draw()自己,那么去做吧,但是要注意细节的正确性。

void doSomething(Shape shape){    Shape.erase();    Shape.erase();}Circle circle = new Circle();Triangle triangle = new triangle();Line line = new line();doSomething(circle);doSomething(triangle);doSomething(line);
  • Java多态的实现是基于动态绑定。

1.8 单根继承结构

Java所有的类都继承自单一的基类,Object。

  • 单根继承使得垃圾回收实现变得容易的多。也便于很多的系统操作

1.9 容器

  • 如果不知道在解决某个问题时需要多少个对象,或者他们需要存活多久,可以通过容器来存储。
  • List:用于存储序列
  • Map:关联数组,用来建立对象之间的关联
  • Set:每种对象类型只持有一个

1.10 对象的创建和生命期

在被称为堆的(heap)的内存池中动态创建对象。

  • 对象在需要的时候直接在内存池中创建。
  • 垃圾回收器,可以自动发现对象何时不再使用,并继而销毁它。
  • 垃圾回收器减少了销毁对象必须的编码,同时避免了内存泄漏。

1.11 异常处理:处理错误

异常提供了一种从错误状况进行可靠恢复的途径。有了错误可以矫正恢复程序的执行,进而编写更加健壮的程序。

  • Java内置了异常处理,并且强制使用

1.12 并发编程

在程序中彼此独立运行的部分(任务)称为线程。

  • 可以通过将一个复杂的问题切割成许多可独立运行的子任务,进而提高程序的响应能力。
  • 资源锁。为了避免多个并行任务访问同一个资源产生冲突,某个任务锁定某项资源,任务完成再释放资源锁,其他任务可以继续使用这个资源锁。

1.13 Java与Internet

Java可以优雅的处理在传统编程语言中很难解决的问题,如并发,数据库访问,网络编程和分布式计算。

  • Java编写servlet的程序来实现服务端编程
1 0
原创粉丝点击