软件工程第8章(2-04)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1.2 面向对象的基本概念
4.1.2 面向对象的基本概念

4.封装 封装是面向对象方法的一个重要原则,它主要包括两层意 思:一是指把对象的全部属性和全部服务操作结合在一起, 形成一个不可分割的整体;二是指对象只保留有限的对外 接口使之与外界发生联系,外界不能直接访问和存取对象 的属性,只能通过允许的接口操作,这样就尽可能地隐蔽 了对象的内部细节,对外形成了一个保护的边界。 5.消息 消息传递是对象间的通信手段,一个对象通过向另一个对 象发送消息来请求其服务。一个消息通常包括接收对象名、 调用的操作名和适当的参数(如果有必要的话)。消息只 告诉接收对象需要完成什么操作,但并不指示接收者怎样 完成操作。消息完全由接收者解释,接收者独立决定采用 什么方法完成所需的操作。
4.2.1 面向对象分析的目标、任务与 原则

1.面向对象分析的目标与任务 面向对象分析是软件开发过程中的问题定义阶段, 它的目标是完成对所需求解问题的分析,确定待 建的系统所要做的工作,定义所有与待解决问题 相关的类(包括类的属性和操作、类与类之间的 关系以及它们表现出的行为),并建立系统的模 型。为达到这一目标,必须完成以下任务:
4.2.2 面向对象分析的过程

1.获取客户对系统的需求 在解决问题之前,通常需要对问题做深入的了解,对问题 的理解越全面、透彻,就越有助于问题的解决。需求获取 必须是在用户与软件设计者之间充分交流的基础上进行的, 从用户使用的角度提出系统实现的功能要求,软件设计者 根据以往的开发经验,可给用户提供一些建议,两方面交 换意见,形成基本的需求说明文档。需求文档中不涉及具 体的设计决策,只是对用户需求进行详细说明,它是指导 开发者进一步分析系统的基础文档,随后进行的面向对象 分析的目的,就是深入理解问题域和用户的真实需求,通 过建立模型的方式精确体现。



通过上述分析,可以得到一些候选的对象,但并非所有的候选对象都会对解决问题起作用。因此,还需要进行选择 并确定最终的对象。 (2)筛选对象并确定关联 进一步确定对象的作用,将对象集合中冗余的对象、不具体的对象、与实际问题表述无关的对象,或可做为属性或 操作的一些内容去除或重新确定,同时考虑对象之间的关联(两个或多个对象之间的相互关系及作用),可以更进 一步确定对象及关联对问题域的表述情况,使筛选出的对象集合能够较好地实现交互,从而有利于进行设计和实现 等工作。 (3)标识属性和定义操作 属性是对象的特性,标识属性有助于对对象的深入理解,一般可以从问题陈述中提取出对象的属性,属性的选择不 是对象的所有特征,而是基于解决的具体问题,抽取问题中对象涉及的一些特征,操作定义了对象的行为并以某种 方式修改对象的属性值。操作可以通过对系统的过程叙述分析提取出来,通常一些动作词语可作为候选的操作。每 个操作能够体现类的某种行为,操作根据具体情况可分为施加操作和承受操作两种。 (4)识别类之间关系 确定了对象后,将一组具有相似特性的对象进行抽象,形成类,并确定描述对象的基本属性和操作。同时,根据类 之间的关系,通过继承方式,共享一些信息,即可形成类的层次结构。
面向对象的开发方法
面向对象的开发方法以20世纪60年代末的 SIMULA语言的诞生为标志,包括面向对象的分 析、面向对象的设计和面向对象的实现。面向对 象的开发方法是现代软件开发过程中比较流行的 新方法与技术,它已发展成一套完整的方法论和 系统化的技术体系,在实践中有着非常广泛的应 用。 本章概述了面向对象方法的定义、特点和基本概 念,以及面向对象分析的目标、任务、原则和过 程,分类说明了面向对象建模的几种模型和 UML, 重点介绍了面向对象设计的基本内容。
4.2.2 面向对象分析的过程
2.确定类和对象 面向对象分析中的一个重要任务就是标识
对象并从中抽象出类,一组具有相同属性 和操作的对象可以定义成一个类,因此标 识类和标识对象是一致的
4.2.2 面向对象分析的过程
wk.baidu.com
(1)查找对象 识别系统中的对象可以从问题陈述或用例描述着手,通常陈述中的名词或名词短语将可能是对象,它们通常以下面 几种形式表现出来:

与用户进行充分沟通,了解用户对软件的需求。 识别解决问题的对象集合及对象间的关系。 定义类(包括定义其属性和操作)并建立类间的层次 关系
2.面向对象分析的基本原则




为建立分析模型,要运用以下几项基本原则: (1)构造和分解相结合的原则 构造是指将基本对象组装成复杂或活动对象的过程;分解是对大粒度 对象进行细化,从而完成系统模型细化的过程。 (2)抽象和具体相结合的原则 抽象是指强调事物的本质属性而忽略非本质细节;具体则是对必要的 细节进行刻画的过程。在面向对象(OO)的方法中,抽象包括数据 抽象和过程抽象,数据抽象把一组数据及有关的操作封装起来,过程 抽象则定义了对象间的相互作用。 (3)封装和继承的原则 封装是指将描述对象的各种属性和操作分离,形成独立的完整的对象, 尽量减少对象间的相互依赖,使得对象间的交互通过接口实现,有助 于提高程序的可重用性;继承是提供一些相似的对象共享属性和操作 的特性,要方便继承的实现,则要求对构造类的用途尽量单一,继承 的目的也是为了提高程序的可重用性。
1.面向对象概念的涵义
什么是面向对象? Coad和Yourdon为此下了一个定义:面向
对象即:对象+类+继承+通信。 如果一个软件系统是使用这样4个概念设计 和实现的,则认为这个软件系统是面向对 象的。一个面向对象的程序的每一个组成 部分都是对象,计算是通过建立新的对象 和对象之间的通信来运行的。
4.1.2 面向对象的基本概念
7.多态性 对象的多态性是指在一般类中定义的属性
或服务被特殊类继承之后,可以具有不同 的数据类型或表现出不同的行为,这使得 同一个属性或服务名在一般类及其各个特 殊类中可具有不同的语义。
4.2 面向对象分析


分析的过程是提取系统需求的过程,主要包括理解、表达和验证。面 向对象分析主要由对象模型、动态模型和功能模型所组成。 由于问题复杂,而且交流带有随意性和非形式化的特点,理解过程通 常不能一次就达到理想的效果。因此,还必须进一步验证软件需求规 格说明的正确性、完整性和有效性,如果发现了问题则进行修正。显 然,需求分析过程是系统分析员与用户及领域专家反复交流和多次修 正的过程。也就是说,理解和验证的过程通常交替进行,反复迭代, 而且通常需要利用原型系统作为辅助工具。 面向对象分析(object-oriented analysis,OOA)的关键,是识别出 问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简 洁、精确、可理解的正确模型。在用面向对象观点建立起的模型中, 对象模型是最基本、最重要、最核心的模型。

4.1 面向对象方法概述

|面向对象是一个全新的概念,面向对象方法已深 入到软件领域的大多数分支,它将面向对象分析、 面向对象设计和面向对象程序设计集成在一起。 这种方法改进了软件生存期各阶段之间的接口, 强调软件的重用,把开发可重用的软件部件作为 系统开发过程的一部分。作为一种开发模式,它 同时也对软件开发过程的所有阶段进行综合考虑。 对于软件生存期的各个阶段来说,面向对象方法 具有高度的连续性,是现代软件开发过程中广泛 采用的一种新的方法。
4.1.2 面向对象的基本概念


6.结构 在任何一个较为复杂的问题域中,对象之间都不是相互孤立、互不相关的,而是具有一定的关系, 并因此而构成一个有机的整体,从而使对象之间的交互与合作构成更高级的行为。 对象之间联系的结构一般有如下几种: (1)一般/特殊结构 又称为分类结构,是由一组具有一般/特殊关系的类所组成的结构。它是一个以类为结点、以继承关 系为边的连通有向图。 (2)整体/部分结构 又称为组装结构,它描述对象之间的组成关系,即一个对象是另一个对象的组成或部分。客观世界 中存在着许多这样的现象。一个整体/部分结构由一组彼此之间存在着这种组成关系的对象构成。 (3)整体/部分结构 这种结构有两种实现方式。第一种方式是用部分对象的类作为一种广义的数据类型来定义整体对象 的一个属性,构成一个嵌套对象。第二种方式是独立地定义和创建整体对象和部分对象,并在整体 对象中设置一个属性,它的值是部分对象的对象标识,或者是一个指向部分对象的指针。在这种方 式下,一个部分对象可以属于多个整体对象,并具有不同的生存期。后一种情况便于表示比较松散 的整体/部分关系。 消息是连接结构与该结构描述对象之间的动态联系,即若一个对象在执行自己的服务时,需要通过 消息请求另一个对象为它完成某个服务,则说明第一个对象与第二个对象之间存在着消息连接。消 息连接是有向的,从消息发出者指向消息接收者。

物理实体:指所有可感知的实体,如计算机、课本、树木等。 文件资料:可浏览阅读的信息,如报告、信函、申请表等。 事件:特定时间内发生的事情,如开会、演出、借贷款等。 角色:具有某种能力的对象,如工程师、销售人员、医生等。 组织单位:如计算机系、证券公司、银行等。 交互:两个对象之间的关系,如购买、学习、演讲等。
1.面向对象概念的涵义


2.面向对象法的特点 面向对象法是一种全新概念的开发模式,具有如下特点:





从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事 物的抽象表示,并以此作为系统的基本构成单位。 事物的静态特征用对象的属性表示,事物的动态特征用对象的服务表示。 对象的属性与服务结合为一个独立的实体,对外屏蔽其内部细节,称为 封装。 把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述, 每个对象是其类的一个实例。 通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。 特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的 描述与实现,从而简化系统的构造过程及其文档。 复杂的对象可以用简单的对象作为其构成部分,称为聚合。 对象之间通过消息进行通信,以实现对象之间的动态联系。 通过关联表达对象之间的静态关系。
4.2.2 面向对象分析的过程

1.获取客户对系统的需求 在解决问题之前,通常需要对问题做深入的了解,对问题 的理解越全面、透彻,就越有助于问题的解决。需求获取 必须是在用户与软件设计者之间充分交流的基础上进行的, 从用户使用的角度提出系统实现的功能要求,软件设计者 根据以往的开发经验,可给用户提供一些建议,两方面交 换意见,形成基本的需求说明文档。需求文档中不涉及具 体的设计决策,只是对用户需求进行详细说明,它是指导 开发者进一步分析系统的基础文档,随后进行的面向对象 分析的目的,就是深入理解问题域和用户的真实需求,通 过建立模型的方式精确体现。
4.1.2 面向对象的基本概念





1.对象 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基 本单位。一个对象由一组属性和对这组属性进行操作的一组服务构成。 属性和服务是构成对象的两个主要因素,属性是用来描述对象静态特 征的一个数据项,服务是用来描述对象动态特征的一个操作序列。一 个对象可以有多项属性和多项服务。 2.类 类代表的是一种抽象,是代表对象的本质的、主要的、可观察的行为。 类给出了属于该类全部对象的抽象定义,而对象则是符合这种定义的 一个实体。因此类能创造新的对象,并且每个对象都属于一个类,通 常我们把属于某个类的一个对象称为该类的实例。 对象既具有共同性,也具有特殊性。运用抽象的原则舍弃对象的特殊 性,抽取其共同性,则得到一个具有广泛共性的类。如果在这个类的 范围内,考虑具有某些特殊性的一组事物,则这些事物也可以被抽象 为另一个类。这个新类不仅具有前一个类的共性,同时它还具有自己 特殊的属性。通常,我们把前一个类称为“基类”,把后来生成的那 个类称为“派生类”。
4.1.2 面向对象的基本概念

3.继承 一个类可以定义为另一个更一般的类的特殊情况, 如“轿车”类是“汽车”类的特殊情况。称一般 类是特殊类的父类或超类,特殊类是一般类的子 类,如“汽车”类是“轿车”类的父类,“轿车” 类是“汽车”类的子类。同样,“汽车”类还可 以是“交通工具”类的子类,“交通工具”类是 “汽车”类的父类。这样可以形成类的一种一般/ 特殊的层次关系,如图2-4-1所示。
相关文档
最新文档