资源预览内容
第1页 / 共80页
第2页 / 共80页
第3页 / 共80页
第4页 / 共80页
第5页 / 共80页
第6页 / 共80页
第7页 / 共80页
第8页 / 共80页
第9页 / 共80页
第10页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,程序设计技术,第三章 面向对象程序设计思想,2,什么是面向对象的开发方法,什么是面向对象的开发方法 : OOSD (Object-Oriented Software Development)法是一种 把面向对象的思想应用于软件开发过程,指导开发活动的系统方法; 面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法;,3,什么是面向对象的开发方法,什么是面向对象: 根据Coad 和 Yourdon 的定义,按照以下4个概念设计和实现的系统,称为是面向对象的。 面向对象=对象 (object) +类 (classification) +继承(inheritance) +通信 (communication with messages),4,什么是面向对象的开发方法,面向对象技术的特点: 对软件开发过程所有阶段进行综合考虑。 软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式来分析、解决问题; 将OOA、OOD、OOP有机地集成在一起。 OOA(Object-Oriented Analysis) OOD(Object-Oriented Design) OOP(Object-Oriented Program),5,面向对象开发方法的组成,OOSD由三部分组成: OOA(Object-Oriented Analysis)面向对象的分析 OOD(Object-Oriented Design)面向对象的设计 OOP (Object-Oriented Program)面向对象的程序设计,OOA,强调的是对一个系统中的对象特征和行为的定义。建立系统的三类模型。,OOD,与OOA密切配合顺序实现对现实世界的进一步建模。,OOP,是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。,6,OOA法,OOA法就是要解决“做什么”的问题。OOA 法的基本任务就是要建立三种模型: 对象模型(信息模型),定义构成系统的类和对象,它们的属性与操作; 状态模型(动态模型), 描述任何时刻对象的联系及其联系的改变,即时序。常用状态图, 事件追踪图描述; 处理模型(函数模型), 描述系统内部数据的传送处理; 显然,在三大模型中,最重要的是对象模型。,7,OOD 法,OOD 法是在需求分析的基础上,进一步解决“如何作”的问题,OOD 法也分为概要设计和详细设计: 概要设计:细化对象行为,添加新对象,认定类,组类库,确定外部接口及主要数据结构; 详细设计:加细对象描述;,8,OOP 法,OOP 法是使用面向对象的程序设计语言,如C+进行程序设计。 Coad和Yourdon给出一个面向对象的定义:面向对象=对象+类+继承+消息; 如果一个软件系统是按照这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的;,9,面向对象的方法的代表性成果,1、B.Henderson-sellers 和 J.m.Edwards提出的面向对象软件生存期喷泉模型及面向对象的系统开发方法。 2、G.Booch提出的面向对象的开发方法。 3、P.Coad和E.Yourd提出的OOA和OOD法。 4、J. Rumbaugh等人提出的对象建模技术(OMT)。 5、Jacobson 提出的面向对象的软件工程(OOSE)。 6、G.booch J.Rumbough Jacobson等人在Booch方法、OMT和OOSE的基础上推出了统一建模语言UML。,10,面向对象的概念,理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。,11,对象(Object),对象(Object)是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象,对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。,12,对象(Object),对象都存在一定的状态(state),内部标识(identity),可以给对象定义一组运算(operation),对象通过其运算所展示的特定行为称为对象行为(behavior),对象本身的性质称为属性(attribute),对象将它自身的属性及运算“包装起来”,称为“封装”(encapsulation). 对象的最基本的特征是封装性和继承性。,13,类(Class),类又称对象类(Object Class),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。 类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method) ,方法有方法名,方法体和参数。 。,14,类(Class),由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。,15,对象和类的描述,对象和类一般采用“对象图” 和 “类图” 来描述。,对象类的描述,对象图,类图,16,继承 (Inheritance),继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新内容。,17,继承 (Inheritance),继承性分: 单重继承:一个子类只有一个父类。即子类只继承一个父类 的数据结构和方法; 多重继承:一个子类可有多个父类。继承多个父类的数据结 构和方法;,现存类定义 父类(基类),新类定义 子类(派生类),继 承,继承性,18,消息(Message),消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。 一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识 、消息和方法、输入信息、回答信息。,19,消息(Message),在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。 注意:在并发系统中,多个控制线程(Thread of Control)并发执行,情况就复杂得多,消息可以是发出服务请求、提交数据、发布事件信息、或是传递同步控制信息。,20,消息(Message),对象、类和消息传递,21,多态性,多态性(Polymorphism)是指相同的操作或函数,过程作用于不同的对象上并获得不同的结果。即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结果。 例如: “绘图”操作,作用在“椭圆” 和“矩形” 上,画出不同的图形。,22,永久对象(Persistent object),所谓永久对象是指生存期可以超越程序的执行时间而长期存在的对象。目前,大多数OOPL不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。,23,面向对象的分析,面向对象分析OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。 OOA的基本任务: 运用面向对象的方法,对问题域和系统责任进行分析和理解,找出描述它们的类和对象,定义其属性和操作,及其结构、静态联系和动态联系。,24,面向对象的分析,OOA面临的问题: 问题域和系统责任问题;问题域(problem domain) 被开发系统的应用领域。系统责任(system responsibilities) 所开发的系统应具备的职能。 2、交流问题(各类人员之间的要求) 3、需求的不断变化(用户、竞争因素、经费、技术因素) 。,25,OOA的分析过程,26,获取用户基本需求,用户与开发者之间进行充分交流,常用User case来收集和描述用户的需求。即先标识使用该系统的不同的行为者(actor)。 行为者所提出的每个使用场景(或功能)称为一个用例,所有的用例则构成完整的系统需求。,27,用例图,(1)组成符号:,28,Use Case图例子,29,用例之间的关系,扩展关系 使用关系 组合关系,30,标识类和对象,标识类与对象是一致的。在确定系统的用例后,可标识类及类的属性和操作。 从问题域或用例描述入手,发现对象。对象可能的形式有:外部实体 、事物、发生的事件、角色、组织单位、场所、构造物等; 确定最终对象。 可根据以下原则确定:需要保留的信息,需要的服务,具有多个属性,具有公共属性及操作;,31,标识类和对象,标识属性。从本质上讲,属性定义了对象。可从问题的陈述中或通过对类的理解而标识出属性。 定义操作。操作定义了对象的行为并以某种方式修改对象的属性。操作分为:对数据的操作,计算操作,控制操作。,32,定义类的结构和层次,定义类的结构和层次。类的结构有: 一般特殊 (generalization - specialization)结构; 整体部分(whole-part)结构,33,定义类的结构和层次,构成类图的元素所表达的模型信息,分为三个层次: 对象层给出系统中所有反映问题域和系统责任的对象; 特征层给出类(对象)的内部特征,即类的属性和操作; 关系层给出各类(对象)之间的关系,包括继承、组装、一般特殊 、整体部分、属性的静态依赖关系,操作的动态依赖关系。,34,建立类(对象)间的关系,用“对象-关系模型”描述了系统的静态结构。,35,建立对象-行为模型,描述了系统的动态行为。,36,面向对象设计思想的主流方法,随着面向对象开发方法的发展,逐渐形成了三个主要的流派: Coad方法; Booch方法; OMT方法;,37,Coad方法,主要建立问题域的分析模型。该模型由5个层次组成:即主题层、对象层、结构层、属性层和服务层。要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。,38,Coad方法,该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。 其开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。,39,Booch方法,Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。 该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。,40,面向对象设计思想的主流方法,随着面向对象开发方法的发展,逐渐形成了三个主要的流派: Coad方法; Booch方法; OMT方法;,41,Coad方法,主要建立问题域的分析模型。该模型由5个层次组成:即主题层、对象层、结构层、属性层和服务层。要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。,42,Coad方法,该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。 其开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。,43,Booch方法,Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。 该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。,44,重点介绍面向对象的建模技术(OMT) 和统一建模语言UML。,45,面向对象的建模技术(OMT),面向对象的方法学又称为对象模型技术,OMT( Object Model Technology)是一种软件工程方法学,支持整个软件生存周期,它覆盖了问题构成、分析、设计和实现等阶段。 OMT方法使用了建模的思想
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号