第8章-面向对象的技术课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第8章-面向对象的技术课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 技术 课件
- 资源描述:
-
1、 面向对象的思想最初出现于挪威奥斯陆大学和挪面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的威计算机中心共同研制的Simula 67语言中,随着的语言中,随着的Smalltalk-76和和8080语言推出,面向对象的的程序设计语言推出,面向对象的的程序设计方法得到了比较完善的实现。方法得到了比较完善的实现。 此后,面向对象的概念和应用已超越了程序设计此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统,交互式界面,分和软件开发,扩展到如数据库系统,交互式界面,分布式系统,网络管理结构和人工智能等领域。布式系统,网络管理结构和人工智能等领域。 面向对象的技术已
2、成为软件开发的一种新方法,面向对象的技术已成为软件开发的一种新方法,新技术。新技术。(Object-Oriented Software Development)法法是一种是一种 把面向对象的思想应用于软件开发过程,把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。指导开发活动的系统方法。 1 1. .对软件开发过程所有阶段进行综合考虑。对软件开发过程所有阶段进行综合考虑。 使问题空间与解空间具有一致性使问题空间与解空间具有一致性, ,降低复杂性。降低复杂性。 2 2. .软件生存期各阶段所使用的方法、技术具有高软件生存期各阶段所使用的方法、技术具有高 度的连续性,用符合人类认识世界的
3、思维方式度的连续性,用符合人类认识世界的思维方式 来分析、解决问题。来分析、解决问题。实体实体1实体实体2实体实体n对象对象1对象对象n对象对象23. 将将OOA、OOD、OOP有机地集成在一起。有利于有机地集成在一起。有利于系统的稳定性系统的稳定性. OOA(Object-Oriented Analysis OOD(Object-Oriented Design) OOP(Object-Oriented Program) 以对象为中心各种构造系统以对象为中心各种构造系统,而不是以功能为中心而不是以功能为中心,能很好地适应需求变化能很好地适应需求变化.4. 具有良好的可重用性具有良好的可重用性
4、由于对象所具有的封装性和信息隐蔽,具有很强的由于对象所具有的封装性和信息隐蔽,具有很强的独立性。独立性。 理解面向对象的基本概念对于学习和掌握面向理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。对象的开发方法是十分重要的。 类类(ClassClass)对象对象( (Object)Object)消息消息( (Information)Information)( (Polymorphism)Polymorphism)继承继承(InheritanceInheritance)对客观存在的事物的描述对客观存在的事物的描述统称为对象。统称为对象。 对象对象可以是事、物、或抽象概念可以是事
5、、物、或抽象概念 ,是将一组,是将一组数据和使用该数据的一组基本操作或过程封装在一数据和使用该数据的一组基本操作或过程封装在一起的实体起的实体。 类类又称又称对象类对象类一组具有相一组具有相同属性和相同操作的对象的集合。同属性和相同操作的对象的集合。在一个类中,每个对象都是类的在一个类中,每个对象都是类的实例实例(instance) ,它们都可以使用类中提供的函数。它们都可以使用类中提供的函数。类具有属性类具有属性,用数据结构来描述类的属性,用数据结构来描述类的属性,类具有操作,类具有操作,它是对象的行为的抽象,操作实现它是对象的行为的抽象,操作实现的过程称为方法的过程称为方法(method)
6、 ,方法有方法名,方法,方法有方法名,方法体和参数。体和参数。 几何对象几何对象颜色颜色位置位置移动(移动(delta:矢量)矢量)选择(选择(P:指针型)指针型):布尔型布尔型旋转旋转(角度角度)图4.1 对象类的描述人人姓姓 名名:字符串字符串年年 龄龄: 整整 型型改换工作改换工作改换地址改换地址文件文件文件名文件名文件大小文件大小最近更新日期最近更新日期打印打印(人人)张红兵张红兵28绘图员绘图员人民路人民路8号号(人人)李军李军24程序员程序员无无图4.2 对象的描述类名类名属性属性运算运算 对象对象 类类 继承是使用现存的定义作为基础,建立新定义的继承是使用现存的定义作为基础,建立
7、新定义的技术。技术。是父类和子类之间共享数据结构和方法的机制,是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。这是类之间的一种关系。 继承性分:继承性分: 单重继承:单重继承:一个子类只有一个父类。即一个子类只有一个父类。即子类只继承子类只继承一个父类的数据结构和方法。一个父类的数据结构和方法。 多重继承:多重继承:一个子类可有多个父类。继承多个一个子类可有多个父类。继承多个父类父类的数据结构和方法。的数据结构和方法。基类基类子类子类A子类子类B图 4.4 继承性描述现存类定义现存类定义父类父类( (基类基类) )新类定义新类定义子类子类( (派生类派生类) )继继 承承图 4
8、.3 继承性 互相联系、互相联系、协同工作等协同工作等对象之间的联系可表示为对象间的对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。消息传递,即对象间的通讯机制。 一个消息应该包含以下信息:消息名、接收消一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识息对象的标识、服务标识 、消息和方法、输入信、消息和方法、输入信息、回答信息。息、回答信息。在对象的操作中当一个消息发送给某个对象时,在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。消息包含接收对象去执行某种操作的消息。 例如:例如: “绘图绘图”操作,作用在操作,作用在“椭圆椭圆” 和和
9、“矩矩形形” 上,画出不同的图形。上,画出不同的图形。使用虚函数可实现动态联编,不同联编可以选择使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。不同的实现,这便是多态性。 继承是动态联编的基础,虚函数是动态联编的关继承是动态联编的基础,虚函数是动态联编的关键。键。(1)1)在基类中,定义成员函数为虚函数在基类中,定义成员函数为虚函数(virtual);(2)(2)定义基类的公有定义基类的公有(public)派生类;派生类;(3)(3)在基类的公有派生类中在基类的公有派生类中“重载重载”该虚函数;该虚函数;(4)(4)定义指向基类的指针变量,它指向基类的公定义指向基类的指针变
10、量,它指向基类的公有派生类的对象。有派生类的对象。重载虚函数不是一般的重载函数,它要求函数重载虚函数不是一般的重载函数,它要求函数名、返回类型、参数个数、参数类型和顺序完全相同。名、返回类型、参数个数、参数类型和顺序完全相同。例如:例如:下面是实现下面是实现“多态性多态性” 的一个例子的一个例子#include class figure /定义基类定义基类 protected: double x,y; public: void set_dim(double i; double j=0) x=i; y=j; virtual void show_area() /定义虚函数定义虚函数 cout“No
11、 area computation define ”; coutset_dim(10.0,5.0); p-show_area(); p=&c; / 指向园形对象指向园形对象 p-set_dim(9.0); p-show_area();void main() figure *p; /定义指向基类的指针变量定义指向基类的指针变量 triangle t; / square s; / 定义基类的公有派生类的对象定义基类的公有派生类的对象 circle c; / p=&t; / 指向三角形对象指向三角形对象 p-set_dim(10.0,5.0); p-show_area();所谓所谓是指生存期可以超越
12、程序的执行时是指生存期可以超越程序的执行时间而长期存在的对象。间而长期存在的对象。 目前,大多数目前,大多数OOPL不不支持永久对象,如果一个支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。琐的工作。 为了实现永久对象,使上述烦琐工作由系统自动为了实现永久对象,使上述烦琐工作由系统自动完成,需要较强的技术支持;需要一个基于永久对象完成,需
13、要较强的技术支持;需要一个基于永久对象管理系统管理系统OMS(object management system),能够能够描述和处理永久对象的编程语言。描述和处理永久对象的编程语言。 面向对象分析面向对象分析OOA( (Object-Oriented Analysis) )的的目标是完成对所求解问题的分析,确定系统目标是完成对所求解问题的分析,确定系统“作什作什么么”,并建立系统的,并建立系统的模型。模型。基本概念基本概念: 问题域问题域(problem domain) 被开发系统的应用领域。被开发系统的应用领域。 系统责任系统责任(system responsibilities) 所开发的系
14、统应所开发的系统应具备的职能。具备的职能。 1. 确定问题域和系统责任困难确定问题域和系统责任困难 2. 充分交流的问题解决得不好充分交流的问题解决得不好 3. 很难适应需求的不断变化很难适应需求的不断变化 4. 难以满足复用要求难以满足复用要求 运用面向对象的方法,对问题域和系统责任运用面向对象的方法,对问题域和系统责任进行分析和理解,建立分析模型。进行分析和理解,建立分析模型。 1.1.分析问题域,分析问题域,确定类和对象确定类和对象; 2. 定义类或对象属性和操作,确定其结构;定义类或对象属性和操作,确定其结构; 3. 建立系统中类或对象之间的静态联系和动态建立系统中类或对象之间的静态联
15、系和动态联系。联系。图4.7 OOA分析过程对象层对象层特征层特征层关系层关系层交交互互图图主主题题图图详详 细细 说说 明明基本模型基本模型 (类图)(类图)图4.8 OOA模型与详细说明基本模型基本模型是一个类图是一个类图(class diagram),是以直观的方式表达系统最重要的是以直观的方式表达系统最重要的信息。信息。OOA基本模型的三个层次分基本模型的三个层次分别描述了:系统中应设哪几类对象,别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部每类对象的内部构成,对象与外部的关系。的关系。对象层对象层特征层特征层关系层关系层交交互互图图主主题题图图详详 细细 说说 明明基
16、本模型基本模型 (类图)(类图)主题主题( (subject)又称为子系统又称为子系统( (subsystem) )是将一些联系密切是将一些联系密切的类组织在一起的类的集合。按的类组织在一起的类的集合。按照粒度控制原则,将系统组成几照粒度控制原则,将系统组成几个主题,便于理解。个主题,便于理解。对象层对象层特征层特征层关系层关系层交交互互图图主主题题图图详详 细细 说说 明明基本模型基本模型 (类图)(类图)交互图交互图(interaction diagram) 是是Use case与系统成分之间的对与系统成分之间的对照图。照图。对象层对象层特征层特征层关系层关系层交交互互图图主主题题图图详详
17、 细细 说说 明明基本模型基本模型 (类图)(类图)详细说明详细说明按照分析方法所要求按照分析方法所要求的格式,对分析模型进行说明的格式,对分析模型进行说明和解释。主要以文字为主。和解释。主要以文字为主。OOD(ObjectObject-Oriented -Oriented DesignDesign) 将分析将分析模型划分为若干子系统,子系统应该具有模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。的并发性,为子系统分配处理器。保险单保险单填写界面填写界面系统内部系统内部保险单保险单客户
18、客户数据库界面数据库界面(abstract)Oracle 界面界面Sybasec界面界面子系统的分解是关键,可以有分层和分块:子系统的分解是关键,可以有分层和分块:将软件系统组织为层次结构,每层是一个子系将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。统。分层结构又分为封闭式和开放式。垂直分块是将系统分解为若干个相对独立的、垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统。每个子系统相当于一个块,每块实现弱耦合的子系统。每个子系统相当于一个块,每块实现一类服务。一类服务。常常使用分层和分块的混合结构,如图所示:常常使用分层和分块的混合结构,如图所示:应用程序包应
展开阅读全文