《软件系统开发技术》课件第9章_第1页
《软件系统开发技术》课件第9章_第2页
《软件系统开发技术》课件第9章_第3页
《软件系统开发技术》课件第9章_第4页
《软件系统开发技术》课件第9章_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.1概述9.2面向对象方法的基本概念和特点9.3面向对象的分析(OOA)方法9.4建立信息模型的基本方法9.5面向对象的设计(OOD)方法9.6小结自从80年代Smalltalk及其环境向计算机界推行以来,面向对象的技术引起了计算机界的极大关注,因为它对于软件工程学濒临的困境和人工智能所遇到障碍都是一个很有希望的突破口。随着面向对象程序设计语言的渐趋成熟,作为一种新的程序设计风范,它已逐渐为计算界所理解和接受,其应用也得到迅速发展。这些成就促使研究者把一部分注意

力转向更广,更深的层次,即去考虑面向对象的软件开发问题,并不断地取得进展。于是,一种新的软件开发的方法论——面向对象的方法论开始形成。虽然尚不完备,但实践证明这一新的方法论,有超越80年代处于全盛的结构化方法论之势。9.1概述面向对象软件开发方法(Object—OrientedSoftwareDevel.opment)又称OOSD,它的组成和开发过程类似于结构化方法。OOSD由面向对象分析(00A)、面向对象设计(00D)和面向对象程序设计(OOP)组成,即:OOSD→00A+00D+OOP。其开发过程中的顺序是≯00A→OOD→OOP;但其技术发展过程却是相反的,先有00P,然后扩展到00D,最后才有00A。其中00P是基础,00A和00D是应用OOP的机制,加上已有的分析和设计技术而形成的。所以一般说来,应用OOSD时,必须有OOP和分析及设计(如结构化方法)基础。面向对象(object—oriented,简称OO)是一种对应于真实世界概念化的抽象思维方法。

面向对象的结构是分布的;系统的结构就是它自身的分类,而这种足够适应任何可能的扩充和修正,在开发过程中结构可以保持一致;开发过程中阶段的改变,不需要方法或风范的转换,可以做到平滑的过渡。例如从OOA到OOD的转换,要比以传统方法开发时从分析到设计来得平稳和一致,因为从需求阶段到实现阶段,使用了相同的概念。面向对象的开发,最大的优点是帮助分析者,设计者及用户清楚地表述抽象概念,便于互相进行交流通讯。面向对象方法是分析问题和解决问题的新方法,其基本出发点就是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。客观世界是由许多具体的事物或事件,抽象

的概念和规则等组成的,因此,我们将任何感兴趣或要加以研究的事、物、概念都称为对象。面向对象的方法正是以对象作为最基本的元素,也是分析问题,解决问题的核心。下

面概要地介绍面向对象方法的基本概念和所具有的特点。9.2面向对象方法的基本概念和特点

1.对象(object)

对象是00方法的核心。然而,在不同的研究领域、不同的学者对“对象”的概念解释各异。尽管目前尚未有统一的定义,但可以抽取如下的共同认识:

对象是人们要进行研究的任何事物,从最简单的整数到极其复杂的宇宙飞船等都可看作对象。对象不仅能表示具体的实体,也能表示抽象的规则、计划或事件。主要有如下的

对象类型:

1)有形的实体:指一切看得见、摸得着的实物。如飞机、车辆、计算机、桌子、房子、机器人等等,都属于有形的实体,也是最易于识别的对象。

2)作用:指人或组织,如医生、教师、职工、学生、公司、部门等所起的作用。

3)事件:在特定时间所发生的事。如飞行、事故、演出、开会等。

4)性能说明:制造厂或企业,往往对产品的性能加以全面说明,如计算机厂对计算机的性能说明,往往要列出型号及各种性能指标等。

对象不仅能表示结构化的数据,而且也能表示抽象的事件、规则以及复杂的工程实体,这是结构化方法所不能做到的。因此,对象具有很强的表达能力和描述功能。在面向对象的系统中,对象是一个封装数据属性和操作行为的实体。数据描述了对象的状态,操作可操纵私有数据,改变对象的状态。当其它对象向本对象发出消息,本对象响应时,其操作才得以实现。在对象内的操作逋常叫做方法。

2.消息

对象之间进行通讯的一种构造叫做消息。当一个消息发送给某个对象时,包含要求接。

收对象去执行某些活动的信息。接收到消息的对象经过解释,然后予以响应。这种通讯机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。

3.类

一个类定义了一组大体上相似的对象。一个类所包含的方法和数据描述一组对象的共同行为和属性。例如,窗口,车轮,玻璃等都是类的例子。一个类就是这样一种抽象,它反映了与应用有关的重要性质而忽略掉其他一些无关的内容。可见,类是在对象之上的抽象,有了类以后,对象则是类的具体化,是类的实例。类可以有子类和父类,形成层次结构。

把一组对象的共同特性加以抽象并存贮在一个类中的能力,是面向对象技术最重要的一点;是否建立了一个丰富的类库,是衡量一个面向对象程序设计语言成熟与否的重要

标志。

4.继承性

继承性是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个A已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。图

9.1表示了父类A和它的子类B之间的继承关系,箭头从子类B指向父类A子类B由继承部分(C)和增加部分(D)组成。图9.1继承性分为单重继承和多重继承两类。单重继承时,一个子类只有一个父类;多重继承时一个子类可以有多于一个的父类。图9.2表示了单重继承(a)和多重继承(b)时父类和子类之间的关系。

单重继承构成的类之间的关系是一棵树,多重继承构成的类之间的关系是一个格(如果将所有无子类的类,如图9.2(b)中的类E和F,都看成还有一个公共子类的话),两者都

是典型的结构形式。图9.2继承关系是可传递的,如图9.2(a)中的E继承C,而C继承A,因而E也继承了A,所以E也是A的子类,是间接的子类,C则是A的直接子类。

继承性是面向对象程序设计语言不同于其他语言的最主要的特点。

5.多态性

在收到消息时,对象要予以响应。不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节则

由接收对象自行决定,这样,同一消息就可以调用不同的方法。多态的实现受到继承性的支持,利用类的继承的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象能够给通用消息以不同的响应。

上面列举了5个基本概念及其特点,当然还有其他特点,如动态联编也是面向对象程序设计语言的一个特点,动态联编是和类的继承性以及多态性相联系的。这些特点和概念并非在面向对象系统中最早定义的,有的在其他语言中已经采用,面向对象语言所增加新概念是类和继承性,并把以上几个概念和特点加以扩充和提高,使其有机地结合起来,形成了更加强的特有的能力。

OOA的概念在80年代后期提出,目前正处于研究和开发阶段,还不很成熟,许多问题还没有得到完全解决。OOA方法不同于结构化分析方法(SA),它强调的是对一个系统对

象的特征和行为的定义。

OOA方法并非丢弃已有的需求分析方法,如功能分解法、数据流方法(即结构化分析方法)和信息造型方法等,而是将它们的精华综合起来,发展并形成更为自然,更易于为人们所理解的面向对象的需求分析方法。9.3面向对象的分析(OOA)方法实际上OOA方法是把信息造型方法的主要优点(来自E—R图和语义数据模型)与OOP的主要优点集中在一起,扩充了对象的含义,所以比信息造型方法更完整地实现了从问题空间到系统模型的直接映射。

面向对象的分析方法主要提供了3种形式的模型:信息模型、状态模型和处理模型。这三种模型被有机地结合起来,相互影响;相互制约。图9.3充分说明了这三个模型之间的关系。图9.3

1.信息模型

信息模型是面向对象分析的基础,它用实体一关系图(E-R图)来描述。它开始用于数据库的设计,描述数据之间或属性之间的关系,E-R图则是所用的工具,这一点在第八章数据库设计方法中已有介绍。在面向对象分析中,由于加入“面向对象”概念,E-R模型有了很大提高。两者之间的不同之处是:在基于OOA方法的E,R图中,数据封装、实体和对它的属性处理组合在同一单元之中,并采用继承性和消息传递来支持模型。信息模型由问题领域中的对象所组成,根据对象、属性及对象之间的关系来规范问题

领域中的信息。信息模型用两种基本的形式来描述,一种是文本说明形式,包括对系统中所有的对象、属性、关系的描述与说明;另一种是图形表示形式,它提供一种全局的观点来考虑系统中的相关性、完全性和一致性。

信息模型的图形描述形式主要有两种,即信息结构图和信息结构概图;其文本文件描述形式主要有3种,即对象说明文件、关系说明文件以及概要说明文件。

2.状态模型

信息模型一旦建立起来,就要考查对象和关系的动态行为。面向对象的分析设定所有的对象和关系都具有其生命周期。生命周期由许多阶段组成,每个特定的阶段都包括一系列的运行规律和行为规则,用于调节和管理对象的行为。对象和关系的生命周期用其状态模型来描述。

状态模型用来描述对象和关系的状态、状态转换的触发事件、对象的行为。状态模型可用多种形式加以描述,如状态转换图和状态转换表。图形描述可以帮助我们理解对象生

命周期的转换过程,表格描述可以更详细地说明对象的状态转换关系。

3.处理模型

为状态模型中的每个状态建立一个数据流图的处理过程称为处理模型。在面向对象的重分析方法中,建立数据流图的作用不如其它面向功能的方法明显,因为数据流图中并没有添加任何新的信息。但建立处理模型可以使系统分析员对系统设计进行精化。比较某个状态模型中所有状态的数据流图就可以发现一些相同的处理(或相似的处理)重复使用,在这种情况下,建立处理模型有利于对处理操作的定义做些调整,以便使系统结构更趋合理和完善。面向对象的系统分析提供了一种独特的方法,它反映了软件问题的本质所在,即数据处理。数据和处理是两件显然相关的事情,将数据和处理人为地分离,可能会人为地制造

系统分析的障碍。OOA方法是一种以数据或信息为主线,数据和处理相结合的方法,它是以建立系统的信息模型为基础的。在面向对象的系统分析方法中最重要的一步是建立系统的信息模型,它在一定程度上发挥了关键的作用。一旦正确地建立了系统的信息模型,后继的软件开发工作通常是十分

常规的事情,也使开发者避免了许多麻烦和意外。建立信息系统模型的方法是现代软件工程中一个十分有用的方法。9.4建立信息模型的基本方法建立系统的信息模型一般经历下面几个步骤:

(1)系统调研。

(2)对系统进行初始描述。

(3)建立系统的信息结构图或信息结构概图。

(4)建立系统的文本说明文件。。

下面分别讨论上述4个步骤的实现方法。

1.系统调研

建立信息模型的最大困难是如何获得对所研究问题的理解,而要充分理解问题,就必须进行周密的调查研究。在这里提出一些建议供参考,帮助读者搜索必要的信息,并将信

息转化成对问题的理解。

1)寻求有用的文件。大量的信息可以从应用专家建立或使用的文件中提取出来。这些文件包括旧系统和它的工作流程分析,操作说明手册等。此外,还有报表,它揭示了人们

思考问题的方法。可以通过阅读空白和已填写的报表,考察它的内容以及不一致性。报表包含了诸如顾客帐单,进料单,订货单以及进度报告等多种信息。再还有报告、手工制表、分布图、逻辑图、结构图等,这些都是有益的信息源。

另外,为了获得更多的一般性的背景信息,还要去图书馆查阅大量的有关资料。

2)对话。它是一种传统的作法,善于思考的软件开发人员可以从中得到许多有效的信息。有效的对话常常在深入考查现实问题和高度抽象之间来回反复。

参加对话的人通常包括专家和所研究问题领域中的专业人员以及系统建模人员,这两方面的专业人员都是不可缺少的。

对话的形式有多样性提问、相关性提问、排除性提问等,目的是搞清对象的识别,属性的确定以及对象之间的关系等。

3)技术性注释。有效的技术性注释常常是将信息转化为对问题的理解所必需的。应鼓励分析人员写技术笔记,这在分析早期阶段是特别有用的。技术性注释包含了大量的内容,这些内容可用于对象描述。在进行多次的对话,会议,现场参观或参与工作以后,考虑写一份技术笔记。

2.系统的初始描述

在系统调研的基础上,要将调研得来的零碎材料和有关系统的各方面信息进行一系列的概括、归纳、整理,形成待开发系统的初始描述。这是在建立信息模型之前很重要的一步。

在对系统进行初始描述时,应以相同的抽象层次描述系统,也就是说,整个初始描述的抽象层次应该保持一致。应该着重弄清楚为解决问题必须做什么,而不是解决问题时所要进行的处理过程的细节。初始描述来源于调研材料,而且是非正式的,通常用自然语言或用草图来表示。下面是一个关于自动售货机的部分初始描述的例子。

自动售货机用于将货物分配给顾客。开始售货时顾客将货币通过接收孔投入机器中的硬币储藏器中,机器检查货币的大小,重量,厚度,边缘类型。有效的货币是五角币,一角币和五分币,其它的货币假定都被认为是假币,机器拒绝接收假币,并将其从退出孔退出。

当机器接收了有效的货币之后,将货币送入硬币储藏器中,顾客支付的货币根据硬币的面值进行累加。自动售货机装有货物分配器,每个货物分配器中包含有零个或多个货物并且具有相同的价格。请读者注意,在对系统进行初始描述时,要尽量做到句子的语法正确,慎重使用名词、动词、形容词和同义词,因为这些词是进一步识别系统中的对象、属性及关系的基础。

3.建立系统的信息结构图或信息结构概图

信息结构图是以各种形式实体关系图(例E—R图)为基础的。它只与信息模型中说明的对象、属性和关系有关。但信息结构图并不给出它们的含义。在信息结构图中使用的图

形符号概括如下:

·用方框表示对象及其属性,在信息模型中,属性可以加注释。

·在表示标识符的任何属性名称前,附加一个星号“*”,在非标识符属性名称前,附加一个圆点“.”或圆圈“。”。

·在参考性属性后附加(R)或(参考)。

·可以以任何顺序列出属性名称。

对象及其属性的信息结构图如图9.4所示。对象之间的二元关系由画在对象方框之间带箭头直线段来说明;父型/子型结构可表示成图9.5所示的形式。图中,短线指明了父型对

象,与父型对象通过短线连接的所有其他对象均为子型对象。图9.4图9.5如果在信息结构图中对对象和关系进行编号,那么,信息结构图便可作为文本说明文件的图表目录。

另一种称为信息结构概图,它将属性名从方框中去掉,只留下对象名,其它方面和信息结构图完全一样。概图使得图变得紧凑,容易直观反映系统概貌。

在对系统进行了初始化描述后,分析人员应根据系统的初始描述建立系统的信息结构图或信息结构概图。该图说明了系统的组成部分以及各部分之间的关系。建立信息结构图

或信息结构概图的步骤如下:

1)识别系统中的对象及其属性。识别对象是建立信息模型的重要问题。识别对象及其属性的基本依据是系统的初始描述。系统初始描述中的名词、名词词组可能是对象的名

词、对象的属性的名称或是其他对象与属性的同义词,同义词在分析中应删除掉。属性应与现有的对象相联系。在自动售货机的例子中,代表系统中部分对象的名词有:货币、硬

币、假币、硬币储藏器、五分币、一角币、五角币等,代表属性的名词有:重量、厚度、价格等。识别出所有的对象及其属性之后,要进一步确定对象是属于问题空间还是属于求解空间,因为只有属于求解空间(软件系统之内)的对象才是模型所需要的。

对象的属性除了名词及其词组外,还可能是形容词,要根据初始描述的上下文含义来确定。准确地确定对象的属性直接关系到系统的信息量或数据量。其原则或标准是在满足

系统功能的前提下,使系统中的信息量或数据量最少。

2)识别系统中对象之间的关系。关系的识别完全依赖于系统的初始描述及其含义。在初始描述中,动词或介词词组往往隐含着两个对象之间的关系的名称及其含义。如在自动

售货机例子中,硬币储藏器和硬币之间的关系是:

硬币储藏器存放硬币(1:M)

硬币存放在硬币储藏器中

3)画出系统的信息结构图或信息结构概图。识别出系统中的对象及其属性以及对象之间的关系之后,便可着手画出系统的信息结构图或信息结构概图。图9.6是自动售货机的部分信息结构概图。图9.6图9.6表明:货币由货币接收孔进入自动售货机。

一个货币可能是一枚假币或真币(硬币),合法的硬币对象是五分币、一角币或五角币。硬币存放在硬币储藏器中。

4.建立系统的文本说明文件

为了进一步对信息模型进行详细的描述,需要建立信息模型的文本说明文件。它包括对象说明文件、关系说明文件和概要文件。

对象说明文件用文本的形式描述了整个系统中的对象,即信息模型中的每个对象都要有一个说明。表9.1是自动售货机系统中的为描述对象硬币而建立的对象说明文件。关系说明文件用文本的形式描述了整个系统中对象之间的全部关系。每个关系的描述包括关系的名称、关系的类型、关系的含义及关系的形成依据。

表9.2是为自动售货机中的部分关系所建立的说明文件。概要说明文件是系统中所有对象和关系的简要说明文件,以简明的形式反映了系统中的全部信息,可作为备用参考。其形式如下:利用系统的初始描述建立的信息模型不可能一次就完全符合系统的需求,一般要经过多次反复修改和精化,才能得到一个完全符合需求、信息量最小的、包含正确信息的信息

模型。面向对象的设计(Object—OrientedDesign)方法简称OOD方法。按照软件系统生命周期的模型,系统分析之后必然是系统的设计,在采用OOA方法之后,较自然而且相互衔接得

最好的方法,必然是面向对象的设计方法(OOD)。由于面向对象方法是一种相对年轻的方法,它用于分析与设计都处于尚未成熟与定型的阶段,有关OOD方法也只能简单地介绍一

些基本的观点。9.5面向对象的设计(OOD)方法

1.OOD的主要任务和目标

在面向对象开发方法中,分析和设计虽然是不同的活动,但两者配合相当密切,即从OOA到OOD是对现实世界的进一步建模。OOA强调对现实世界中的问题域的理解,为问

题域建立模型,通过分析得到对象及这些对象间的相互关系。OOD则要求对特定的实现空间建立模型,即解决这些对象及其相互关系的实现问题。

OOD是一种新型的系统设计方法,它的核心概念是对象。它既不是功能,也不是数据的分解过程,而是首先在现实世界中寻找、识别出影响用户解决问题,并必须进行操纵的

对象,然后用相应的计算机中的软件对象来仿真现实世界的对象及其行为。实际上,客观世界问题的解早已存在于人工系统中,因此,采用OOD方法对已存在的且变化不大的人工

系统进行设计时,除了存在少量求解外,主要是如何用计算机仿真人工系统,将客观问题计算机化,从而获得更有效、更优质、更可靠的客观世界问题的解。

OOD方法为仿真人工系统提供了很自然、很直接的对应关系,它克服了传统的分析方法与设计方法所存在的客观世界问题领域与软件系统结构之间的不一致性的矛盾,这也是OO方法较传统方法最为突出的优点之一。

OOD方法的主要目标是提高软件生产率,提高质量及提高可维护性。OOD是一种系统设计活动,它不仅能减少测试时间,而且能提高整个生命周期的效率。它还能提供对软件

重用的支持,支持重用的是类的外部接口和组织结构。

2.OOD方法的实现步骤

面向对象的设计一般可分为两个阶段:概要设计和详细设计。概要设计阶段的主要任务是定义系统是如何工作的,它保持较大部分独立于编程语言的特点。而详细设计则进一

步细化概要设计阶段所给出的对象描述,它与编程语言有密切的联系,若能采用面向对象的编程语言,将会更利于OOD的编程模块设计。概要设计的主要工作是:

1)进一步细化对象行为和对象之间交互作用,并加入必要的新对象。

2)对类加以认定,以得到解空间的结构形式,为系统的具体实现提供必要的支持。

3)把已认定的类组成类阵,用以支持重用。

4)确定外部接口和主要的数据结构。

详细设计是紧接着概要设计进行的,其目的则是为实现做好准备,而编程所需要的主要是有关对象的描述,因此,加细概要设计阶段所给出的对象描述将是这个阶段的主要工作。例如,一个对象中的方法,哪些是公用的,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论