编程语言起源与机器,是对机器的抽象,又是大脑的延伸,也是表达的媒体;因此,它的发展从对机器的简单抽象,发到到现在越来越远离机器,接近人类的表达;面向对象程序设计(OOP:object-oriented Programming)就是这个发展过成中的组成部分;
本章介绍包含开发方法概述在内的OOP基本概念;
1.1 抽象过程
编程就是将问题空间与解空间进行映射的过程;这个过程中抽象的对象及质量,决定了这个语音所能处理的问题复杂性;根据建模方式(抽象机制),可以把编程语言分成三类;
- 对机器抽象的语言
如汇编对底层机器的轻微抽象,BASIC、C等在汇编的基础上继续抽象;这些语言的抽象对象是机器,当需要解决实际问题时,需要基于计算机的机构进行考虑,建立起实际问题模型与机器模型的关联,建立这种映射困难且维护代价高昂;
- 只针对问题建模的语言
这种语言提供固定的建模工具,在解决具体问题时,只需要对待解问题进行建模;如LISP,提供了“列表”做为建模工具,所有的问题都建模为列表;PROLOG则选择“决策链”做为问题的建模工具;这些方式对他们要解决的特定问题比较有效,超出特定领域则显力不从心
- 利用对象进行建模的语言
以对象作为建模工具,将具体问题描述为“对象”,即不用考虑计算机结构,又具有通用性;对象就是对现实问题进行建模的工具,可以创建不同类型的对象,这些对象具有状态(属性)以及行为(方法);
1.2 每个对象都有一个接口
类:具有相同特征的对象的集合,可以理解为数据类型或者建模工具; OOP编程通过定义类来适应问题,通过建立对象对问题进行建模解决问题;
UML图
1.3 每个对象都提供服务
进行程序设计时,最好的方法是将对象想象为服务提供者。通过创建一系列能提供理想服务的对象来解决问题。
有助于提供对象的内聚性:每个对象相对独立服务单一,类与类之间的关系简单明了
1.4 被隐藏的具体实现
类创建者通过隐藏实现,暴露给客户端程序员(收集)必要的部分,使各自边界清晰,减少可能产生的bug;
通过访问控制,让关系涉及的各方遵守各自的边界;即,让客户端程序员无法触及他们不应该触及的部分,让类创建者修改类内部工作方式而不影响外部;
四种访问权限:
- public
- private
- protect
- 默认访问权限
1.5 复用具体实现
复用是OOP最了不起的优点之一,复用某个类可以直接使用这个类的对象,或者将该类的对象置于一个新类中(创建一个成员对象,这种关系叫组合);
UML图
1.6 继承
UML图
https://www.cnblogs.com/liuzhang/archive/2013/03/17/2964095.html
1.7 伴随多态的可互换对象
后期绑定让java具有多态的特性
1.8 单根继承结构
所有类继承自单一基类:Object
单根继承在参数传递以及垃圾回收等方面有优势
1.9 容器
容器区别于数组,可以动态扩充;
java中存在大量的容器类,原因是:1、不同的容器具有不同的接口;2、具有不同的执行效率;可以根据需要选择
1.9.1 参数化类型
参数化类型也称为泛型;JavaSE5之前,容器存储Object,参数化类型解决了操作时需要转型;
1.10 对象的创建和生命周期
区别于C++追求效率,对象的存储空间及生命周期可以在编写程序时确定;java在堆中动态地创建对象。这种方式,直到运行时才知道需要对少对象、对象的生命周期以及对象的类型;
java采用动态内存分配方式,需要创建对象时使用new来构建动态实例;采用垃圾回收机制控制对象的生命周期;
1.11 异常处理:处理错误
异常处理被置于语言之中,强制进行处理,增强代码健壮性;异常处理不是面向对象的特征,在面向对象之前已经存在;
1.12 并发编程
并发编程需要注意的一个问题是资源共享的问题,可通过锁来解决;
1.13 java与Internet
java的重要性,不仅仅是因为解决了传统单机程序设计问题,同样重要的是它解决了万维网上的程序设计问题;
1.13.1 Web是什么
java applet 在客户端编程中
网友评论