第14章面向对象的设计 Chapter14 Object-oriented Design 本章主要目标是介绍一种重要的软件设计方法,即将设计用一组交互的对象来构成。 本章节学习目标 为什么软件设计可以表示成一组交互的对象,这些对象管理自己的状态和操作; 在一般的面向对象的设计过程中最重要的活动; 可能用于面向对象设计的各种模型; 表示这些模型的统一建模语言(UML)的介绍 Objectives To explain how a software design may be represented as a set of interacting objects that manage their own state and operations To describe the activities in the object-oriented design process To introduce various models that can be used to describe an object-oriented design To show how the UML may be used to represent these models 本章覆盖的主要内容 引子 对象和对象类 面向对象设计过程 系统上下文和使用模型 体系结构的设计 对象识别 设计模型 对象接口描述 设计进化 Topics covered Objects and object classes An object-oriented design process Design evolution 章节引子 对象设计过程包含设计对象类和这些类之间的关系。这些类定义了系统中的对象和它们的交互。当设计被实现为一个执行系统的时候,对象从它们的类定义中被动态创建出来 成都大学模信息科学与技术学院软件工程 面向对象系统的基本概念 面向对象系统是由一组相互交互的对象所组成的,这些对象维护它们自己的局部状态并对这些状态提供操作。对状态的表示是私有的,不能被外部对象直接访问。 面向对象的设计是面向对象开发的一个部分,在整个开发过程中始终贯彻面向对象的策略: 1 面向对象的分析 建立应用领域的面向对象模型。识别出的对象反映了与待解决问题相关的一些实体及操作。 2 面向对象的设计 建立软件系统的面向对象模型,这个软件系统能实现识别出的需求。在面向对象设计中的对象与要解决问题的答案是关联的。在问题对象和答案对象之间会存在密切的关系,但设计者有时不得不通过增加新的对象和转换问题对象的方法来实现答案。 3 面向对象的程序设计 使用面向对象的程序设计语言(如Java、C、C++)来实现软件设计。面向对象的程序设计语言支持对象的直接实现并提供设施来定义对象类 这些开发阶段之间的过渡应该是无缝的,这需要在各个阶段使用相同的符号。一个阶段到下一个阶段的转移就是要通过一些方法来精炼前一阶段的内容。包括把细节加入到已经存在的对象类的方法以及设计新对象类来提供额外功能的方法。 因为信息隐藏在对象里面,有关数据表示法的详细设计决断可以延迟到系统实现阶段。在某些情况下,关于对象的分布以及对象是顺序的还是并发的决定也可以推迟做出。如此一来,设计者不会被系统实现的细节所困扰,从而可以设计出能适应不同运行环境的设计方案。 Object-oriented development Object-oriented analysis, design and programming are related but distinct. OOA is concerned with developing an object model of the application domain. OOD is concerned with developing an object-oriented system model to implement requirements. OOP is concerned with realising an OOD using an OO programming language such as Java or C++. Characteristics of OOD Objects are abstractions of real-world or system entities and manage themselves. Objects are independent and encapsulate