软件工程第七讲教案.doc

上传人:wj 文档编号:1294843 上传时间:2023-04-30 格式:DOC 页数:39 大小:273KB
下载 相关 举报
软件工程第七讲教案.doc_第1页
第1页 / 共39页
软件工程第七讲教案.doc_第2页
第2页 / 共39页
软件工程第七讲教案.doc_第3页
第3页 / 共39页
软件工程第七讲教案.doc_第4页
第4页 / 共39页
软件工程第七讲教案.doc_第5页
第5页 / 共39页
软件工程第七讲教案.doc_第6页
第6页 / 共39页
软件工程第七讲教案.doc_第7页
第7页 / 共39页
软件工程第七讲教案.doc_第8页
第8页 / 共39页
软件工程第七讲教案.doc_第9页
第9页 / 共39页
软件工程第七讲教案.doc_第10页
第10页 / 共39页
软件工程第七讲教案.doc_第11页
第11页 / 共39页
软件工程第七讲教案.doc_第12页
第12页 / 共39页
软件工程第七讲教案.doc_第13页
第13页 / 共39页
软件工程第七讲教案.doc_第14页
第14页 / 共39页
软件工程第七讲教案.doc_第15页
第15页 / 共39页
软件工程第七讲教案.doc_第16页
第16页 / 共39页
软件工程第七讲教案.doc_第17页
第17页 / 共39页
软件工程第七讲教案.doc_第18页
第18页 / 共39页
软件工程第七讲教案.doc_第19页
第19页 / 共39页
软件工程第七讲教案.doc_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件工程第七讲教案.doc

《软件工程第七讲教案.doc》由会员分享,可在线阅读,更多相关《软件工程第七讲教案.doc(39页珍藏版)》请在冰点文库上搜索。

软件工程第七讲教案.doc

教案首页

周次日期课时序

课题

面向对象的分析与设计方法

教学目的

要求

了解面向对象相关概念;理解面向对象的分析与设计方法

重点

面向对象的分析

难点

面向对象的分析

教学过程

设计

时间分配

第七章面向对象的分析与设计方法(2*45‘)

第一节面向对象方法的基本概念与特征(45‘)

第二节面向对象的分析(45‘)

教学场所

或教学方法

使用

教具

作业

课后记

授课教师

第七章面向对象的分析与设计方法

在软件开发与设计中,对一个系统的认识是一个渐进过程,是在继承了以往的有关知识的基础上、多次迭代往复并逐步深化而形成的。

在这种认识的深化过程中,既包括了从一般到特殊的演绎,也包括了从特殊到一般的归纳。

而目前用于分析、设计和实现一个系统的过程和方法大部分是瀑布型的,即后一步是实现前一步所提出的需求,或者是进一步发展前一步所得出的结果。

因此,当越接近系统设计或实现的后期时,对系统设计或实现的前期的结果作修改就越困难。

同时也只有在系统设计的后期才能发现在前期所形成的一些差错。

而且当这个系统越大、问题越复杂时,由于这种对系统的认识过程和对系统的设计或实现过程不一致所引起的困扰也就越大。

为了解决上述这个问题,就应使分析、设计和实现一个系统的方法尽可能地接近认识一个系统的方法,换言之,就是应使描述问题的问题空间和解决问题的方法空间在结构上尽可能地—致,也就是使分析、设计和实现系统的方法学原理与认识客观世界的过程尽可能地一致。

这就是面向对象方法学的出发点和所追求的基本原则。

7.1面向对象方法的基本概念和特征

面向对象方法已经深入到计算机科学技术的许多领域,由于它所涉及的领域非常广泛,很难确切而清晰地界定它的作用范围、严格而准确地对它进行定义。

在20世纪80年代初期以前人们认为:

面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。

自80年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支,远远超出了程序设计语言和编程技术的范畴。

同时,面向对象方法也深入到计算机软件以外的一些领域。

因而,说它是一种软件开发方法也不够全面。

不过从目前看,面向对象方法最主要的应用范围仍是软件开发,对软件生命周期的各个阶段(包括分析、设计、编程、测试与维护),以及它所涉及的各个领域(如人机界面、数据库、软件复用、形式化方法、CASE工具等等),都已形成或正在形成面向对象的理论与技术体系。

7.1.1面向对象方法概述

面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。

而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。

面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。

开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。

面向对象方法强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位,而不是用一些与现实世界中的事物相差较远,并且没有对应关系的其它概念来构造系统。

可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。

另外,软件开发方法应该是与人类在长期进化过程中形成的各种行之有效的思想方法相适应的思想理论体系。

但是,在某些历史阶段出现的软件开发方法没有从人类的思想宝库中吸取较多的营养,只是建立在自身独有的概念、符号、规则、策略的基础之上,这说明当时的软件技术尚处于比较幼稚的时期。

结构化方法采用了许多符合人类思维习惯的原则与策略(如自顶向下、逐步求精)。

面向对象方法更加强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等等,这就使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。

(1)面向对象方法有如下一些主要特点:

·从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。

·事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。

·对象的属性与服务结合为一个独立的实体,对外屏蔽其内部细节,称作封装。

·把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。

·通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。

特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。

·复杂的对象可以用简单的对象作为其构成部分,称作聚合。

·对象之间通过消息进行通信,以实现对象之间的动态联系。

·通过关联表达对象之间的静态关系。

总结以上几点可以看出,在用面向对象方法开发的系统中,以类的形式进行描述并通过对类的引用而创建的对象是系统的基本构成单位。

这些对象对应着问题域中的各个事物,它们属性与服务刻画了事物的静态特征和动态特征。

对象类之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系。

因此,无论是系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射成问题域。

(2)对于面向对象的定义如下:

•一种使用对象(它将属性与操作封装为一体)、消息传送、类、继承、多态和动态绑定来开发问题域模型之解的范型。

•一种基于对象、类、实例和继承等概念的技术。

•用对象作为建模的原子。

7.1.2面向对象的软件工程(OOSE)

1.采用软件工程学的必要

随着编程语言由低级向高级的发展,它与自然语言之间的鸿沟在逐渐变窄。

开发人员从对问题域产生正确的认识,到用一种编程语言把这些认识描述出来所付出的劳动,由机器代替人完成的工作则增多,如图7-1所示。

图7-1计算机语言发展趋势

在图7-1中,编程语言到计算机之间的深色阴影表示这部分工作是由机器自动完成的,基本不需要开发人员花费精力。

自然语言和编程语言中间的空白区域表示语言的鸿沟,它表明从人们借助自然语言对问题域有一个正确认识,到用一种编程语言正确地表达出来,其间所存在的差距。

开发人员需要在这区域做大量的工作,并且容易发生错误。

而面向对象的语言使这条鸿沟变窄,但仍有一些距离。

自然语言与问题域之间的浅色阴影表明:

虽然人们借助自然语言来认识和理解问题域属于人类的日常思维活动,不存在语言的鸿沟,但是不能说这一区域已经不存在问题。

问题主要表现在:

(1)虽然几乎人人都会运用自然语言,但不一定都能正确地认识客观世界,因为需要具有正确的思维方法。

(2)在软件开发过程中,要求人们对问题域的理解,比人们日常生活中对它的理解更深刻、更准确,这需要许多以软件专业知识为背景的思维方法。

这些问题正是软件工程学所要解决的。

软件开发是对问题域的认识和描述,软件工程学的作用从认识事物方面看,它在分析阶段提供了一些对问题域的分析、认识方法。

从描述事物方面看,它在分析和设计阶段提供了一些从问题域逐步过渡到编程语言的描述手段。

这如同在语言的鸿沟上铺设了一些平坦的路段。

但是在传统的软件工程方法中,并没有完全填平语言之间的鸿沟,见图7-2。

而在面向对象的软件工程方法中,从面向对象的分析到面向对象的设计,再到面向对象的编程、面向对象的测试都是紧密衔接的,填平了语言之间的鸿沟,如图7-3所示。

图7-2传统的软件工程方法  图7-3面向对象的软件工程方法

2.传统的软件工程学

传统的软件工程方法指面向对象方法出现之前的各种软件工程方法,这里主要讨论结构化软件工程方法。

(1)需求分析

软件工程学中的需求分析具有两方面的意义。

在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。

这些方法、原则和策略使开发人员(系统分析员)对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。

在描述事物方面,它具有一套表示体系和文档规范,这比仅用自然语言来表达更为准确,也更接近于后期的开发阶段。

但是,传统的软件工程学中的需求分析在上述两方面都存在不足。

它对问题的描述不是以问题域中的固有的事物作为基本单位,并保持它们的原貌,而是打破了各项事物之间的界限,在全局范围内以功能、数据或数据流为中心来进行分析。

例如功能分解法,把整个问题域看作一些功能和子功能;数据流法则把它看作一些数据流和加工。

所以这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。

因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,给后续开发阶段的衔接带来了困难。

(2)概要设计和详细设计

在概要设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案。

主要是决定系统的模块结构,包括决定模块的划分,模块间的数据传送及调用关系。

详细设计是在概要设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。

经过概要设计和详细设计,开发人员对问题域的认识和描述越来越接近于系统的具体实现——编程。

但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致。

结构化分析的结果——数据流图(DFD)和结构化设计的结果——模块结构图(MSD)是两种不同的表示体系。

DFD中的一个数据流,既不能对应MSD中的模块的数据,也不能对应模块间的调用关系,DFD中的加工也未必对应MSD中的一个模块。

分析与设计之间在表示体系上的不一致被称作分析与设计的鸿沟。

它为从分析到设计的过渡带来了较大的困难,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而埋藏下隐患。

分析与设计的鸿沟带来的另一个后果是,设计文档与问题域的本来面貌相差更远了,因为其中经过了两次扭曲。

当程序员手持设计文档进行编程工作时,难以透过这些文档看到问题域的本来面貌。

(3)编程和测试

编程阶段完成的任务是利用一种编程语言产生一个能够被机器理解和执行的系统,这方面技术最为成熟。

测试是发现和排除程序中的错误,最终产生一个正确的系统。

但所谓正确是相对的,因为至今还没有哪种测试方法能保证找到程序中的全部错误。

从理论上讲,从设计到编程、从编程到测试应能较好地衔接。

但是,由于分析方法的缺陷很容易产生对问题域的错误理解,而分析与设计的鸿沟很容易造成设计人员对分析结果的错误转换,所以在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生与他们不同的理解。

在实际开发过程中常常看到,后期开发阶段的人员不断地发现前期阶段的错误,并按照他们的新的理解进行工作,所以每两个阶段之间都会出现不少变化,其文档不能很好的衔接。

(4)软件维护

软件维护阶段的工作有两种情况:

一是对使用中发现的错误进行修改,二是因需求发生了变化而进行修改。

前一种情况需要从程序逆向追溯到发生错误的开发阶段。

由于程序不能映射问题域以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍。

第二种情况是一个从需求到程序的顺向过程,它也存在初次开发时的那些困难,并且又增加了理解每个阶段原有文档的困难。

3.面向对象的软件工程方法

面向对象的软件工程方法是面向对象方法在软件工程领域的全面运用。

它包括面向对象的分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的软件维护等主要内容。

OOA和OOD的理论与技术从80年代后期开始出现,到目前仍是十分活跃的研究领域。

一系列关于OOA和OOD的专著不断问世,表明面向对象方法从早期主要注重于编程理论与技术,发展成为一套较为完整的软件工程体系。

目前出现的各种OOA与OOD方法在方法论上是一致的,具体的策略、表示法、过程及模型构成等方面则略有差别。

对于OOA与OOD的职责划分也有不同的观点。

(1)面向对象的分析

OOA强调直接针对问题域中客观存在的各项事物建立OOA模型中的对象。

用对象的属性和服务分别描述事物的静态特征和行为。

问题域有哪些值得考虑的事物,OOA模型中就有哪些对象。

而且对象及其服务的命名都强调与客观事物一致。

另外,OOA模型也保留了问题域中事物之间关系。

把具有相同属性和相同服务的对象归结为一类;用一般/特殊结构(又称分类结构)描述一般类与特殊类之间的关系(即继承关系)。

用整体/部分结构(又称组装结构)描述事物间的组成关系;用实例连接和消息连接表示事物之间的静态联系和动态联系。

静态联系是指一个对象的属性与另一对象属性有关,动态联系是指一个对象的行为与另一对象行为有关。

可以看到,无论是对问题域中的单个事物,还是对各个事物之间的关系,OOA模型都保留着它们的原貌,没有转换、扭曲,也没有重新组合,所以OOA模型能够很好地映射问题域。

OOA对问题域的观察、分析和认识是很直接的,对问题域的描述也是很直接的。

它所采用的概念及术语与问题域中的事物保持了最大程度的一致,不存在语言上的鸿沟。

(2)面向对象的设计

OOA与OOD的职责划分是:

OOA针对问题域运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统实现有关的因素(包括编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体的实现。

OOD则是针对系统的一个具体的实现运用OO方法。

其中包括两方面的工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改和调整),作为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。

这些部分与OOA采用相同的表示法和模型结构。

OOA与OOD采用一致的表示法是面向对象的分析与设计优于传统的软件工程方法的重要因素之一。

这使得从OOA到OOD不存在转换,只有很局部的修改或调整,并增加几个与实现有关的独立部分。

因此OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接,大大降低了从OOA过渡到OOD的难度、工作量和出错率。

(3)面向对象的编程

面向对象的编程(OOP)又称作面向对象的实现(OOI)。

在OOA-OOD-OOP这一软件工程的过程系列中,OOP的分工比较简单,认识问题域与设计系统成分的工作已经在OOA和OOD阶段完成,OOP工作就是用同一种面向对象的编程语言把OOD模型中的每个成分书写出来。

理想的OO开发规范,应要求在OOA和OOD阶段对系统需要设立的每个对象类及其内部构成(属性和服务)与外部关系(结构和静态、动态联系)都达到透彻的认识和清晰的描述,而不是把许多问题遗留给程序员去重新思考。

程序员需要动脑筋的工作主要是:

用具体的数据结构来定义对象的属性,用具体的语句来实现服务流程图所表示的算法。

(4)面向对象的测试

面向对象的测试(OOT)是指:

对于用OO技术开发的软件,在测试过程中继续运用OO技术,进行以对象概念为中心的软件测试。

采用OO技术开发的软件含有大量与OO方法的概念、原则及技术机制有关的语法与语义信息。

在测试过程中发掘并利用这些信息,继续运用OO的概念与原则来组织测试,可以更准确地发现程序错误并提高测试效率。

主要原因是:

在用OOPL编写的程序中,对象的封装性使对象成为一个独立的程序单位,只通过有限的接口与外部发生关系,从而大大减少了错误的影响范围。

OOT以对象的类作为基本测试单位,查错范围主要是类定义之内的属性和服务,以及有限的对外接口(消息)所涉及的部分。

有利于OOT的另一个因素是对象的继承性。

对父类测试完成之后,子类的测试重点只是那些新定义的属性和服务。

对于用OOA和OOD建立模型并由OOPL编程的软件,OOT可以发挥更强的作用,通过捕捉OOA/OOD模型信息,检查程序与模型不匹配的错误。

这一点是传统的软件工程方法难以达到的。

(5)面向对象的软件维护

软件维护的最大难点在于人们对软件的理解过程中所遇到的障碍。

维护人员往往不是当初的开发人员,读懂并正确地理解由别人开发的软件是件困难的事情。

在用传统的软件工程方法开发的软件中,各个阶段的文档表示不一致,程序不能很好地映射问题域,从而使维护工作困难重重。

面向对象的软件工程方法为改进软件维护提供了有效的途径。

程序与问题域一致,各个阶段的表示一致,从而大大降低了理解的难度。

无论是发现了程序中的错误而逆向追溯到问题域,还是需求发生了变化而从问题域正向地追踪到程序,道路都是比较平坦的。

OO方法可提高软件维护效率的另一个重要原因是,将系统中最容易变化的因素(功能)作为对象的服务封装在对象内部,对象的封装性使一个对象的修改对其它影响也小,从而避免了波动效应。

7.1.3面向对象的基本概念和特征

在面向对象的设计方法中,对象和传递消息分别是表现事物及事物间相互联系的概念。

类和继承是适应人们一般思维方式的描述范式。

方法是允许作用于该类对象上的各种操作。

这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和继承性。

通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态聚束和实体的多态性,从而构成了面向对象的各种特征。

1.对象

OO方法中把组成客观世界的实体称之为问题空间的对象。

显然,对象不是固定的,可以是有形的(如一架飞机),也可以是无形的(如一项规划)。

世界上的各个事物都是由各种对象组成的,任何事物都是对象,是某一个对象类的一个元素。

复杂的对象可由相对比较简单的对象以某种方法组成,甚至整个世界也可以从一些最原始的对象开始,经过层层组合而成。

本质上,用计算机解题是借助某种语言规定对计算机实体施加某种动作,以此动作的结果去映射解,把计算机实体称之为解空间(求解域)对象。

因此从以下四方面描述:

1)从动态的观点来看,对象的操作就是对象的行为。

问题空间对象的行为是极其丰富多彩的,而解空间对象的行为是极其死板的。

因此,只有借助于极其复杂的算法才能操纵解空间对象而得到解。

传统的程序设计语言限制了程序员定义解空间对象。

而面向对象语言提供了对象概念,这样,程序员就可以自己去定义解空间对象。

2)从存储的角度来看,对象是私有存储.其中有数据也有方法。

其他对象的方法不能直接操纵该对象的私有数据,只有对象私有的方法才可操纵它。

3)从对象的实现机制来看,对象是一台自动机,其中私有数据表示了对象的状态,该状态只能由私有的方法改变它。

每当需要改变对象的状态时,只能由其他对象向该对象发送消息,对象响应消息后按照消息模式找出匹配的方法,并执行该方法。

4)在面向对象的程序设计中,对象是系统中的基本运行实体。

对象占有存储空间且具有传统程序设计语言的数据,如数字、数组、字符和记录等。

给对象分配存储单元就确定了给定时刻对象的状态,与每一个对象相关的方法定义该对象的操作。

对象的两个主要因素是属性和服务,其定义如下:

属性是用来描述对象静态特征的一个数据项。

服务是用来描述对象动态特征(行为)的一个操作序列。

一个对象可以有多项属性和多项服务。

一个对象的属性和服务被结合成一个整体,对象的属性值只能由这个对象的服务存取。

对象标识是对象的另一要素。

对象标识也就是对象的名字,有外部标识和内部标识之分。

前者供对象的定义者或使用者用,后者供系统内部唯一地识别对象。

另外需要说明以下两点:

第一点是,对象只描述客观事物本质的、与系统目标有关的特征,而不考虑那些非本质的、与系统目标无关的特征。

这就是说,对象是对事物的抽象描述。

第二点是,对象是属性和服务的结合体,二者是不可分的;而且对象的属性值只能由这个对象的服务来读取和修改,这就是后文将要讲述的封装概念。

对象定义如下:

对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。

系统中的一个对象,在软件生命周期的各个阶段可能有不同的表示形式。

例如,在分析与设计阶段是用某种OOA/OOD方法所提供的表示法给出比较粗略的定义,而在编程阶段则要用一种OOPL写出详细而确切的源程序代码。

这就是说,系统中的对象要经历若干演化阶段,虽然其表现形式各不相同,但在概念上是一致的,都是问题域中某一事物的抽象表示。

2.消息和方法

(1)消息

对象通过它对外提供的服务在系统中发挥自己的作用。

当系统中的其它对象(或其它系统成分)请求这个对象执行某个服务时,它就响应这个请求,完成服务所要求的职责。

在OO方法中把面向对象发出的服务请求称作消息。

消息用来请求对象处理或回答某些信息的要求,消息统一了数据流和控制流;某一对象在执行相应的处理时,如果需要,它可以通过传递消息请求其他的对象完成某些处理工作或回答某些信息;其他对象在执行所要求的处理活动时,同样可以通过传递消息与别的对象联系。

因此,程序的执行是靠在对象间传递消息来完成的。

OO方法中对消息的定义是:

消息就是向对象发出的服务请求,它应含有下述信息:

提供服务的对象标识、服务标识、输入信息和回答信息。

消息的接收者是提供服务的对象。

在设计时,它对外提供的每个服务应规定消息的格式,这种规定称作消息协议。

消息的发送者是要求提供服务的对象或其它系统成分(在不要求完全对象化的语言中允许有不属于任何对象的成分,例如C++程序的main函数)。

在它的每个发送点上需要写出一个完整的消息,其内容包括接收者(对象标识)、服务标识和符合消息协议要求的参数。

消息中只包含发送者的要求,它指示接收者要完成哪些处理,但并不告诉接收者应该怎样完成这些处理。

消息完全由接收者解释,接收者独立决定采用什么方式完成所需的处理。

一个对象能够接收多个不同形式、内容的消息;相同形式的消息可以送往不同的对象。

不同的对象对于形式相同的消息可以有不同的解释,做出不同的反映。

对于传来的消息,对象可以返回相应的回答信息,但这种返回并不是必须的,这与子程序的调用/返回有着明显的不同。

消息的形式用消息模式表示,一个消息模式定义了一类消息,它可以对应内容不同的消息。

例如,定义“+anInteger”为实体“3”的一个消息模式,那么“+4”、“+5”等都属于该消息模式的消息。

对于同一消息模式的不同消息,同一个对象所做解释和处理都是相同的,只是处理的结果可能不同。

对象的固有处理能力按消息分类。

一个消息模式定义对象的一种处理能力。

这种处理能力是通过该模式及消息引用表现出来的。

所以,只要给出对象的所有消息模式及相应于每一个消息模式的处理能力,也就定义了一个对象的外部特性。

消息模式不仅定义了对象所能受理的消息,而且还定义了对象的固有处理能力,它是定义对象接口的唯一信息。

使用对象只需了解它的消息模式,所以对象具有极强的黑盒性。

(2)方法

可视为允许作用于该把所有对象分成各种对象类,每个对象类都有一组所谓的方法,它们实际上是类对象上的各种操作。

图7-4给出了对象的分解图。

当一个面向对象的程序运行时,一般要做三件事:

首先,根据需要创建对象;其次,当程序处理信息或响应来自用户的输入时要从一个对象传递消息到另一对象(或从用户到对象);最后,若不再需要该对象时,应删除它并回收它所占用的存储单元。

由此可见,面向对象的设计方法放弃了传统语言中控制结构的概念,以往的一切控制结构的功能都可以通过对象及其相互间传递消息来实现。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2