软件系统分析与设计-6--面向对象分析设计

上传人:qt****68 文档编号:57578519 上传时间:2018-10-23 格式:PPT 页数:89 大小:944.50KB
返回 下载 相关 举报
软件系统分析与设计-6--面向对象分析设计_第1页
第1页 / 共89页
软件系统分析与设计-6--面向对象分析设计_第2页
第2页 / 共89页
软件系统分析与设计-6--面向对象分析设计_第3页
第3页 / 共89页
软件系统分析与设计-6--面向对象分析设计_第4页
第4页 / 共89页
软件系统分析与设计-6--面向对象分析设计_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《软件系统分析与设计-6--面向对象分析设计》由会员分享,可在线阅读,更多相关《软件系统分析与设计-6--面向对象分析设计(89页珍藏版)》请在金锄头文库上搜索。

1、第6章 面向对象软件系统化分析与设计方法,2018/10/23,2,教学目的及要求,了解:面向对象的基本概念。熟悉:面向对象软件系统分析与设计方法的原理。掌握:用例模型设计、对象模型设计、时序图设计、状态图设计。 重点:面向对象分析与设计方法。 难点:用于面向对象原理和方法进行软件系统分析与设计。,2018/10/23,3,教学内容,6.1面向对象概述 6.2对象模型设计 6.3用例模型设计 6.4领域模型设计 6.5时序图设计 6.6状态图设计,2018/10/23,4,6.1 面向对象概述,1. 面向对象方法学(OOM)的要点 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方

2、式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。,2018/10/23,5,客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的。面向对象方法是把客观世界中的实体抽象为问题域中的对象(Object),把软件系统作为一系列离散的解空间对象的集合。这些解空间对象与问题空间对象尽可能一致。这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。也就是说,把程序看作是相互协作而又彼此独立的对象的集合。每个对象就像一个微型程序,有自己的数据、操作、功能和目的。,6.1 面向

3、对象概述,2018/10/23,6,2. OOM的四要素:,对象(object):客观世界由各种对象组成。面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。,类(class):对象可划分成类;单个对象可视为某一类的实例(instance)。每个类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息;方法是允许施加于该类对象上的操作,为该类所有对象共享的。,6.1 面向对象概述,2018/10/23,7,继承(inheritance):类可分层(按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个类组成一个层次结构的系

4、统),下层子类与上层父类有相同特征(包括数据和方法)称为继承。,消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。,6.1 面向对象概述,2018/10/23,8,OOM = Object+Class+Inheritance+Communication with messages,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传消息实现彼此通信。 注:OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。 OOM与原型(Prot

5、otyping)结合使用效果好。,6.1 面向对象概述,2018/10/23,9,6.2 对象模型设计,软件是什么以及程序如何工作?面向对象编成语言和设计语言有一个共同的理解。 对象模型是UML和面向对象编程共享的公共计算模型。 编程语言和设计语言是在不同的抽象级别上来表示程序的。但是,这两种语言的基础都是对象模型所提供对运行程序的抽象描述。,2018/10/23,10,6.2.1 对象模型 对象模型的基本性质是:计算是发生在对象之中和对象之间的。 理解对象 对象负责维护系统数据的一部分,并负责实现系统整体功能的某些方面。对象一般由含有该对象存储的数据的内存区域表示。对象支持方法(或函数)以访

6、问和更新对象包含的数据。 因此,对象结合了计算机程序的两个方面:即数据和处理。而在其他软件设计方法中两者是分离的。,6.2 对象模型设计,2018/10/23,11,6.2.1 对象模型 程序不仅仅是一组孤立的对象的集合,而是由对象中存储的数据之间的关系链接的。 因此对象模型将一个运行的程序视作一个对象的网络或图(graph),对象构成该图的节点,连接对象的弧称为链接(link)。 对象在运行时创建和销毁,链接也可以改变,其网络(或拓扑)结构是高度动态的,会随着程序的运行而改变。,6.2 对象模型设计,2018/10/23,12,6.2.1 对象模型 对象间的连接由对象间相互发送消息(mess

7、ages)进行交互建立的通信路径实现,消息与函数调用类似,消息请求接收对象执行其方法之一。通常对象对一个消息的响应将是向其他对象发现消息,这样,计算通过网络而展开。这个网络包含响应一个初始消息涉及到的多个对象。,6.2 对象模型设计,2018/10/23,13,6.2.1 对象模型 描述一个运行程序的对象的图结构可以通过跟踪各个消息调用的程序进行。 但是,通过定义各个对象来编写程序通常是不可行的。而是要给出相似对象的类(class)的结构描述,来定义对象能够持有的数据和方法的执行效果。 因此,面向对象程序的源代码不是直接描述对象的图,而是描述组成该图中的这些对象的特征。,6.2 对象模型设计,

8、2018/10/23,14,6.2.1 对象模型 对象模型在设计中的作用 在设计中,对象模型的重要性在于它为UML的设计表示法提供了语义基础。UML中许多特征的含义可以通过将它们解释为对相互连接的、互通消息的对象的集合的说明来理解。 通过绘制UML图(diagrams)来表示对象特定运行时的配置,这些图是和源代码作用相同的。从结构上来定义运行时会发生什么。,6.2 对象模型设计,2018/10/23,15,6.2.1 对象模型 这些图被分成两类,静态图和动态图。 静态图:描述对象间可能存在的关系的种类,以及作为结果的对象网络可具有的可能的拓扑结构。 动态图:描述可以在对象间传递的消息以及该消息

9、对接收该消息的对象的影响。 对象模型的这双重作用,使得将UML设计表示法与实际的程序相关起来非常容易,即UML是适合于设计和文档化面向对象程序的语言。,6.2 对象模型设计,2018/10/23,16,6.2.1 对象模型 一个库存控制的实例 在制造业环境中,某些类别的复杂产品是由组成零件装配而成,常见的需求是记录所拥有的零件的库存以及这些零件的使用方式。 开发一个简单的程序来模拟不同种类的零件和它们的特性,以及用这些零件构造复杂组建的方式,通过这个实例来阐明对象模型。,6.2 对象模型设计,2018/10/23,17,6.2.1 对象模型 1)这个程序必须管理描述所知的不同零件的信息。 2)

10、记录各个实际零件的信息,为了跟踪和质量保证。 对这个示例来说明,假定对每一个零件我们感兴趣的是下列三项信息: (1)零件的目录查找号(整数); (2)零件的名字(字符串); (3)单个零件的价格(浮点数)。,6.2 对象模型设计,2018/10/23,18,6.2.1 对象模型 零件可以被装配成更复杂的结构,称为组件。一个组件可以包含多个零件,且可以具有层次结构。 维护零件、组件及它们的结构信息的程序应该能够用于许多目的。例如维护目录和库存信息,记录制造的组件结构;支持对组件的各种操作,例如计算组件中的零件的总价格,打印组件的所有零件的清单等。 后面将考虑一个简单的应用,如通过累加组件中包含的

11、所有零件的价格,实现一个组件中材料价格的查找功能。,6.2 对象模型设计,2018/10/23,19,6.2.2 类和对象 面向对象系统中的数据和功能分布在系统运行时存在于对象之中。每个单独的对象保存部分系统数据并提供一组方法,允许系统中的其他对象对该数据进行某些操作。 面向对象设计的难题之一就是如何将系统的数据划分到一组对象中。标识对象经常应用的一个经验规则是:用模型中的对象表示来自应用领域的现实世界的对象。,6.2 对象模型设计,2018/10/23,20,6.2.2 类和对象 库存实例 库存控制系统的主要任务之一是记住厂商库存中的所有物理零件。因此很自然的起点就是考虑将这些零件中的每一个

12、都表示为系统中的一个对象。那么,每个对象描述了不同的零件,因而保存了不同的数据。 但是每个对象都具有相同的数据结构,表示同一种实体的一组对象的共有结构由类描述。,6.2 对象模型设计,2018/10/23,21,6.2.2 类和对象 库存实例 该类的每个对象我们称为是该对象的实例(instance),库存控制系统的第一步,我们考虑可以定义一个Part类。 在这个零件类中,我们自然的想法是每个对象应该保存关于该零件的信息:它的名字、编号以及价格。这反映在下面的实现中。,6.2 对象模型设计,2018/10/23,22,6.2 对象模型设计,2018/10/23,23,6.2.2 类和对象 1.

13、库存实例 UML类的概念与C+和Java等程序设计语言中的概念非常类似。一个UML类定义了许多特征(feature),细分为属性(attribute定义实体存储的数据)和操作(operation定义了实体的行为)。 属性定义类实例存储的数据,操作定义类实例的行为。,6.2 对象模型设计,2018/10/23,24,6.2.2 类和对象 库存实例 在UML中,类由一个分 为三栏的矩形图标表示, 分别包含该类得名字、 属性和操作。Part类的 UML表示如图6-1所示。 -:表示privace(私有) +:表示public(公有) 图6-1 Part类的UML表示,6.2 对象模型设计,2018/

14、10/23,25,6.2.2 类和对象 对象创建 类是在编译时定义的,而对象是在运行时作为类的实例创建的。执行下面的语句的结果是创建一个新对象。 它包括两个步骤,首先为对象分配一块 内存区域,然后适当地初始化。一旦创 建了新对象,将在变量myScrew中保存 一个引用。对应的UML图形化表示如图 图6-2 一个Part对象 6-2所示。,6.2 对象模型设计,myScrew: Part name = “screw” number = 28834 cost = 0.02,2018/10/23,26,6.2.3 对象的特性 状态 对象的第一个特征是它们充当数据的容器。在纯面向对象系统中,系统维护的

15、所有数据都保存在对象中,不存在其他模型中的全局数据或中央数据存储库的概念。 包含在对象属性中的数据值通常称为对象的状态(state)。如示例中三个属性值构成了对象myScrew状态。 在面向对象的程序设计语言中,对象的状态由对象的类中所定义的域制定,而在UML中由类中的属性指定。,6.2 对象模型设计,2018/10/23,27,6.2.3 对象的特性 行为 每个对象除了保存数据之外还提供了一个由若干操作组成的接口。其中除了一些实现系统全局功能的通用的操作外,有一些操作将提供访问和更新对象中所保存的数据的功能。 编程语言中,对象的操作在它的类中作为一组方法来定义。对象定义的一组方法定义了该对象

16、的接口(interface)。 UML中,操作不同于属性,操作没有出现在对象图标中,这是因为对象提供的完全是它的类所定义的操作。,6.2 对象模型设计,2018/10/23,28,6.2.3 对象的特性 本体 每个对象和其他所有对象都是有区别的,即使两个对象保存完全相同的数据,并在接口中提供完全相同的操作集合时也是如此。如: 对象模型中为每个对象提供的作为区别于其他对象的唯一性标志,即本体(identity)。对象的本体是对象模型固有的一部分,不同于对象中存储的任何其他数据项。,6.2 对象模型设计,2018/10/23,29,6.2.3 对象的特性 本体 设计人员不需要定义一个特殊的数据来区分一个类的各个实例。但是有时应用领域会包含对每个对手都不相同的真实的数据项。例如各种识别号码,这些数据项通常作为属性建模。然而,在没有这样的数据项的情况下,也没有必要只是为了区分对象而引入一个这样的数据项。 在面向对象的程序设计语言中,对象的个体由它在内存中的地址表示。由于不可能在同一个位置保存两个对象,所有的对象都有唯一的地址,因而任意两个对象的个体都是不同的。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号