面向对象的建模技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象的建模技术(OMT)
以前,我们在用Fortran 、C 语言进行编程时实际上使用了一种叫做面向过程的程序设计方法,也就是所说的结构化方法。这种方法强调对系统功能进行抽象,系统功能的实现是
通过对若干个模块的调用来完成的。历史已经证明这种方法在降低软件开发成本、提高软件生产率方面是一次失败的尝试。为什么呢?客观世界是一个对象的世界,人类对客观事物的
认识又是一个由特殊到一般、一般到特殊的过程。而面向过程所能提供给我们的解决问题的方法却是“后一步的设计要满足前一步的要求” 。这种强调系统功能、一环套一环的设计方法使我们设计出来的软件模块仅仅是满足了特定的需求,并且在软件系统后期维护过程中它仅能给程序员提供很小的活动空间。回首往事,除了仅有的几个数学函数外又有多少个所谓的模块可以真正地重用!又有多少位软件工程师在为自己所做的“遗憾工程”感到惋惜!这些主要是由于计算机求解的问题空间与解题的方法空间不一致,两种空间的映射量太大!当然产生上述问题的最根本的原因还应是冯. 偌伊曼的计算机体系结构。面向对象的方法正是在上述背景下产生的。
面向对象的方法认为:客观世界的问题都是由客观世界的实体及其相互之间的联系构成的。我们把客观世界的实体称为问题对象,那么对象都有自己的运动状态及运动规律,不同对象之间的相互作用和相互通信就构成了完整的客观世界。使用面向对象的方法人们可以逐步去解决问题,而在问题逐步深入过程中不必去重新修改前面已完成的设计工作。由于采
用了数据抽象和封装技术,面向对象的程序设计降低了各模块间的关联程度,这就相对减少了程序员之间的相互影响。这项技术是在设计初期只由有很少的程序员介入的情况下,通过在对象系统中建立一个高层次的通讯环境来实现的,它使得今后更改引起的成本大大降低。使用面向对象的方法详细定义用户的数据类型,将它们封装在一起又可实现较高的代码利用率。
当今,计算机产业正朝着分布式处理、并行处理、网络化和软件生产工程化发展,而面向对象的方法是作为实施这些目标的关键技术之一。
面向对象的方法中有一些重要的概念,它们是对象、封装、继承和多态等。对象就是人们所感兴趣的任何事物,它可以是有形的实体、某种作用及性能等。对象都有其运动状态和运动规律,因此对象具有很强的表达能力和描述功能。对象中包含数据和对数据操作的代码,它实现了数据和操作的结合。具有相同结构、操作并遵守相同约束规则的对象的集合就是类。封装是一种组织软件的方法,它的基本思想是把客观世界中联系紧密的元素及相关操作组织在一起,构造具有独立含义的软件实现,使其相互关系隐藏在内部,而对外仅仅表现为与其它封装体间的接口关系。封装的目的就是信息隐匿。在面向对象的方法中,是通过对象/类来实现封装的。继承用于描述类之间的共同性质,它减少了相似类的重复说明。继承使得程序员对共同的操作及属性只说明一次,并且在具体的情况下可以扩展细化这些属性及操作。多态性指相同的语言结构可以代表不同类型的实体或者对不同类型的实体进行操作。对于大多数面向对象的编程语言,在类的继承关系中有一种独特的多态现象,即如果类P是类S的父类,则子类S的一个对象s可以用在父类P的一个对象p所使用的任何地方。
面向对象的方法有很多种,这里所介绍的面向对象的建模技术是指James Rumbaugh
等人所著的"Object-Oriented Modeling and Design ”中谈到的OMT的方法。OMT是一种
通过模型来思考问题的方法,这些模型都是围绕着真实世界的概念建立的。OMT方法提供了
一组面向对象的概念及图形符号,然后利用这些概念及符号来分析需求、设计系统、实现,它适应于整个软件的开发过程。OMT方法是一种思考问题的方法,而不仅仅是一种编程技术。
由于面向对象的地震物理模拟软件平台是采用OMT方法设计的,所以这里对OMT方法
做一个比较详细的介绍。首先介绍OMT勺一些建模概念和图形符号。
2.1建模的概念
模型是为了对事物进行更好的理解而对事物本身所做的抽象。由于模型忽略了一些事物的非本质属性,所以它比原来的事物更容易操纵。
OMT的方法是从三个相关但体现系统不同方面的角度去对一个系统进行建模,得到的
三种模型分别是对象模型、动态模型和功能模型。每一种模型描述系统的一个方面。对象模型代表了系统静态的结构。
动态模型代表了系统随时间变化的、行为的、控制的方面。
功能模型代表了系统的功能的方面。
这三种模型不是完全独立的,每一种模型都包含对其它模型的引用。系统也不是各独立部分的组合。
这三种模型是随着开发过程不断演变的(从问题域中的模型逐步演变为计算机域的模型-程序实现)。在系统分析阶段,问题域的模型被创建,这时不用考虑实现;在系统设计阶段,解决方法的一些结构要加到模型中去;在实现阶段,问题域和解决方法的结构要实施为代码。模型有两方面的意义,一是用来理解问题域、理解系统,二是作为解题的方法。我们先来看看对象模型。
2.1.1 对象模型
对象模型描述了系统的静态结构,它提供了系统中的对象、对象之间的关系、标识每
一对象类的属性及行为等。在三种模型中,对象模型是最重要的。在此将对象模型的一些概念陈述如下:
对象-是一种概念、一种抽象,是问题域中有着明确意义的事物。类-描述了一组具有相同属性、行为、共同语法特征以及和其它对象有着相同联系的对象。
属性-是对象拥有的数据值。
行为-是一种功能,作用于对象。
联系-是两个对象之间物理的或概念上的联系。
关联-是两个类(问题域)之间的联系。
聚合-聚合是一种特殊的关联,它代表了部分-整体的关系。A聚合了B,可以表示为
A“has a ”B。
继承-继承是共享类的相似点但同时保留差别的一种强有力的抽象手段。一个子类可
以继承它的父类。A继承B,可以表示为A“is a ” B。
对象模型的内容要与求解的问题相关。图 2.1.1 为对象模型的图形符号记法。
2.1.2 动态模型