对象是什么?

来源:互联网 发布:linux如何修改ip地址 编辑:程序博客网 时间:2024/06/06 12:25

对象是理解面向对象技术的关键。现在环顾四周,你会发现许多现实世界中对象的例子:你的狗,你的书桌,你的电视机,你的自行车。

真实世界中的对象都有俩个共通的特性:状态和行为。小狗有状态(名字,颜色,品种,饥饿),有行为(叫,抓和摇尾巴)。自行车也都有状态(当前的传动装置,节奏和速度)和行为(更换传动装置,改变节奏和刹车)。识别真实世界对象的状态和行为是从面向对象编程开始思考的好方法。

现在就花一分钟观察你眼前区域的现实世界中的物体。对于你看到的每个物体,你都问自己俩个问题:1.这个物体会处于什么可能的状态,2.这个物体会执行什么可能的结果。确定了以后写下你观察的结果。慢慢的你会注意到,现实中的对象各有不同,很是复杂。你的桌灯会有俩个可能的状态(开着/关着)和俩个可能的行为(打开/关闭),但是你桌子上的收音机却有一些另外的状态(开着,关着,当前的音量,当前的广播站台)和行为(开/关,调高/降低音量,寻找/扫描和调节),你可能还会注意到一些对象嵌套着包含着对方。这些现实世界的观察都将转移到面向对象编程的世界。

                                                                  

                                                                                                                  一个软件对象

软件对象在概念上和真实对象是一样的:他们都由状态和相关行为组成。对象将他的状态存储在属性(field)中(在一些编程语言中叫变量),通过方法(一些别的编程语言叫函数)暴露出他的行为。方法操作对象的内部状态,是在面向对象世界中交流的主要机制。隐藏内部状态,要求所有的交互都必须通过对象的方法才能被执行,这就是人们常说的数据封装-----面向对象设计的基本原则。

例如:自如车

                                                                                                

                                                                                                模拟成软件对象的自行车             

通过归纳状态,提供用于改变状态的方法,对象仍然保留着对外界如何使用它的控制。例如,假如自行车只有6档的速度,  那么改变档位的方法可以拒绝任何 小于1或者大于6的值。

将代码绑定到一个独立的软件对象上,可以有很多好处,包括:        

1.模块化:一个对象的源代码可以独立于其他对象被编写和维护。一旦对象创建了,它可以很容易在软件内部传递。

2.信息隐藏:通过只能和对象的方法交互,可以将内部实现的细节与外界隐藏。

3.代码复用:假如一个对象已经存在(可能由其他开发者编写),你可以在自己的程序中使用这个对象。让专业的人去实现,测试,调试复杂的,专用的对象,你可以在自己的代码中放心的使用他们。

4.插件化,易于调试:假如一个对象被证明由问题了,你可以将他从自己的应用中移除,用其他的对象替换它。这和现实中解决机械问题是相似的。一根螺丝坏了,你可以换掉它,而不是换掉整个机器。