对象是数据及其所允许操作的封装体,是应用领域现实实体的软件抽象。面向对象的软件系统通过一组对象的交互来完成系统的功能。面向对象的软件构造乃是基于系统所操作之对象类型,而非系统需实现之功能,来架构系统的途径。
面向对象方法的核心机制包括封装、继承和多态。数据抽象提供了面向对象计算的起点,即定义数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察,从而自然地形成模块封装和信息隐藏。面向对象通过类比发现对象间的相似性,即对象间的共同属性,是构成对象类的依据。继承是类与类之间的一种层次关系,是实现利用可复用软件构件构成系统的有效语言机制。相比过程复用,面向对象是对数据及其上操作的整体复用,而非仅复用操作功能。对象间的相互联系是通过传递“消息”来完成的。通过对象之间的消息通信驱动对象执行一系列的操作,从而完成某一任务。多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象收到同一消息可以产生不同的结果。多态性增强了软件的灵活性和可复用性。面向对象的软件构造可以进一步总结为把软件系统构作成类(或谓抽象数据类型实现)的结构化集合。
面向对象方法的实施步骤包含了面向对象分析、面向对象设计和面向对象实现等。面向对象分析主要包括:识别应用领域应被抽象的对象,分类组织这些对象,形成对象概念模型;刻画这些对象的内部行为和外部交互,以及系统功能目标何以因之达成,形成用例模型。面向对象的设计要在系统各种实施条件约束下,给出上述概念模型和用例模型的实现方案,包括确定对象模型的操作,设计实现操作的算法,优化数据的访问,调整类结构以提高继承性等,形成面向实现的类模型、对象交互模型、对象状态模型和存储模型等。面向对象实现通常使用面向对象程序设计语言和对象持久化设施等,可将上述设计具体实现。
复杂性是软件开发过程中所固有的特质,软件开发方法的核心则在于帮助开发者驾驭这种复杂性。在应对需求复杂性方面,结构化的软件开发方法强调的是确定和分解系统功能,而对象式方法通过建立与现实世界中的实体、概念、关系和结构直接对应的软件抽象来刻画需求并支持该软件抽象在需求、设计、实现之间的无缝过渡,有助于弥合问题空间与解空间之间的语义鸿沟。在应对需求变化方面,应用功能的变化将导致采用结构化方法设计的软件系统结构发生较大的变化。应用领域的概念和结构远比应用功能稳定,因此,较之结构化方法,对象式方法使得软件具有更好的结构稳定性、可修改性和可复用性,从而有助于提高软件的生产效率。