欢迎来到天天文库
浏览记录
ID:35929046
大小:237.00 KB
页数:23页
时间:2019-04-25
《第2章 对象建模》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第2章对象建模对于软件是什么以及程序如何工作,面向对象编程语言和设计语言有一个共同的理解。对象模型是UML和面向对象编程语言共享的公共计算模型。尽管编程语言和设计语言是在不同的抽象级别来表示程序的,但是我们理解这两种语言的基础都是对象模型所提供的对运行程序的抽象描述。本章在一个简单应用的背景下,引出并描述对象模型的本质特征。通过例子介绍UML提供的这些概念的表示法,说明如何实现这些概念,解释设计语言和编程语言之间的密切联系。2.1对象模型对象模型不是一个特定的UML模型,而是一种考虑程序结构的一般方式。它由构成面向对象设计和编程活
2、动的基础的概念框架组成。如同它的名字使人想起的那样,对象模型的基本性质是,计算是发生在对象之内和对象之间的。各个对象负责维护系统数据的一部分,并负责实现系统整体功能的某些方面。当程序运行时,对象典型地由内存区域表示,该内存区域中就包含着该对象存储的数据。对象还支持方法或函数,以访问和更新对象所包含的数据。因此,对象结合了计算机程序的两个根本方面,即数据和处理,在其他软件设计方法中这二者是分离的。然而,程序要比一组孤立的对象集合描述得更多。各个对象中存储的数据之间的关系必须要记录,而且程序的整体行为只有从多个不同对象的交互中才能显现
3、出来。通过允许将对象连接到一起可以支持这些需求。典型地,这是通过使一个对象能够拥有对另一个对象的引用,或者更具体地讲,是知道其他对象的位置来实现的。因而,对象模型将一个运行的程序视作是一个对象网络,或图(graph)。对象构成该图中的结点,连接对象的弧称为链接(link)。每个对象包含程序数据的一个小子集,对象网络的结构则表示这些数据之间的关系。对象可以在运行时创建和销毁,对象之间的链接也可以改变。因此,对象网络的结构,或拓扑结构,是高度动态的,会随着程序的运行而改变。对象之间的链接还可以作为对象交互的通信路径,使得对象能够通过互
4、相发送消息(messages)进行交互。消息与函数调用类似:消息典型地是请求接收对象执行它的一个方法,而且可以附有用参数表示的消息的数据。通常,对象对一个消息的响应是向其它对象发送消息,这样,计算通过网络而展开,这个网络将包含响应一个初始消息而涉及到的多个对象。描述一个运行程序的对象的图结构并跟踪各个消息的结果是有可能的:适合做这件事的工具是调试程序。但是,通过定义各个对象来编写程序通常是不可行的,而是要给出同一类的对象的类(class)的结构描述来定义对象能够持有的数据和方法的执行结果。因此,面向对象程序的源代码不是直接描述对象
5、的图,而是描述组成这个图的这些对象的特性。2.1.1对象模型在设计中的作用在设计中,对象模型的重要性在于它为UML的设计表示法提供了语义基础。UML中许多特征的含义可以通过将它们解释为对相互连接的、互通消息的对象的集合的说明来理解。可以绘制UML图(diagrams)来表示对象特定运行时的配置。然而,更加常见的是绘制和源代码作用相同的图,从一般结构上来定义运行时会发生什么。这些图分成两大类。静态图描述对象之间可能存在的关系的种类,以及作为结果的对象网络可以具有的可能的拓扑结构。动态图描述可以在对象之间传递的消息以及该消息对接收消息
6、的对象的影响。对象模型的这种双重作用使得将UML设计表示法与实际的程序相关起来非常容易,这也解释了为什么UML是适合于设计和文档化面向对象程序的语言。本章的其余部分将通过用一些基本的UML表示法文档化一个简单程序的例子予以说明。2.1.2一个库存控制的例子在制造业环境中,某些类别的复杂产品是由组成零件装配而成,常见的需求是记录所拥有的零件的库存以及这些零件的使用方式。本章我们将开发一个简单的程序来模拟不同种类的零件和它们的特性,以及用这些零件构造复杂组件的方式,通过这个例子来阐明对象模型。这个程序必须管理描述系统所知的不同零件的信
7、息。除了维护所使用的零件的不同类型信息,我们还设想对系统来说记录各个实际零件的信息也很重要,可能是为了质量保证和跟踪。对这个例子来说,我们假定对每个零件我们感兴趣的是下列三项信息:1.零件的目录查找号(整数)2.零件的名字(字符串)3.单个零件的价格(浮点数值)零件可以被装配成更复杂的结构,称为组件。一个组件可以包含多个零件,而且可以具有层次结构,也就是说,一个组件可以由许多子组件构成,每个子组件又由零件或可能它自己的更深一层的子组件构成。维护零件、组件及它们的结构信息的程序应该能够用于许多目的,例如维护目录和库存信息,记录制造的
8、组件的结构,支持对组件的各种操作,例如计算组件中零件的总价格,或者打印组件的所有零件的清单。本章我们将考虑一个简单的应用,即通过累加组件中包含的所有零件的价格,查出一个组件中的材料价格的查询功能。2.2类和对象面向对象系统中的数据和功能分布在系统运
此文档下载收益归作者所有