一切事物都是对象。事物包括自身的描述属性和动作属性,描述属性即它拥有什么,动作属性即它能做什么。在Java中,会把这些描述属性和动作属性作为事物的总体,描述为一个对象。
程序就是对象之间的通信。面向对象的程序就是各种事物对象的大杂烩,它将它们有机地组织起来,使得对象之间通过动作来相互产生关系,在计算机中这种关系就是消息,最简单的就是0/1码。
对象可以包含对象。一个对象由自身的描述属性和动作属性组成,而描述属性也可以是其他对象,因此对象同样可以有多个其他的对象。比如,汽车对象可以包括发动机、轮胎、方向盘等对象。因此,对象与对象之间也可以是包含关系。
对象是类型的实例。这比较抽象,它将具有共同特征的事务抽象为一个类型。这里的类型就好比是生成每一辆汽车的模具,每一辆实实在在的汽车则是这个模具的一个具体存在。在OOP设计中,必须具备将对象抽象为类型的能力,只有发现了类型,才能够设计出Java类。
对象具有继承性。同一个类型的所有对象实例,都拥有该类型的所有描述属性和动作属性,因此它们就好比“龙生龙,凤生凤,老鼠生儿会打洞”,天生地遗传了类型所具有的一切功能。
Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。1991年,他将以前面向Ada的工作扩展到整个面向对象设计领域。Booch和Rumbaugh、Jacobson三人最后一起发布了面向对象设计的建模语言UML(Unified Modeling Language)。
一个对象包括状态、行为、标识。
状态:即上面所说的描述属性,比如发动机、轮胎、方向盘。
行为:即上面所说的动作属性,比如启动、行驶、停车。
标识:即依据类型创建对象实例时所贴的唯一标签,比如汽车牌号。
以上三个方面分别对应Java类的属性attribute、方法method、标识符。
本文节选自《Java编程思想(第4版)(评注版)》一书。
《Java编程思想(第4版)(评注版)》一书已由电子工业出版社正式出版,本书由刘中兵评注
购买地址:
当当:
http://product.dangdang.com/product.aspx?product_id=21106091&ref=search-1-pub
卓越:
中国互动出版网:
http://product.china-pub.com/194002