对象是理解面向对象的关键。现在环顾四周,你会发现许多真实世界对象的例子:你的够、你的桌子、你的椅子、你的电视机。
现实世界中的对象具有两个特征:他们都有状态和行为。狗有状态(姓名、颜色、品种、饥饿感)和行为(吠叫、抓东西、摇尾巴),自信车也有状态(当前档位、当前踏板步频、当前速度)和行为(换档、更换踏板步频、踩刹车)。从真实世界中对象的状态和行为来认识面向对象编程是一个不错的方式。
现在花一分钟观察你周围的真实物体,对于看到的每个对象,问自己两个问题:"这个对象可能处于什么状态?,这个对象可能执行什么行为"。一定要写下你的观察结果,当你这样做时,你会注意到现实世界中的对象在复杂性上有所不同。你的台灯可能只有两种状态(打开和关闭)和两种行为(打开和关闭),但是你的收音机就可能有多种状态(打开,关闭,当前音量,当前电台)和多种行为(打开,关闭,增大音量,减小音量,搜索、扫描和调谐)。你可能还会注意到,某些对象可能还包含的其它对象。这些现实世界中的对象都可以转化成面向对象编程世界中的对象。
程序中的对象在概念上类似现实世界中的对象,程序中的对象也由状态和行为组成。在程序的对象中,状态被存储在字段中(编程语言中的变量),行为是通过方法(编程语言中的函数)来执行。隐藏内部状态并通过对象的方法来执行所有的交互被称为数据封装,这是面向对象编程的基本原则。
将你的程序写成一个个对象有一系列好处:
1、模块化:一个对象的源代码可以独立与其它对象的源代码编写和维护,一个对象可以被重复应用于程序的各个模块。
2、信息隐藏:通过仅于对象的方法交互,其内部实现的细节对外部保持隐藏。
3、代码重用:如果一个对象已经存在(可能是由另一个软件开发人员编写),你可以在程序中使用该对象。
4、可插拔行和调试方便性:如果某个特定对象出现问题,您只需将其从应用程序中删除,然后插入另一个对像作为替代对象。