第九章面向对象程序方法_第1页
第九章面向对象程序方法_第2页
第九章面向对象程序方法_第3页
第九章面向对象程序方法_第4页
第九章面向对象程序方法_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

第九章面向对象程序方法9.1面向对象方法概述9.2面向对象方法的基本概念9.3面向对象的意义9.4面向对象的分析和设计9.5面向对象方法与软件复用9.6面向对象程序设计语言小结9.1面向对象方法概述9.1.1面向对象的概念9.1.2面向对象方法的形成9.1.1面向对象的概念1.对象是以面向对象方法构造的系统的基本单位。对象是对问题域中客观存在的事物的抽象,对象具有描述其特征和状态的属性,还可以响应外界的消息,进行一定的操作。2.对象的属性和操作组成了一个完整的对象,对象只对外开放其属性和操作的一部份,大部份实现细节将对其它对象隐藏,这种机制称为封装,对象的对外接口称为服务。3.将具有共同特征的对象进行抽象,形成对这些对象的抽象描述—类,每个对象就成为该类的一个实例。4.对形成的对象类进一步抽象,抽取这些类的共同特征,形成基本的类和派生的类。5.一个系统就是由各个对象组成,对象和对象之间存在静态关系和动态关系,静态关系体现了对象之间固有的联系。动态关系是对象之间通过发送消息进行通信,相互协作,完成系统功能。复杂对象可以由简单对象构成,这种关系称做聚合。面向对象方法采用的最主要机制是抽象。面向对象方法是利用抽象、封装等机制,借助于对象、类、继承、消息传递等概念进行软件系统构造的软件开发方法。9.1.2面向对象方法的形成面向对象方法起源于面向对象的编程语言OOPL。第一个完善、实用的纯面向对象的语言是Smalltalk。Smalltalk语言有三个特点:1.将任何东西都看成对象。2.不进行任何类型检查操作,强调多态性和动态连接。3.是一个具有类库支持和交互式图形界面的完整程序设计环境。20世纪80年代中期到90年代,大批实用的面向对象语言不断涌现,标志着面向对象语言走向成熟和繁荣。面向对象编程语言的繁荣又是面向对象方法走向实用的重要标志。9.2面向对象方法的基本概念9.2.1对象9.2.2程序设计语言中的对象9.2.3消息9.2.4程序设计语言中的消息9.2.5类9.2.6程序设计语言中的类9.2.7继承9.2.8程序设计语言中的继承9.2.9封装9.2.10程序设计语言中的封装9.2.11多态性9.2.12程序设计语言中的多态性9.2.1对象现实世界中的任何客观存在着的事物都可以称为对象。属性和操作是对象的两大要素。属性是描述对象的静态特征的,操作是描述对象的动态特征的。对象是对问题域中客观存在的事物的抽象,它是一组属性和在这些属性上操作的封装体。9.2.2程序设计语言中的对象在软件系统开发的各个阶段,对象有其不同的表现形式。在程序设计语言中,用类来定义对象,类相当于一种用户自定义的数据类型,这种数据类型是一个由数据和作用在这些数据之上的操作所组成的整体。对象相当于具有该类型的一个变量。9.2.3消息软件系统中的对象之间也存在着依存关系,一个对象除了通过对外提供服务来发挥自己的作用外,还需要请求其它对象为它服务。消息是向对象发出的服务请求。是面向对象系统中对象之间交互的途径。消息的关键要素:消息的发送者、消息的接收者、消息所要求的具体服务、消息所要求的服务的一些参数以及消息的应答。9.2.4程序设计语言中的消息在具体的程序设计语言中,消息表现为对象在其操作过程中对另一个对象的服务程序的调用,也就是函数(或过程、例程)调用。对于纯粹的面向对象语言,所有的函数调用都可以看成是一种消息,所有的消息发送者都是对象。9.2.5类类是人类抽象思维的产物。在面向对象方法中,对问题域中与当前相关的对象进行分析,找出事物的共性,并对具有共同特征的对象进行划分,就得到了类。类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。9.2.6程序设计语言中的类类是一个独立的程序单位,它具有一个类名来唯一标识这个类,类的定义体包括属性和操作。属性和操作还有公有、私有之分,公有的属性和操作可以为其它对象所访问,而私有的属性和操作是在类对象内部实现,体现了封装和信息隐藏的操作思想。公有的操作就体现为对象的服务。9.2.7继承特殊类的对象拥有其一般类的全部属性和操作,称做特殊类对一般类的继承。一般类是对各种特殊类的共同特性的抽象。特殊类通过继承自动获得一般类所具有的特性,因而特殊类只需要再定义属于它自己特定的属性和操作就可以了,特殊类的对象不仅包含它自己类中定义的属性和操作,也包含了在一般类中定义的所有属性和服务。继承关系中的一般类称为基类,特殊类称为派生类。9.2.8程序设计语言中的继承继承是面向对象语言必须具有的功能。定义派生类时指定所继承的基类,从而表达了类之间的继承关系。VC++用:class派生类名:继承方式基类名{…};来进行定义9.2.9封装对象是一个数据和操作的封装体,这个封装体对外仅呈现少量的接口,大多数实现细节都对外隐藏。封装的含义一是包装,二是信息隐藏,对外只公布一个有限的界面,通过这个界面和外界交互。封装和继承是面向对象方法中互补的两种技术。封装使对象成为一个相对独立的整体,而继承给了对象类另一个发展的空间,派生类通过继承得到了基类的属性和操作。封装使用其它对象的服务实现动态共享,而继承则是对代码的静态共享。9.2.10程序设计语言中的封装封装是面向对象程序设计语言必须提供的机制。严格的封装要求对象的所有属性和操作都对外隐藏,外界只能通过那些公共的操作(即服务)才能访问这些属性。VC++允许对象定义一部分公有属性,外界对象可直接访问。9.2.11多态性对象的多态性是指基类中定义的属性或操作被派生类继承之后,可以具有不同的数据类型或表现出不同的行为,从而同一个属性或操作名称在各个派生类中具有不同的含义。多态性的实现需要借助于面向对象语言的动态连接、重载等机制来实现。9.2.12程序设计语言中的多态性面向对象程序设计语言中,多态性表现为以统一方式对待具有相同的接口的不同类的实例的能力。VC++语言支持两种多态性:编译时的多态性和运行时的多态性。编译时的多态性通过重载实现,运行时的多态性通过虚函数实现。9.3面向对象的意义9.3.1模块化—软件质量保证9.3.2复用—软件快速开发和必由之路9.3.3走面向对象式道路9.3.4结构化程序设计9.3.5面向对象程序设计9.3.1模块化—软件质量保证系统的设计应遵循:1.设计简单;2.控制分散要得到可维护性、可复用性与兼容性好的软件,软件的系统结构应该是模块化的。好的模块具有高内聚低耦合的特性。9.3.2复用—软件快速开发和必由之路尽管软件设计中重复的现象很多,但由于经济、机构、心理上的障碍,软件的复用并不普遍。9.3.3走面向对象式道路随着软件系统复杂性日益提高,传统的结构化程序设计方法有些力不从心,必须采用面向对象程序设计方法。9.3.4结构化程序设计设计思路:自顶向下,逐步求精。缺陷:①以功能分解作为基本思路,而功能是系统中最易变的部分②大多数系统无法简单地用一个顶层功能来描述,也没法简单地用一个主程序来描述系统的操作流程。③是面向过程的设计方法,把程序定义为“数据结构+算法”。④自顶向下的程序设计方法与复用思想本质上是背道而驰的。9.3.5面向对象程序设计吸收结构化程序设计的优点,又考虑了现实世界与面向对象空间的映射关系。①符合人类思维习惯,能自然地表现现实世界的实体和问题。②是代码复用的有效途径。③封装使得对象相对独立,对软件维护带来方便。④多态性增强了操作的透明性、理解性和可维护性。多态性和继承的结合增强软件的灵活性和可复用性。9.4面向对象的分析和设计面向对象软件开发的生命周期可分为:分析、设计、实现三部份。OOA过程包含以下主要活动:1.发现对象,并对它们抽象分类,得到对象的类;2.识别对象的内部特征,包括对象的属性和操作;3.识别对象的外部关系;4.借助其它表示法进一步分析系统;5.对上面建立的所有表示进行详细的说明;6.如需要时开发原型,辅助分析。设计阶段奖针对以下四方面:1.问题域;2.人机交互;3.数据管理;4.系统交互。9.5面向对象方法与软件复用软件复用就是将已有的软件成分用于构造新的软件系统。分子程序库的复用、源代码级的复用、设计结果的复用和分析结果的复用。复用能提高率,降低软件生产的代价。9.6面向对象程序设计语言支持软件复用是人们对面向对象方法的主要希望之一。面向对象的抽象、封装、继承、聚合这些原则和软件复用的要求十分吻合。可复用构件应该具备一定的独立性和完整性,对象和类正具备这一特征。面向对象的软件开发和软件复用之间的关系是相辅相成的。小结OOPL用对象来描述现实世界中的对象,用对象的属性和操作描述现实世界中的对象的静态和动态特征;OOPL用类来描述具有共同特征的

温馨提示

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

最新文档

评论

0/150

提交评论