为什么面向对象的编程会对软件开发造成深远影响?
对于管理人员,实现的更快更廉价的开发维护过程。
对于设计人员,建模处理更简单,能设计出清晰、易于维护的设计方案。
对于开发人员,面向对象的编程衍生出众多的类库使得编程成为一种使人愉悦的任务。
抽象的进步
汇编语言是对机器的抽象。在机器模型和问题模型间需要我们寻找一些关系。
命令式语言是对汇编语言的抽象。针对一类问题,一部分面向编程,一部分面向图形。
面向对象的程序是命令式程序的抽象。不必局限于某种特定类问题,通过添加新的类,使程序灵活调整。
面向对象的程序
所有的东西都是对象
程序是一堆对象的组合
每个对象都有自己的存储空间
每个对象都有一种类型
同一类的对象都能接受相同的消息。
对象的接口
对象的类型规定了它的接口的形式。
实现方案的隐藏
防止方案实现者操作类的创建者的内容。public、private、protected、friendly关键字设定了类的边界。
public的边界是工程、friendly的边界是包、protected的边界是类及其继承者、private的边界是本类。
方案的重复使用
新的方案可以直接调用旧有方案的对象,然后进行修改。
继承:重新使用接口
一种新的类型与原有类型类似但是并不等价,这是用继承关系,定义新类中只需要表示特有的属性和方法。
多形对象的互换使用
通过动态绑定可以重写的方法自动加载。
抽象的基础类和接口
有时为了让基础类不能创建对象,但其仍然可以拥有自己的方法,可以定义其为抽象类。
对象的创建和存在时间
需要管理对象的创建、存放、销毁。
集合(矢量、列表等)可以存放对象,继承器使得对象的类型可以方便切换。
单根结构使得所有对象可以存放在集合之中,对于垃圾回收更加方便。
清除时的困境:谁来负责?
垃圾回收器自动检测对象的销毁时间。
违例控制:解决错误
违例控制器对异常进行捕获。
多线程
一个任务分成多线程处理,用到相同的资源时,一个线程需要先锁定synchronized
永久性
永久性是的对象可以保存到磁盘上。
Java和因特网
Web是客户端/服务器的交互,JavaScript等脚本语言负责客户端编程,Java负责服务器端“程序片”化编程。
分析和设计
两个问题:
对象是什么?
它们的接口是什么?
1、拟出一个计划,确定每个阶段的目标,比如制作文章目录。
2、要制作什么?确定每个阶段的要点,比如文章每个段落的大意。
3、如何构建?确定每个阶段的实现方式,比如UML。
4、开始创建。实现前对内容整体构思。
5、校订。对完成的模块儿测试检测。
Java和C++