第7章面向对象的仿真技术精选文档.ppt
《第7章面向对象的仿真技术精选文档.ppt》由会员分享,可在线阅读,更多相关《第7章面向对象的仿真技术精选文档.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章面向对象的仿真技术本讲稿第一页,共五十一页v71 什么是面向对象方法v 所谓面向对象是指着眼于对象的一种方法,也就是把现实世界模型化的一种方法。众所周知,现实世界是由许多事物(对象)构成的,事物之间通过互相发出消息进行联系。因此,面向对象是不以控制为中心,而是以事物(对象)的属性与行为为中心来考察问题,并使之能在计算机上进行处理的一种体系。v 这里的“事物”不仅指人、机器等物理实体,还包括“库存表”、“职工名单”等逻辑实体。人们在现实生活中,为应付现实世界的复杂性,已逐渐形成了很强的对客观事物概括分类和抽象的能力。在我们的词汇中,几乎每个名词都是一类对象,都含有一组属性和行为特性。面向对
2、象的方法正是利用了我们对事物的分类和抽象的这样一种自然倾向,将我们感兴趣的或要研究的事物及概念都统称为对象。在分析问题和解决问题时,以对象作为基本元素,去构造所要研究的系统模型。显然,面向对象的方法十分符合人的认识规律。因而易于被人们所理解与接受。本讲稿第二页,共五十一页v 面向对象这一术语来自于60年代推出的Simula仿真语言,但其概念可以追溯到40年代末人们利用数学仿真作为分析工具时的“类(C1ass)”的概念。后来面向对象方法的应用范围逐渐扩展到了系统分析、软件开发、程序设计以及数据库技术等各个方面。特别是进入90年代以后,面向对象技术已经比较成熟,由于它解决了传统的面向过程的结构化软
3、件设计方法所面临的许多困难,因此得到了越来越广泛的应用。v 软件危机是面向对象方法得以迅速发展的主要动因。而造成软件危机的主要原因是软件越来越复杂,越来越大,维护和改进越来越困难,问题成几何级数地增长。使用了面向对象技术会使软件开发周期变短,开发的软件使用周期变长,最终导致开发费用降低。本讲稿第三页,共五十一页v 使用面向对象技术之所以能达到这样的效果,在于它具有以下几个特点:v 从应用设计到解决方案更加抽象化,而且具有极强的对应性;v 在设计中容易和客户沟通;v 把信息和操作封装到对象里去;v 设计中先产生各式各样的部件,然后由部件组成框架,以至于到整个应用程序;v 由面向对象技术设计出来的
4、过程软件具有易重复使用、易改进、易测试、易维护和易扩充的特性。本讲稿第四页,共五十一页v 如果说应用的设计和开发可以分为需求分析、设计和开发三个阶段。则面向对象的方法不仅仅是一个具体的开发工具或者是一种设计手段,实际上它更是一种方法论上的指导思想,它贯穿于整个从分析设计开发的全过程,而所有的工具和支持环境等等都只是辅助手段。本讲稿第五页,共五十一页v72 面向对象的设计思想v 面向对象技术的一大特点是它比其他方法更加抽象化和更具有对应性。面向对象的抽象技术是从非常具体到抽象的,而且非常规范。这种抽象技术最基本的特征是它存在于实际应用需求的术语、资源和抽象中。v 面向对象技术在解决实际问题时是从
5、一个具体的实体着手,它通过找术语的方法找出需要研究的实体,然后去研究每个实体的属性、特征和功能。而其他方法则从一开始就着眼于产品的最终解决方案,或者是产品的开发。v 下面,我们通过比较传统的结构化设计方法和面向对象技术的设计方法的不同,进而更好地理解面向对象方法的设计技术。本讲稿第六页,共五十一页v721 结构化方法的设计思想v 结构化方法在设计时是从产品的应用着手,把应用分成不同的子系统,再把子系统分成许多模块,最后把模块分成许许多多的函数。它是一种从上到下、从大到小的设计方法。我们可以用图7.1表示结构化方法的设计思想。本讲稿第七页,共五十一页v 设计中的每一个模块(包括子系统、模块、函数
6、等各级)可以看作是一个如图72的“黑箱”,其他模块通过输入接口给“黑箱”一定的输入,“黑箱”在输出接口产生期望的输出。黑箱内的过程对黑箱外是完全封闭的,系统中的其他部分不需要干预和知道黑箱内是如何工作的。该方法有助于各个模块较为独立的设计。本讲稿第八页,共五十一页v 我们知道,一个系统的成功与否很大程度上取决于其对应用需求的抽象是否恰当。如果两人同时对同样的应用进行开发,结果是可以抽象出两种不尽相同的模型。例如一个字处理软件的开发,采用结构化方法可以得到如图73的设计结构。但是对于另外的设计者,可能认为“输入”与“修改”功能非常相关,“显示”与“打印”功能只是输出到不同的设备,“存储”与“读取
7、”是互相制约的互逆过程,因此会得出与图73的完全不同的设计结构图74。由此可以看出,结构化设计方法是一种不规范的设计方法。本讲稿第九页,共五十一页本讲稿第十页,共五十一页本讲稿第十一页,共五十一页v 结构化设计方法还存在着另一方面的问题。仍然以上述字处理软件为例,软件中各个模块需要解决许多相同的问题,例如,在各种文体和图形的建立过程中,甚至显示、打印中,都需要解决颜色问题。虽然可以考虑把颜色问题作为一个单独的模块来处理,但实际设计却存在与众多模块接口格式的统一问题。因此,实际设计时,往往不得不在各个模块中分别设计颜色处理子模块。由此可见,结构化设计方法往往存在着大量冗余代码的问题。本讲稿第十二
8、页,共五十一页v722 面向对象的设计思想v 结构化方法把视野集中在对一个产品的解决方案和实施上,而面向对象的方法则采用了完全不同的途径,其抽象技术把焦点集中在存在于应用世界的术语、资源以及抽象中。换句话说,面向对象的方法比其他方法更接近于真实世界。v 从概念上讲,面向对象方法把设计分成两个层次:一个叫做应用域,也就是我们要研究的问题范围;另一个叫做解决域,就是我们的解决问题的全部范围。面向对象的方法在对应用域进行需求分析时寻找的是实体,这些实体最终被抽象成类型。这段文字可以用图75来描述。本讲稿第十三页,共五十一页本讲稿第十四页,共五十一页v 图75中的实体、类型、对象和种类的概念都是指一组
9、实体、一组类型、一组对象及一组种类这样的概念。虚线箭头表示具有一定的关系,实线箭头表示抽象的概念。实体是具体的,可以被抽象成类型。对象是具体的,是其抽象体种类的实现。应用域的实体可以在解决域中找到其相对应的对象。同样,类型也可以找到其相对应的种类。面向对象的方法明确地规定其设计是从对应用中实体的研究开始的,然后在解决域中求出种类,再进行编程。这是一个十分严谨的设计过程。本讲稿第十五页,共五十一页v723 面向对象方法的规范性v 我们已经看到了面向对象方法在设计思想和方法上从一开始就提供了十分明确的规范。这种严谨的规范始终贯穿整个面向对象方法的三个步骤:需求分析、结构设计和实现。面向对象方法中从
10、具体到抽象及从应用域到解决域的这种极强的一一对应的解答现象在其他方法中是没有的。它把从需求分析、设计和实现这三个过程完整地、有机地、紧密地结合在一起了。我们可以用图76来描述这个现象。本讲稿第十六页,共五十一页本讲稿第十七页,共五十一页v 从图76中可以看出,需求分析和设计是重叠的。设计和实现是重叠的。也就是说,面向对象方法在需求分析中产生出来的类型和种类可以直接在设计中使用。而编程时可以直接使用设计中产生出来的种类。v 我们可以在面向对象方法设计过程中看到其中的重叠现象:v(1)在应用域中确定实体。v(2)确定实体的属性和特性。v(3)确定实体间的关系。v(4)从实体中建立面向对象方法语言的
11、设计结构。v(5)编程。v(6)调试。v(7)测试v 其中,第(2)步和第(3)步包含了需求分析和设计的重叠部分,第(4)步和第(5)步包含了设计和编程的重叠部分。本讲稿第十八页,共五十一页v724 面向对象方法与结构化方法在设计思想上的差异v 不管采用何种设计方法,成功的关键在于对应用的深刻理解。在应用面向对象方法作设计时,我们需要有一个详细的需求分析报告。这和其他的设计方法的要求是相同的。但是,在有了需求分析后,其他的方法在开始解决问题时,在设计思想和设计方法上就存在着缺陷:一是难于对一个复杂问题进行分解;二是可以用多种方法来设计。也就是说结构化方法的设计思想和方法,没有一个很好的规范。前
12、面,我们已经看到了面向对象方法在应用域和解决域的规范的严谨性。这种严谨的规范也存在于面向对象方法解决问题的开始。本讲稿第十九页,共五十一页v 面对一个应用问题,结构化方法首先做的是怎样分解子程序、模块等等。如果我们所面对的应用是一个很复杂的问题,可能子程序还可以分成子程序,模块还可以套子模块,解决方案可能变得很复杂。前面已经提到过,怎么去做一个复杂的应用,涉及经验和对问题进行抽象的能力,用一句话说,结构化方法在于着手解决问题时首先考虑的是“怎样做”。本讲稿第二十页,共五十一页v 而面向对象方法在解决问题的一开始就和其他的涉及方法不同。面向对象方法认为其他的方法在开始解决问题之前,缺少了一个十分
13、重要的步骤。也就是首先应该问的问题是“做什么”,而不是“怎样做”,第二步才是“怎样做”。面向对象正是在发现“做什么”的指导思想下在需求分析中提炼解决问题的对象。面向对象把其抽象法具体到实际的应用中去就形成了找名词、动词等等这些十分具体和规范的技术步骤。由于分析实体的属性、功能是很具体的,这也导致了面向对象法是从小到大,而结构化是从大到小;面向对象法是自下而上,而结构法是自上而下。在面向对象方法中第一件要做的事是找实体。所以,我们也可以说,面向对象法比结构化方法和其他方法更加接近真实的世界。本讲稿第二十一页,共五十一页v 从程序设计的角度来看,对象的概念设计是现实世界中实体在程序设计时的抽象化。
14、状态(数据)与操作(过程)是对象的两个组成部分。比如一盏灯,如果我们把它看作一个研究的对象,那么开着或关着(即亮或灭)就是灯的两个状态,而开灯或熄灯就是灯的两个操作。面向对象的抽象设计与目前人们所熟悉的面向过程的程序设计思想主要差别就在于:在面向过程的程序设计中,程序体现的是一种信息处理过程,它与数据的内在联系被人为地割裂了,而面向对象的方法则保持了对象的完整性。v 我们在上面提到,不同的人在相同的应用问题上,运用结构化方法可以产生不尽相同的结果。这种现象在面向对象法中会得到很好的限制。越到开发的底层,这种限制越明显。本讲稿第二十二页,共五十一页v73 面向对象的主要术语v731 对象(Obj
15、ect)v 一个对象由私有数据及其一组操作组成。对象的动作取决于发送给该对象的消息表达式。消息表达式告诉对象要求完成的功能(what to do)。对象首先根据对象名字选择相应的操作,执行该操作后再将控制返回给引用者(消息发送者)。v 这表明对象具有某种“知道”如何完成相应消息操作(how to do)的智能功能。传统语言的程序设计员也许对此不甚了解,但这正是对象风格与传统语言的操作符/操作数风格之间的不同之处。传统语言的操作数据是被动地等待相应的操作去处理,但对象是个主动的数据实体,其中封装了一组在该数据上的操作,所以对“对象”和传统的“数据”的使用方式也不同。我们可以用函数来调用数据,但不
16、能调用对象中的数据。由于对象中的数据是私有的,所以要想访问其数据的唯一方式是向该对象发送消息,让对象选择自身相应的过程运行,以完成对该数据的访问。本讲稿第二十三页,共五十一页v732 类(Class)v 将具有某种相同属性和操作的对象组成一组,进行统一的说明和实现,即称为类。因此,类是对象的抽象数据类型,对象是类的一个实例。面向对象的方法提出了类的概念,显著地减少了开发工作量,避免了重复说明。人们认识事物时,总是把事物通过分类而体系化,而面向对象方法中的类便相当于人的这种分类。v 类由“类说明”和“类实现”两大部分组成。v 类说明统一描述类的属性(数据),应遵守的约束规则,以及可执行的操作等,
17、以便使用户了解类的具体作用和功能。也可由用户根据需要自己定义和声明类中应具有的功能。类说明部分是用户使用面向对象方法必须了解的。有三种声明形式:私有的(private)、保护的(protect)和公有的(public)。v 私有部分通常定义基本数据类型的数据结构(属性),同时也定义只能在本类的内部可以访问的方法。这些方法通常用作支持公有部分的实现。v 保护部分定义的数据和方法除了从这个类中派生的子类外,在这个类外面不能被访问,它兼顾了类的继承性和封装性。v 类实现是实现类说明功能的详细过程和方法。它往往由系统开发人员研制,用户不必了解,也就是隐藏了详细实现的全部细节。这就是面向对象方法的信息隐
18、藏性。本讲稿第二十四页,共五十一页v733 方法(methods)v 方法是指在对象中被定义的过程,即对类的某些属性进行操作以达到某一目的的过程。它的实现类似于非面向对象语言中的过程和函数,它是与类的属性封装在一起的。如果一个类的公有方法可用在许多应用领域,这个类就可作为重复利用的软件组件(software component)。本讲稿第二十五页,共五十一页v734 消息(message)v 前面我们谈到“要求”对象完成某种功能,从程序设计语言的角度来说,就是要执行一个消息表达式。消息是对象间唯一的接口方式,即当多个对象联系在一起,进行一个处理时,便要使用消息。面向对象软件的实现过程,就是发送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 仿真技术 精选 文档
限制150内