原文链接地址:
原文:
What Is an Object?
An object is a software bundle of related state and behavior. Software objects are often used to model the real-world objects that you find in everyday life. This lesson explains how state and behavior are represented within an object, introduces the concept of data encapsulation, and explains the benefits of designing your software in this manner.
翻译:
什么是对象?
对象是与状态和行为有关的程序块。程序中的对象都经常被当作现实世界中的事物对象的虚拟模型,这些对象都是我们生活中的常见的事物。这节课程将会告诉你,在对象中属性和行为是怎样表现的,并介绍 数据封装 的概念,以及解释像这样做对于你的程序有什么好处。
对象是与状态和行为有关的程序块。程序中的对象都经常被当作现实世界中的事物对象的虚拟模型,这些对象都是我们生活中的常见的事物。这节课程将会告诉你,在对象中属性和行为是怎样表现的,并介绍 数据封装 的概念,以及解释像这样做对于你的程序有什么好处。
“对象”是理解面向对象技术(object-oriented technology)的关键。现在看看周围,你会找到很多现实世界中的对象:你的狗,你的桌子,你的电视机还有你的自行车。
现实世界中的对象有两个特性:它们都有状态(state)和行为(behavior)。狗有自己的状态(名字、颜色品种、是否饥饿),有自己的行为(脱毛、取东西、摇尾巴)。自行车也有自己的状态(齿轮是否灵活、踏板的节奏、当前的速度),也有自己的行为(替换齿轮、替换踏板、刹车)。要按照面向对象设计程序最好的办法就是在现实世界中确定对象的状态和行为。
现实世界中的对象有两个特性:它们都有状态(state)和行为(behavior)。狗有自己的状态(名字、颜色品种、是否饥饿),有自己的行为(脱毛、取东西、摇尾巴)。自行车也有自己的状态(齿轮是否灵活、踏板的节奏、当前的速度),也有自己的行为(替换齿轮、替换踏板、刹车)。要按照面向对象设计程序最好的办法就是在现实世界中确定对象的状态和行为。
现在花几分钟去观察现实世界中的对象,它们就在你的周围。对于每一个你看到的对象都对自己提两个问题:“在这个对象中可能的状态是什么?” 和 “这个对象可能会有什么样的行为?”。确定下来并且写下你所观察到的。正如你所做的,你会发现现实世界中的对象变化有多么复杂;你桌上的灯可能有两个状态(开着、关着),还有可能有两个行为(打开、关闭),但是你桌上的收音机也许还有另外的状态(开着、关着、当前的音量、当前的配置) 和行为 (打开,关闭、增加音量、降低音量、查找、扫描、音调)。你也许也注意到了这样的对象,依次,也会包括那样的对象。这些现实世界中的观察事物都能够被引入到面向对象的世界中。
一个程序中的对象
程序中的对象与现实世界中对象的概念相同:都由状态和相关的行为构成。对象以字段fields(程序中的变量)存储状态 和 通过方法methods(程序中的函数)揭示行为。方法控制对象的内在状态以及通过自己私有的机理为对象之间建立联系。隐藏内在状态和通过对象的方法,这些方法是被封装起来的,可以完成所有的交互。数据封装是面向对象程序设计的基本理念。
考虑一下自行车,比如:
考虑一下自行车,比如:
自行车被想象为程序的一个对象
通过归结的状态(当前速度、当前踏板的频率和当前齿轮)和为了改变状态所提供的方法,在其外也可以允许使用它来控制对象。打个比方,如果自行车有6个齿轮,通过一个改变齿轮的方法可能会丢弃一个或六个齿轮。
通过归结的状态(当前速度、当前踏板的频率和当前齿轮)和为了改变状态所提供的方法,在其外也可以允许使用它来控制对象。打个比方,如果自行车有6个齿轮,通过一个改变齿轮的方法可能会丢弃一个或六个齿轮。
将代码添加到私有的对象当中有这么几个好处:
1.模块性:
针对一个对象的代码就不依赖于其他的对象代码。一旦创建,这个对象就很容易地传递到系统当中。
2.信息隐蔽性:
通过与对象方法相结合,内在详细的执行信息就不会显露在外面了。
3.代码复用性:
如果对象一旦存在(也许是有其他软件开发人员编写的),你就可以在你的项目中使用。这允许专家们去实现、测试和调试复杂的和特定的对象,这些对象只要你认为可行,你就可以添加到你的代码中去。
4.塞入和调试容易:
如果有一个对象有问题,你可以很容易地从你的应用中祛除,并且可以用其他的对象代替。这类似于在现世界中确定机器的问题一样。如果门闩坏了,你就把它更换了,而不是更换整个机器。
1.模块性:
针对一个对象的代码就不依赖于其他的对象代码。一旦创建,这个对象就很容易地传递到系统当中。
2.信息隐蔽性:
通过与对象方法相结合,内在详细的执行信息就不会显露在外面了。
3.代码复用性:
如果对象一旦存在(也许是有其他软件开发人员编写的),你就可以在你的项目中使用。这允许专家们去实现、测试和调试复杂的和特定的对象,这些对象只要你认为可行,你就可以添加到你的代码中去。
4.塞入和调试容易:
如果有一个对象有问题,你可以很容易地从你的应用中祛除,并且可以用其他的对象代替。这类似于在现世界中确定机器的问题一样。如果门闩坏了,你就把它更换了,而不是更换整个机器。
本文转自 sundunjam 51CTO博客,原文链接:http://blog.51cto.com/sunspot/132438,如需转载请自行联系原作者