建模基于计算机的结构程序员
建模基于待“解决问题编程
建立抽象数据类型(类)
类:相同特性(数据元素)和行为(功能)的对象
主要任务:问题空间的元素和解空间的对象之间建立一对一的映射
类型决定接口——接口肯定可发请求——产生请求——得到对象——方法(代码)调用数组
将对象想象为服务提供者,提升对象的内聚性。每一个对象作好本身的分内事。安全
public:任何人可用
private:子类不可用超类
protected:子类可用超类服务器
直接使用该类的一个对象
将那个类的一个对象置于某个新的类中(建立一个成员对象)多线程
组合:使用现有的类合成新的类 has-a 拥有关系
聚合:动态组合
组合带来灵活性,新类成员一般被声明为private。
不要第一反应就是继承,能够尝试组合。并发
对象这种工具使得程序员能够用概念(类class)将数据和功能封装到一块儿。app
基类——导出类函数
导出类继承了基类的特色,工具
基类和导出类具备相同的基础接口,造成二者差别的作法:
一、在导出类中添加新方法
is-like-a:在导出类型中添加新的接口元素,扩展了接口。
二、覆盖(在导出类用建立方法的新定义,覆盖基类中的方法定义)
is-a:纯粹替代,只覆盖。
基类中,方法操做时泛化的
非OOP的编译器采用前期绑定,对一个具体函数名字调用,解析到将要执行代码的绝对地址。
而OOP的编译器采用了后期绑定,当向对象发送消息时,代码直到程序运行时才能肯定。编译器确保调动方法的存在,并对调用变元和返回值执行类型检查。
转型
向上转型:将导出类看作它的基类
全部东西都是Object类型
不知道解决问题时须要多少对象、多少空间怎么办?
容器,建立一种对象类型,持有对其余对象的引用,在任何须要时均可扩充本身以容纳置于其中的全部东西。
List:用于储存序列
Map:也称关联数组,用来创建对象之间的关联
Set:每种对象类型只持有一个
Queue、Tree、Stack……
不一样容器
一、提供了不一样类型的接口和外部行为
二、对于某些操做具备不一样的效率
参数化类型
储存Object的容器能够储存任何东西。当将对象引用置入容器时,被向上转型为Object,会丢失其身份;取回时,就获取了一个对Object对象的引用。若要变回原先接口,需向下转型,但向下转型不安全。一种采用向下转型的作法是异常处理。
更好的作法是参数化类型机制。参数化类型机制是一个类,编译器能够经过自动定制,从而做用于特定类型上。
使用关键问题之一:对象生成和销毁方式
一、编写程序时设定:将对象置于堆栈(有时被称为自动变量或限域变量)或静态存储区域内来实现。牺牲了灵活性。
二、在堆(heap)的内存池中动态地建立对象。建立堆存储空间的事件依赖于存储机制的设计。
动态方式通常性逻辑假设:对象趋于变得复杂,因此查找和释放存储空间的开销不会对对象的建立形成重大冲击。动态方式带来更大的灵活性。
Java彻底采用了动态内存分配方式。每当想要建立新对象时,就要使用new关键字来构建此对象的动态实例。
Java生命期:垃圾回收器
线程:独立运行的部分(任务)
并发:把问题切分红多个线程,从而提升程序的响应能力
多线程优势:没必要操心机器上是有多个处理器仍是只有一个处理器
隐患:共享资源。解决方法:共享资源在使用期间被锁定。
1)客户/服务器计算技术
系统具备一个中央信息存储池,可根据须要将它分发给某些人员或机器集群,其位置集中于中央,使得它可被修改,而且这些修改将被传播给信息消费者。
服务器:信息存储池、用于分发信息的软件、信息与软件所驻留的机器或机群
单一的服务器同时为多个客户服务
2)Web就是一台巨型服务器
关心:怎样链接到一台服务器上,并与之进行交互。
1)插件
2)脚本语言
3)Java
4)备选方案
Java applet
Flex
5).NET和C#
6)Internet和Intranet