面向对象的建模技术
- 格式:docx
- 大小:174.73 KB
- 文档页数:9
面向对象的建模技术(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 动态模型对于一个系统,我们首先了解它的静态结构,了解单一时刻的各对象的结构及它们之 间的关系;然后我们才是检查对象及其相互关系随时间发生的变化。
一个系统的关于时间和变化的方面就是动态模型。
在此,将动态模型的一些概念陈述如下:状态-状态是对对象属性值和对象联系的一种抽象。
状态决定了对象对外部事件激励 所做成的反应。
一个状态一般伴随一个持续的活动,状态对应一个时间段。
事件-一个独立的从一个对象到另一个对象的激励叫事件。
事件对应一个时间点、一 个动作。
对象接收到一个事件,其下一个状态依赖于当前的状态及其接收到的事件。
状态图一状态图是一个由事件和状态所组成的网络。
它是一个图,其节点为状态,有 向弧为标有事件名的转变。
动态模型就是一个彼此共享事件、交互作用的状态图的集合。
-Class :1 Subclass1Subclass2Class NameSuperclassAggregatio n :-Association :Associati on Name.Qualified Association :-Multiplicity of Associations :Orderi ng :(ordered )• class-Link Attribute :图 2.1.1仅为那些具有动态行为的对象类构造动态模型。
图2.1.2为动态模型的图形符号记法。
-Event causes Transition between States :event-Event with Attribute :.■- State-1、、---------- •In itial and Final States : + State-2 )event ( attribute )State-2-Action on a Transition :—* fin termediate State-1 eve nt / acti onState-2-Guarded Transition : .Sending an event to ano ther object:event ( guard ) 严 --------- / State-1 ” State-2 )event1.State-1》State-2event2Class-3.Synchroni zatio n of con trol :图 2.1.22.1.3功能模型功能模型包含了众多的数据流图, 用以表明数据的流动、从外部输入、 通过操作、内部 的数据存储以及数据的输出。
功能模型只能指示可能的功能计算路径, 它不能确定哪一条路 径实际发生。
功能模型没有显示系统的控制信息和对象结构信息。
在此,将功能模型的一些概念陈述如下:处理过程:处理转变数据值,低层次的处理就是一个纯粹的函数。
数据流:数据流连接一个对象或处理的输出到另一个对象或处理的输入。
它代表一个 计算的中间数据值。
在数据流上的数据是不改变的。
行动者:行动者是一个通过产生或消费数据而驱动数据流的活动对象。
行动者与数据 流图的输入和输出相连。
数据仓库:数据仓库是数据流图中为了以后的应用而存储数据的对象。
控制流:一个裁决映象了一个或多个处理的执行,这是动态模型的控制方面的问题。
将裁决信息包含在功能模型中,这样可以显示出数据的依赖性。
在数据流图中的控制流专门 负责这方面的问题。
控制流是一个布尔函数值,它影响了哪一个处理被执行。
功能模型描述了一个系统内的计算、功能 (确定了计算的结果, 不考虑如何计算)。
功能模型确定发生了什么,动态模型确定什么时候发生,对象模型决定了对谁发生。
-Process : process n ame-Data Store or File Object : -Data Flow between Processes : data name.『process-仁process--Data Flow that Results in a Data Store :Name of data store .Con trol Flow :Name of data store-Actor Objects (as Source or Sink of Data ): -Access and Update of DataStore Value : boolean result .―一“. ”process-2.Compositi on of Data Value :Data store d2d1composite.Decompositi on of Data Value :数据流图:数据流图显示了一个系统计算各值间的函数关系,包括输入值、输出值和内部的数据存储。
功能模型包含了众多的有明确操作意义和约束条件的数据流图DFD。
图 2.1.3 为功能模型的图形符号记法。