面向对象方法学.ppt_第1页
面向对象方法学.ppt_第2页
面向对象方法学.ppt_第3页
面向对象方法学.ppt_第4页
面向对象方法学.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1,第9章 面向对象方法学(一),2,主要内容,9.1 面向对象方法概述 9.2 面向对象的基本概念 9.3 面向对象的分析 9.4 面向对象的设计 9.5 典型的面向对象方法,3,9.1 面向对象方法概述,面向对象的开发方法OOSD(Object-Oriented Software Development)是一种新的软件工程方法,其基本思想就是尽可能按照人类认识世界的方法和思维方式来分析和解决问题,这种方法能够提供更加清晰的需求分析和设计。 面向对象的方法已成为当今软件开发的主流方法。,4,面向对象方法概述,但是至今在面向对象的领域,大多数工作都集中在编程语言上,而面向对象的开发方法,贯穿整个软件生命期,因此,本章主要讨论面向对象的需求分析(OOA)与面向对象的设计(OOD)。,5,一、什么是面向对象方法,传统的软件工程方法是面向过程的,将数据和处理过程分离,增加了软件开发的难度。其开发过程如下:,由于问题空间与解空间的模型、描述方式的不同,它们之间存在着复杂的转换过程,尤其对于复杂系统及普遍存在的需求变化,就更难适应。,6,什么是面向对象方法(续),面向对象的方法将软件系统看做一系列离散的解空间对象的集合,问题空间与解空间的结构、描述模型一致,减少了软件系统开发的复杂度。 究竟什么是面向对象 根据Coad 和 Yourdon 的定义,按照以下4个概念设计和实现的系统,称为是面向对象的。 面向对象=对象+类+继承+通信,7,二、面向对象方法的主要特点,1、按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑。 以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题。 2、软件生存期各阶段所使用的方法、技术具有高度的连续性。 使用喷泉模型作为其工作模型,软件生存期各阶段没有明显的界限,开发过程回溯重叠,使用相同的描述方法和模型。,8,面向对象方法的主要特点(续),3、软件开发各个阶段有机集成,有利于系统的稳定性。 将OOA(Object-Oriented Analysis)、OOD(Object-Oriented Design)、OOP(Object-Oriented Program)有机地集成在一起。 4、具有良好的重用性。 由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性,易于实现可重用性。,9,9.2 面向对象的基本概念,理解面向对象的主要基本概念,对于学习和掌握面向对象的开发方法是十分重要的。 对象(Object) 类(Class) 继承 封装(encapsulation) 消息(Information) 多态性(Polymorphism)与动态绑定 永久对象(Persistent object) 结构与连接,10,一、对象与类,1.对象 对象(Object)是客观事物或概念的抽象表述,每个对象都存在一定的状态(state),内部标识(identity),可以给对象定义一组运算(operation),对象通过其运算所展示的特定行为称为对象行为(behavior),对象本身的性质称为属性(attribute),对象将它自身的属性及运算“包装起来”,称为“封装”(encapsulation)。,11,对象与类(续),2.类(Class) 类又称对象类(Object Class)是指一组具有相同属性和运算的对象的抽象,一组具有相同数据结构和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance),它们都可以使用类中提供的函数。 类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法(method),即操作实现的过程来描述。,12,对象与类(续),3.对象和类的描述 对象和类一般采用“对象图” 和 “类图” 来描述,例如图,“人”是类名,包含两个属性:姓名和年龄,包含有两个运算:改变工作和改变地址。这里“人”只是一个抽象的概念,并不代表某个具体的人。图4.2描述了两个人对象的实例。,13,对象与类(续),对象类的描述,对象图,类图,14,二、继承,继承(Inheritance)是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新内容。 继承性通常又称为概括,表示基类与子类的关系。子类的公共属性和操作归属于基类,并为每个子类共享,子类继承了基类的特征。,15,继承(续),现存类定义 父类(基类),新类定义 子类(派生类),继 承,继承性,继承性描述,16,继承性的实例,17,三、多态性,对象、类、消息表征面向对象的开发模式,多态性(Polymorphism)在结构方面提供了灵活性。 多态性是指相同的操作、函数或过程作用于多种类型的对象上并获得不同的结果。即不同的对象,收到同一消息产生完全不同的结果,这种现象称为多态性。,18,多态性(续),例如,在父类“几何图形”中,定义了一个操作“绘图”,它的子类“椭圆”和“矩形”都继承了几何图形的绘图操作。同是“绘图”操作,分别作用在“椭圆”和“矩形”上,却画出不同的图形。 多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的重用性和可扩充性。,19,四、消息,消息(Message)是指对象之间在交互中所传送的通信信息。一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识 、消息和方法、输入信息、回答信息。使对象之间互相联系、协同工作,实现系统的各种服务。 通常一个对象向另一个对象发送信息请求某项服务,接受对象响应该消息,激发所要求的服务操作,并将操作结果返回给请求服务的对象。 注意:在并发系统中,多个控制线程(Thread of Control)并发执行,情况就复杂得多,消息可以是发出服务请求、提交数据、发布事件信息或是传递同步控制信息。,20,消息(续),对象、类及消息传递,21,五、方法(method),类中的操作实现的过程称为方法(method),方法描述了类与对象的行为。 每一个对象都封装了数据和算法两个方面,数据由一组属性表示,而算法即是当一个对象接收到一条消息后,它所包含的方法决定对象如何动作。 通常是在某种编程语言(如Java、C+)下实施的运算。一个方法包括方法名、参数及方法体。,22,六、永久对象(Persistent object),永久对象是当前OO领域的一个技术热点。 所谓永久对象是指生存期可以超越程序的执行时间而长期存在的对象。 目前,大多数OOPL不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。 为了实现永久对象,使上述烦琐工作由系统自动完成,需要较强的技术支持;需要一个基于永久对象管理系统OMS(object management system),能够描述和处理永久对象的编程语言。,23,七、结构与连接,1、一般-特殊的结构 又称为分类结构(classification structure),由一组具有“一般-特殊”关系(继承关系)的类构成。是一个以类为结点,以继承关系为边的连通有向图。,单重继承构成的类之间的关系是层次结构(hierarchy structure)是一棵树。 多重继承构成的类之间的关系称为网格结构(lattice structure),是半序的连通有向图。,24,结构与连接(续),2、整体-部分结构 整体-部分的关系有两种: 一个部分对象只隶属于惟一的整体对象。部分与整体对象同时存在。 一个部分对象可属于多个整体对象。部分与整体对象之间的的关系比较松散,25,结构与连接(续),3、实例连接 反映对象之间的静态联系。 4、消息连接 描述对象之间的动态联系,连接是有向的。,26,9.3 面向对象的分析,面向对象的分析OOA(Object-Oriented Analysis)是软件开发过程中的问题定义阶段。 面向对象的分析过程分为论域分析和应用分析,该阶段的目标是获得对问题论域的清晰、精确的定义。产生描述系统功能和问题论域的基本特征的综合文档。,27,一、需求分析中的问题,各种需求分析方法,都面临着以下问题: 1.明确问题域和系统责任 问题域(problem domain)是指被开发系统的应用领域,即拟建立系统进行处理的业务范围。 系统责任(system responsibilities)即所开发系统应该具备的职能。 2充分交流的问题 在软件开发过程中,各类人员的充分交流是获得准确分析结果的关键,其中以软件开发人员与领域专家之间的交流尤为重要。,28,需求分析中的问题(续),3需求的不断变化 在分析过程中的一个严峻问题是需求总是在不断的变化。需求的变化要求分析员去修改分析,甚至重新作分析,而反复的修补常常会将系统搞乱和引入新的错误。 4考虑复用要求 要实现分析的复用,要求分析结果中的基本成分具有较强的独立性。,29,二、面向对象分析的特点,OOA在解决上述分析中的问题有较强的能力。 1有利于对问题及系统责任的理解 在OOA中,构成系统的对象和类都与问题域有良好的对应关系,因此十分有利于对问题及系统责任的理解。 2有利于对人员之间的交流 由于OOA中,用符合人类的思维方式来认识和描述问题域,即软件开发人员和应用领域的专家具有共同的思维方式,有利于交流。,30,面向对象分析的特点(续),3对需求变化有较强的适应性 对象是构成系统最基本的元素,而对象的基本特征是封装性,将容易变化的成分(如操作及属性)封装在对象中,将系统中最容易变化的因素隔离起来,对象的稳定性使系统具有宏观上的稳定性。 4支持软件复用 OOA方法的继承性本身就是一种支持复用的机制,类所具有的完整性、独立性 ,是实现软件复用的重要条件。,31,三、面向对象分析的基本任务与分析过程,1OOA的基本任务 OOA是软件开发过程中的问题定义阶段,目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。 2. OOA的分析过程 论域分析(domain analysis) 抽取和整理用户需求并建立问题域精确模型的过程。主要任务是充分理解领域业务问题和投资者及用户的需求,提出高层次的问题解决方案。 应具体分析应用领域的业务范围、业务规则和业务处理过程,确定系统范围、功能、性能,完善用户需求,抽象出目标系统的本质属性,建立问题论域模型。,32,面向对象分析的基本任务与分析过程,应用分析(application analysis) 应用分析是将论域分析建立起来的问题论域模型,用某种基于计算机系统的语言来表示。响应时间需求,用户界面需求和数据安全等特殊的需求都在这一层分解抽出。,33,获取用户基本需求,标识类和对象,定义类的结构和层次,表示类(对象)间的关系,为对象行为建模,OOA分析过程,OOA分析过程的具体步骤,常用用例(User case)来收集和描述用户的需求。,标识类及类的属性和操作。,类的结构有:一般与特殊结构,整体与部分结构。构成类图的元素所表达的模型信息,通常分为对象层、特征层、关系层三个层次。,描述了系统的静态结构。,描述系统的动态行为。,34,9.4 面向对象的设计,面向对象设计OOD(Object-Oriented Design),是面向对象方法在软件设计阶段应用与扩展的结果。 面向对象的设计通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。 面向对象的设计主要目标是提高生产效率,提高质量和提高可维护性。,35,一、面向对象设计的准则,36,二、面向对象设计的基本任务,面向对象的设计可分为系统设计和对象设计。 1.系统设计 系统设计的任务包括:将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系统中的类相互协作。,37,面向对象设计的基本任务(续),2对象设计 面向对象的设计通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。 面向对象设计的具体内容有: 1)设计问题域组元(problem domain component) 2)设计人机交互组元(human interaction component) 3)设计任务管理组元(task management component) 4)设计数据管理组元(data management component),38,面向对象设计的基本任务(续),面向对象设计的主要内容包括以下4类活动: 设计问题域组元(problem domain component) 从实现的角度,对通过分析所建立的问题域模型作一些修改和补充,例如对类、对象、结构、属性及服务进行增加、修改或完善。 设计人机交互组元(h

温馨提示

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

最新文档

评论

0/150

提交评论