面向对象概述
传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。一旦确定了这些 过程, 就要开始考虑存储数据的方式
因此传统的结构化程序的设计思路为:算法+数据结构=程序。先考虑算法,再考虑如何组织数据
- 算法——如何操纵数据
- 数据结构——数据的组织集合
但是随着问题规模的不断增大,面向过程的线性设计显然不适合错综复杂的庞大系统设计,面向对象思想油然而生。面向对象设计优先考虑数据组织,再考虑如何操作数据。
耍想实现一个简单的 Web 浏览器可能需要大约 2000 个过程,这些 过程可能需要对一组全局数据进行操作。采用面向对象的设计风格, 可能只需要大约 100 个 类,每个类平均包含 20 个方法。后者更易于程序员掌握, 也容易找到 bug 假设给定对象的数据出错了,在访问过这个数据项的 20 个方法中查找错误要比在 2000 个过 程中查找容易得多
Java的类与对象
Java中类与对象的关系实际上很好理解,很多书上说对象是"类的实例”
“由类构造(construct) 对象的过程称为创建类的实例 (instance). ”,虽然很标准,但是并不通俗易懂。
我们应该把java的类看作是一个模具,像是饼干模具、蛋糕模具、冰棍模具。
那么Java对象自然而然得就是由模具生产出来的饼干、蛋糕、冰棍
类是一个标准,一个规范。对象则是产物,是可以直接使用的,这样一来,对象叫做实例就很好理解了
类
特性:
- 封装
- 继承
对象
-
对象中的数据称为实例域( instance field)
-
操纵数据的过程称为方法(method )
对象的三个主要特性:
- 对象的行为(behavior):支持相同的行为而具有家族式的相似性。对象的行为是用可调用的方法定义的。
- 对象的状态(state):每个对象都保存着描述当前特征的信息
- 对象的标识(identity):对象的标识永远是不同的。以区别其他对象
状态的改变不会是自发的。对象状态的改变必须通过调用方法实现。如果不是,则说明封装性遭到了破坏
对象的状态影响它的行为。例如订单的状态是“未付款”,那么他就不能执行发货操作
如何设计一个类?
传统的过程化程序设计, 必须从顶部的 main 函数开始编写程序。在面向对象程序设计 时没有所谓的“ 顶部”。对于学习OOP 的初学者来说常常会感觉无从下手。
答案是:首先从 设计类开始,然后再往每个类中添加方法。
最简单的方法是:在分析问题的过程中,名词对应着数据,动词对应着方法
当然如何分别名词动词全看个人经验与喜好,重要的是和谐、简洁、易于维护。
类之间的关系
常见的由三种:
- 依赖
use-a
:用一个类的方法操纵另一个类的对象 - 聚合
has-a
:类 A 的对象包含类 B 的对象 - 继承
is-a
:
Interesting
getter
/setter
方法叫域访问器:laughing:
Reference
- BOOK-《Java核心技术-卷1-第10版》:第四章
网友评论