第一章 对象导论

编程语言起源与机器,是对机器的抽象,又是大脑的延伸,也是表达的媒体;因此,它的发展从对机器的简单抽象,发到到现在越来越远离机器,接近人类的表达;面向对象程序设计(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 在客户端编程中

1.14 总结

你可能感兴趣的:(第一章 对象导论)