下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 面向对象的建模技术

面向对象的建模技术.doc

面向对象的建模技术

尹海寞
2013-11-13 0人阅读 举报 0 0 暂无简介

简介:本文档为《面向对象的建模技术doc》,可适用于IT/计算机领域

面向对象的建模技术(OMT)以前我们在用Fortran、C语言进行编程时实际上使用了一种叫做面向过程的程序设计方法也就是所说的结构化方法。这种方法强调对系统功能进行抽象系统功能的实现是通过对若干个模块的调用来完成的。历史已经证明这种方法在降低软件开发成本、提高软件生产率方面是一次失败的尝试。为什么呢?客观世界是一个对象的世界人类对客观事物的认识又是一个由特殊到一般、一般到特殊的过程。而面向过程所能提供给我们的解决问题的方法却是“后一步的设计要满足前一步的要求”。这种强调系统功能、一环套一环的设计方法使我们设计出来的软件模块仅仅是满足了特定的需求并且在软件系统后期维护过程中它仅能给程序员提供很小的活动空间。回首往事除了仅有的几个数学函数外又有多少个所谓的模块可以真正地重用!又有多少位软件工程师在为自己所做的“遗憾工程”感到惋惜!这些主要是由于计算机求解的问题空间与解题的方法空间不一致两种空间的映射量太大!当然产生上述问题的最根本的原因还应是冯偌伊曼的计算机体系结构。面向对象的方法正是在上述背景下产生的。面向对象的方法认为:客观世界的问题都是由客观世界的实体及其相互之间的联系构成的。我们把客观世界的实体称为问题对象那么对象都有自己的运动状态及运动规律不同对象之间的相互作用和相互通信就构成了完整的客观世界。使用面向对象的方法人们可以逐步去解决问题而在问题逐步深入过程中不必去重新修改前面已完成的设计工作。由于采用了数据抽象和封装技术面向对象的程序设计降低了各模块间的关联程度这就相对减少了程序员之间的相互影响。这项技术是在设计初期只由有很少的程序员介入的情况下通过在对象系统中建立一个高层次的通讯环境来实现的它使得今后更改引起的成本大大降低。使用面向对象的方法详细定义用户的数据类型将它们封装在一起又可实现较高的代码利用率。当今计算机产业正朝着分布式处理、并行处理、网络化和软件生产工程化发展而面向对象的方法是作为实施这些目标的关键技术之一。面向对象的方法中有一些重要的概念它们是对象、封装、继承和多态等。对象就是人们所感兴趣的任何事物它可以是有形的实体、某种作用及性能等。对象都有其运动状态和运动规律因此对象具有很强的表达能力和描述功能。对象中包含数据和对数据操作的代码它实现了数据和操作的结合。具有相同结构、操作并遵守相同约束规则的对象的集合就是类。封装是一种组织软件的方法它的基本思想是把客观世界中联系紧密的元素及相关操作组织在一起构造具有独立含义的软件实现使其相互关系隐藏在内部而对外仅仅表现为与其它封装体间的接口关系。封装的目的就是信息隐匿。在面向对象的方法中是通过对象类来实现封装的。继承用于描述类之间的共同性质它减少了相似类的重复说明。继承使得程序员对共同的操作及属性只说明一次并且在具体的情况下可以扩展细化这些属性及操作。多态性指相同的语言结构可以代表不同类型的实体或者对不同类型的实体进行操作。对于大多数面向对象的编程语言在类的继承关系中有一种独特的多态现象即如果类P是类S的父类则子类S的一个对象s可以用在父类P的一个对象p所使用的任何地方。面向对象的方法有很多种这里所介绍的面向对象的建模技术是指JamesRumbaugh等人所著的“ObjectOrientedModelingandDesign”中谈到的OMT的方法。OMT是一种通过模型来思考问题的方法这些模型都是围绕着真实世界的概念建立的。OMT方法提供了一组面向对象的概念及图形符号然后利用这些概念及符号来分析需求、设计系统、实现它适应于整个软件的开发过程。OMT方法是一种思考问题的方法而不仅仅是一种编程技术。由于面向对象的地震物理模拟软件平台是采用OMT方法设计的所以这里对OMT方法做一个比较详细的介绍。首先介绍OMT的一些建模概念和图形符号。建模的概念模型是为了对事物进行更好的理解而对事物本身所做的抽象。由于模型忽略了一些事物的非本质属性所以它比原来的事物更容易操纵。OMT的方法是从三个相关但体现系统不同方面的角度去对一个系统进行建模得到的三种模型分别是对象模型、动态模型和功能模型。每一种模型描述系统的一个方面。对象模型代表了系统静态的结构。动态模型代表了系统随时间变化的、行为的、控制的方面。功能模型代表了系统的功能的方面。这三种模型不是完全独立的每一种模型都包含对其它模型的引用。系统也不是各独立部分的组合。这三种模型是随着开发过程不断演变的(从问题域中的模型逐步演变为计算机域的模型-程序实现)。在系统分析阶段问题域的模型被创建这时不用考虑实现在系统设计阶段解决方法的一些结构要加到模型中去在实现阶段问题域和解决方法的结构要实施为代码。模型有两方面的意义一是用来理解问题域、理解系统二是作为解题的方法。我们先来看看对象模型。对象模型对象模型描述了系统的静态结构它提供了系统中的对象、对象之间的关系、标识每一对象类的属性及行为等。在三种模型中对象模型是最重要的。在此将对象模型的一些概念陈述如下:对象-是一种概念、一种抽象是问题域中有着明确意义的事物。类-描述了一组具有相同属性、行为、共同语法特征以及和其它对象有着相同联系的对象。属性-是对象拥有的数据值。行为-是一种功能作用于对象。联系-是两个对象之间物理的或概念上的联系。关联-是两个类(问题域)之间的联系。聚合-聚合是一种特殊的关联它代表了部分-整体的关系。A聚合了B可以表示为A“hasa”B。继承-继承是共享类的相似点但同时保留差别的一种强有力的抽象手段。一个子类可以继承它的父类。A继承B可以表示为A“isa”B。对象模型的内容要与求解的问题相关。图为对象模型的图形符号记法。动态模型对于一个系统我们首先了解它的静态结构了解单一时刻的各对象的结构及它们之间的关系然后我们才是检查对象及其相互关系随时间发生的变化。一个系统的关于时间和变化的方面就是动态模型。在此将动态模型的一些概念陈述如下:状态-状态是对对象属性值和对象联系的一种抽象。状态决定了对象对外部事件激励所做成的反应。一个状态一般伴随一个持续的活动状态对应一个时间段。事件-一个独立的从一个对象到另一个对象的激励叫事件。事件对应一个时间点、一个动作。对象接收到一个事件其下一个状态依赖于当前的状态及其接收到的事件。·Class:·Association:AssociationNameClassNameClassClassroleroleClassNameQualifiedAssociation:Attribute::AssociationNameOperation::ClassQualifierClassrolerole·Inheritance:·MultiplicityofAssociations:SuperclassClassExactlyoneClassMany(ormore)SubclassSubclassClassOptional(orone)·Aggregation:ClassOneormoreAssemblyClass,ClassNumericallyspecified·Ordering:(ordered)classPartClassPartClass·LinkAttribute:·ObjectInstances:AssociationNameClassClass(ClassName)linkattribute·InstantiationRelationship:(ClassName)ClassName图状态图-状态图是一个由事件和状态所组成的网络。它是一个图其节点为状态有向弧为标有事件名的转变。动态模型就是一个彼此共享事件、交互作用的状态图的集合。仅为那些具有动态行为的对象类构造动态模型。图为动态模型的图形符号记法。·EventcausesTransitionbetween·EventwithAttribute:States:eventevent(attribute)StateStateStateState·InitialandFinalStates:·ActiononaTransition:eventactionInitialIntermediateStateState·GuardedTransition:Sendinganeventtoanotherobject:event(guard)eventStateStateStateStateStateGeneralization:eventSuperstateClasseventSubstateSubstateeventeventSplittingofcontrol:Synchronizationofcontrol:eventSubstateSubstateeventeventeventSubstateSubstateevent图功能模型功能模型描述了一个系统内的计算、功能(确定了计算的结果不考虑如何计算)。功能模型确定发生了什么动态模型确定什么时候发生对象模型决定了对谁发生。·Process:·DataFlowbetweenProcesses:datanameprocessnameprocessprocess·DataStoreorFileObject:·DataFlowthatResultsinaDataStore:NameofNameofdatastoredatastore·ActorObjectsControlFlow:(asSourceorSinkofData):booleanresultActorprocessActorprocessprocessdd·AccessandUpdateCompositionofDataValue:ofDataStoreValue:dDatastorecompositeddprocess·DuplicationofDataValue:DecompositionofDataValue:dcompositedd图功能模型包含了众多的数据流图用以表明数据的流动、从外部输入、通过操作、内部的数据存储以及数据的输出。功能模型只能指示可能的功能计算路径它不能确定哪一条路径实际发生。功能模型没有显示系统的控制信息和对象结构信息。在此将功能模型的一些概念陈述如下:处理过程:处理转变数据值低层次的处理就是一个纯粹的函数。数据流:数据流连接一个对象或处理的输出到另一个对象或处理的输入。它代表一个计算的中间数据值。在数据流上的数据是不改变的。行动者:行动者是一个通过产生或消费数据而驱动数据流的活动对象。行动者与数据流图的输入和输出相连。数据仓库:数据仓库是数据流图中为了以后的应用而存储数据的对象。控制流:一个裁决映象了一个或多个处理的执行这是动态模型的控制方面的问题。将裁决信息包含在功能模型中这样可以显示出数据的依赖性。在数据流图中的控制流专门负责这方面的问题。控制流是一个布尔函数值它影响了哪一个处理被执行。数据流图:数据流图显示了一个系统计算各值间的函数关系包括输入值、输出值和内部的数据存储。功能模型包含了众多的有明确操作意义和约束条件的数据流图DFD。图为功能模型的图形符号记法。对象模型、动态模型和功能模型之间的关系对于功能模型:对象模型显示了处理的结构、数据仓库和功能模型中的数据流动态模型显示了处理执行的顺序。对于对象模型:功能模型显示了类的操作和每一操作的参数它也显示了各类之间的关系动态模型显示了每一对象的状态以及接收事件、状态改变所执行的操作。对于动态模型:功能模型定义了在动态模型中没有定义的原子动作和活动对象模型显示了什么改变了状态、什么经历了操作。每一种模型都集中描述系统的一个特定的方面而对其它的方面没有解释。虽然对于不同类型的系统三种模型的重要程度是不同的但对于全面理解一个问题三种模型都是必要的。设计方法学软件工程一个通过使用预定义的技术和符号约定、组织生产软件的过程。这个过程一般被表述为一系列的阶段这些阶段组成一个完整的软件的生命周期它包括从问题声明开始到分析、设计、实现、测试还有维护与升级。OMT方法作为一种软件工程的方法它支持整个软件的生命周期。但对于测试与维护OMT的方法同其它软件工程方法区别不大这里暂不介绍。OMT方法包括以下几个阶段:分析-分析阶段最开始的工作是问题声明。问题声明描述了要解决的问题提供了推荐系统的总体概念。然后是与用户及真实世界的背景知识交流。分析阶段的成果是得到了捕获系统三个方面的形式模型。系统设计-该阶段确定系统的总体结构。对象设计-该阶段将分析的模型细化然后产生一个实际的设计。在对象设计阶段有一个从应用域概念到计算机域概念的转变。下面就简要介绍一下各阶段的工作方法。分析分析是OMT方法的第一个阶段它涉及设计一个精确的、可理解的、准确的、形式的、概念的、关于真实世界的模型它澄清了需求为系统的设计和实现提供了框架。写或得到一份原始的问题声明。建立对象模型*确认对象类*准备一个数据字典包括对类、属性和关联的描述。*增加类之间的关联。*为对象和联系增加属性。*用继承组织和简化对象类。*检测路径迭代上述过程。*将类分组形成模块。===>对象模型=对象模型图+数据字典。建立动态模型*确认系统中典型的需要交互的情况(广义和狭义的交互方式)。*识别对象间的事件。*为每一个交互的情况准备事件足迹图。*准备系统的全局事件流图。*根据每一对象的事件足迹图建立状态图。*为校验一致性匹配对象间的事件。===>动态模型=状态图+全局事件流图。建立功能模型*确定输入和输出值。*用数据流图表示功能依赖关系。*描述每一个功能做什么。*确定约束和优化标准。===>功能模型=数据流图+约束。校验、迭代和精炼三种模型*增加在动态模型、功能模型中发现的操作到对象模型中。*校验类、关联、属性和操作的一致性和完备性。将这三种模型与问题声明及相关问题域知识做比较。*重审问题声明迭代上述过程一直到分析结束。===>分析文档=问题声明+对象模型+动态模型+功能模型。系统设计系统体系结构是系统总体的组织结构。存在一些常用的共同的系统结构每一种结构适应于一种类型的应用。不同类型的体系结构将重点放到不同的模型上。系统设计是解决问题并建立求解的高层策略它包括将系统分为一些子系统、将子系统分配给适当的硬件和软件分量和组成框架的概念和策略。将系统分解为一些子系统。确定问题内在的并发性。分配子系统给适当的处理机和任务。选择实施数据仓库的策略。确定全局资源和对它们的存取机制。选择实施软件控制的方法(主要从动态模型中获得控制结构)。考虑边界条件。建立优先级。===>系统设计文档=系统基本的体系结构+高层策略。对象设计对象设计阶段确定了实施中用到的类和关联的全部定义以及用于实施的方法的接口和算法这时为了实施和优化数据结构和算法要增加一些内部对象。在OMT方法中模型符号记法跨越分析、设计和实施阶段。设计阶段开始了一个转变即从面向真实世界的分析模型到面向计算机求解的具体实施。从其它模型中为对象模型获得操作。*在功能模型的处理中找操作。*根据控制的实施为每一个动态模型中的事件定义操作。为实施的操作设计算法。*选择算法-最小成本的实施。*选择合理的数据结构。*如果必要定义新的类和操作。优化数据存取。*为增加方便性和减少存取成本引入冗余关联。*为效率重新安排计算。*保留导出属性-减少计算。实施软件控制。调整类结构以增加继承。实施关联。确定对象属性表征。将类与关联分成一些模块。===>对象设计文档=详细对象模型+详细动态模型+详细功能模型。从设计到实施写代码是设计阶段的扩展。写代码实际上是很机械的因为所有困难的裁决在设计阶段已经完成了。代码应是从设计到特定语言的简单翻译。在编码阶段也要做一些裁决。因为程序代码是问题解决的最终体现所以程序的风格对于可维护性及可扩展性是很重要的。我们可以用任何一种语言来实施设计。任何一种语言无论是面向对象的(C、Eiffer、Smalltalk等)还是非面向对象的(C、Pascal等)都是一种工具可以被使用得很好也可能被用得很差。面向对象编程大大改善了程序的表达能力但同时也增加了混乱的可能性(如果你是一个粗心的程序员)。好的程序需要纪律要坚持好的编程风格。考虑多方面的因素我们的开发工具采用的是C具体来说是VisualCforWindowsNT。C对面向对象概念的支持是比较彻底的C中与面向对象有关的特征为:类和数据封装结构作为一种特殊的类构造函数和析构函数类的私有、保护和公有部分对象和消息友元类中运算符及函数名重载派生类虚拟函数等。当主要关心的问题是对持久数据的存储而不是对数据的操作时那么数据库是实施的有效形式。数据库主要的焦点在于数据库的结构和对数据的约束。数据库的命令主要是对数据库某一数据集合的操作这其中包含着高度的并发性而传统语言大多数都是串行的。数据库体系结构的基本部分之一就是提供并发的数据操作。前面我们谈到OMT是认识事物的方法所以它不仅仅应用于软件的设计它也可以被应用于硬件的设计、知识库的设计和商业企业建模。由于实施与具体的开发环境及语言紧密相关这里就不做介绍了。OMT方法并不是最新的方法一种叫做UML〔UnifiedModelingLanguage〕的方法目前可能已经成为了面向对象的工业标准。由于资料获取及其它各方面的原因本文并没有采用UML。UML的出现并不意味着OMT的过时。UML也是以OMT为基础产生的OMT方法已成功地应用于很多大型的软件项目中。在计算机领域最新的技术不一定就是最成熟、最完善的技术。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/9

面向对象的建模技术

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利