上QQ阅读APP看书,第一时间看更新
4.1.2 对象
要想使用OOP,一定要清楚对象的三个主要特性:
●对象的行为(behavior)——可以对对象施加哪些操作,或可以对对象施加哪些方法?
●对象的状态(state)——当施加那些方法时,对象如何响应?
●对象标识(identity)——如何辨别具有相同行为与状态的不同对象?
同一个类的所有对象实例,由于支持相同的行为而具有家族式的相似性。对象的行为是用可调用的方法定义的。
此外,每个对象都保存着描述当前特征的信息。这就是对象的状态。对象的状态可能会随着时间而发生改变,但这种改变不会是自发的。对象状态的改变必须通过调用方法实现(如果不经过方法调用就可以改变对象状态,只能说明封装性遭到了破坏)。
但是,对象的状态并不能完全描述一个对象。每个对象都有一个唯一的身份(identity)。例如,在一个订单处理系统中,任何两个订单都存在着不同之处,即使所订购的货物完全相同也是如此。需要注意,作为一个类的实例,每个对象的标识永远是不同的,状态常常也存在着差异。
对象的这些关键特性在彼此之间相互影响着。例如,对象的状态影响它的行为(如果一个订单“已送货”或“已付款”,就应该拒绝调用具有增删订单中条目的方法。反过来,如果订单是“空的”,即还没有加入预订的物品,这个订单就不应该进入“已送货”状态)。