一、抽象过程

建模基于计算机的结构

  • “解空间”的解
  • 汇编语言:对底层机器的轻微抽象
  • “命令式”语言:汇编语言的抽象

建模基于待“解决问题

  • “问题空间”的元素
  • 面向对象

二、每个对象都有一个接口

创建抽象数据类型(类)
类:相同特性(数据元素)和行为(功能)的对象
主要任务:问题空间的元素和解空间的对象之间创建一对一的映射
类型决定接口——接口确定可发请求——产生请求——获得对象——方法(代码)调用

三、每个对象都提供服务

将对象想象为服务提供者,提高对象的内聚性。每个对象做好自己的份内事。

四、控制访问

public:任何人可用
private:子类不可用超类
protected:子类可用超类

五、复用

直接使用该类的一个对象
将那个类的一个对象置于某个新的类中(创建一个成员对象)

组合:使用现有的类合成新的类 has-a 拥有关系
聚合:动态组合
组合带来灵活性,新类成员通常被声明为private。
不要第一反应就是继承,可以尝试组合。

六、继承

对象这种工具使得程序员可以用概念(类class)将数据和功能封装到一起。

基类——导出类

导出类继承了基类的特点,

基类和导出类具有相同的基础接口,形成两者差异的做法:

1、在导出类中添加新方法

 is-like-a:在导出类型中添加新的接口元素,扩展了接口。

2、覆盖(在导出类用创建方法的新定义,覆盖基类中的方法定义)

 is-a:纯粹替代,只覆盖。

七、伴随多态的可互换对象

基类中,方法操作时泛化的
非OOP的编译器采用前期绑定,对一个具体函数名字调用,解析到将要执行代码的绝对地址。
而OOP的编译器采用了后期绑定,当向对象发送消息时,代码直到程序运行时才能确定。编译器确保调动方法的存在,并对调用变元和返回值执行类型检查。

转型
向上转型:将导出类看做它的基类

八、单根继承结构

所有东西都是Object类型

九、容器

不知道解决问题时需要多少对象、多少空间怎么办?
容器,创建一种对象类型,持有对其他对象的引用,在任何需要时都可扩充自己以容纳置于其中的所有东西。
List:用于储存序列
Map:也称关联数组,用来建立对象之间的关联
Set:每种对象类型只持有一个
Queue、Tree、Stack……

不同容器
1、提供了不同类型的接口和外部行为
2、对于某些操作具有不同的效率

参数化类型
储存Object的容器可以储存任何东西。当将对象引用置入容器时,被向上转型为Object,会丢失其身份;取回时,就获取了一个对Object对象的引用。若要变回原先接口,需向下转型,但向下转型不安全。一种采用向下转型的做法是异常处理。
更好的做法是参数化类型机制。参数化类型机制是一个类,编译器可以通过自动定制,从而作用于特定类型上。

十、对象的创建和生命期

使用关键问题之一:对象生成和销毁方式
1、编写程序时设定:将对象置于堆栈(有时被称为自动变量或限域变量)或静态存储区域内来实现。牺牲了灵活性。
2、在堆(heap)的内存池中动态地创建对象。创建堆存储空间的事件依赖于存储机制的设计。

动态方式一般性逻辑假设:对象趋于变得复杂,所以查找和释放存储空间的开销不会对对象的创建造成重大冲击。动态方式带来更大的灵活性。

Java完全采用了动态内存分配方式。每当想要创建新对象时,就要使用new关键字来构建此对象的动态实例。

Java生命期:垃圾回收器

十一、异常处理:处理错误

十二、并发编程

线程:独立运行的部分(任务)
并发:把问题切分成多个线程,从而提高程序的响应能力
多线程优点:不必操心机器上是有多个处理器还是只有一个处理器
隐患:共享资源。解决方法:共享资源在使用期间被锁定。

十三、Java与Internet

1.Web

1)客户/服务器计算技术
系统具有一个中央信息存储池,可根据需要将它分发给某些人员或机器集群,其位置集中于中央,使得它可被修改,并且这些修改将被传播给信息消费者。
服务器:信息存储池、用于分发信息的软件、信息与软件所驻留的机器或机群
单一的服务器同时为多个客户服务

2)Web就是一台巨型服务器
关心:怎样连接到一台服务器上,并与之进行交互。

2、客户端编程

1)插件
2)脚本语言
3)Java
4)备选方案
Java applet
Flex
5).NET和C#
6)Internet和Intranet

十三、服务器端编程


lindsay_bubble
26 声望11 粉丝