第九章-面向对象程序方法课件.ppt

上传人(卖家):晟晟文业 文档编号:5099175 上传时间:2023-02-10 格式:PPT 页数:46 大小:173.01KB
下载 相关 举报
第九章-面向对象程序方法课件.ppt_第1页
第1页 / 共46页
第九章-面向对象程序方法课件.ppt_第2页
第2页 / 共46页
第九章-面向对象程序方法课件.ppt_第3页
第3页 / 共46页
第九章-面向对象程序方法课件.ppt_第4页
第4页 / 共46页
第九章-面向对象程序方法课件.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、1第九章 面向对象程序方法学习要求:v 掌握面向对象程序设计语言的发展史。v 了解主要的一些程序设计范型。v 熟练掌握面向对象程序设计语言的三大特性:封装、继承和多态。v 熟练掌握面面向对象程序设计语言的基本概念29.1 概述 目前,软件的生产方式也正在发生一场类似的变革 面向对象是软件程序设计的一种新思想 面向对象的基本思想:从现实世界中客观存在的事物(对象)出发构造系统,并在系统构造中运用人类的自然思维方式 39.1.1 面向对象的由来“对象“表示现实世界中的某个具体的事物 现实世界中的事物可分为两大部分:物质和意识 物质表达的是具体的事物 意识描述的是某一个抽象的概念 例如:“自行车”和

2、“这辆白色的自行车”,后者是物质,使具体的客观存在,前者是意识,它是一个抽象的概念,是对客观存在的事物的一种概括。4问题领域 现实世界中的事物可直接映射到面向对象系统的问题领域 现实世界中的物质可对应于面向对象系统中的“对象”现实世界中的意识可对应面向对象系统中的抽象概念-类 5问题领域 物质:一辆白色的自行车意识:自行车 具体事物:一个对象-自行车的实例抽象概念:自行车类 现实世界问题领域 面向对象问题领域 现实世界与面向对象系统之间的对应关系 69.1.2 面向对象方法的发展面向对象方法:面向对象方法:是利用抽象、封装等机制,借助对象、类、继承、消息传递等概念进行软件系统构造的软件开发方法

3、。用面向对象思想构造软件系统的主要内容:(P208例子)对象 对象的属性和操作-一个完整的对象 类 继承 一个系统就是由各个对象组成的。79.1.2 面向对象方法的发展史200090年代80年代70年代60年代 面向对象方法的发展Algol语言中引入引入块结构(beginend),第一次尝试为数据提供保护和封装数据抽象类型概念的发展-面向对象的基本思想:数据结构+操作=实体Simula 67语言引入对象和消息机制。-面向对象语言的鼻祖SmallTalk 80 商品化-纯粹的OO编程语言产生了Ada语言,支持抽象数据类型的最重要的语言之一。大量的OOPL出现-面向对象方法走向实用1986年,首届

4、“面向对象编程、系统、语言和应用国际会议”Object-c,C+,Eiffel,Java-有广泛影响的面向对象程序设计语言。面向对象软件工程发展。8面向对象相关术语面向对象(OO:Object Oriented):面向对象分析(OOA:Object Oriented Analyse)面向对象设计(OOD:Object Oriented Design)面向对象程序设计(OOP:Object Oriented Programming)面向对象数据库(OODB:Object Oriented DataBase)99.2 基本概念-对象 抽象 对象是无处不在的 对象是数据数据以及可以对这些数据施加的操

5、作操作结合在一起所构成的独立实体的总称。10对象在软件系统开发的各个阶段的不同表现形式 v分析阶段:对象是一种粗略的描述v设计阶段:对象的数据和操作进一步得到细化,对象的特性得到明确的描述v编程阶段:通过定义类,并将其实例化从而得到具体的对象v运行阶段:对象成为内存中可标识的区域,存放数据和操作代码 11一个对象类的定义与对象实例化/-/例9.1 演示:对象类的定义与对象实例化/-/定义一个电话类定义一个电话类class Phone class Phone private:private:char owner10;/char owner10;/电话主人姓名电话主人姓名 char address

6、50;/char address50;/电话所在地电话所在地 char char phoneNumberphoneNumber10;/10;/电话号码电话号码12一个对象类的定义与对象实例化public:public:Phone(char Phone(char*owner,char owner,char*address,char address,char*phoneNum phoneNum);/);/构造函数构造函数 char char*getPhoneNumber getPhoneNumber();/();/取电话号码取电话号码 char char*getOwner getOwner();/

7、();/取电话主人姓名取电话主人姓名 char char*getAddress getAddress();/();/取电话所在地取电话所在地 char char*changeOwnerchangeOwner(char(char*);/);/电话过户电话过户 char char*dial(char dial(char*);/);/拨号拨号;/对象实例化对象实例化Phone myPhone(“张三张三”,”河南郑河南郑州州”,”1234567”);139.2 基本概念-消息 1.软件系统中的对象之间存在依存关系:对象通过接收消息,对外提供服务发挥能动性对象通过发送消息,请求其他对象为它服务2.消息

8、:消息是对象之间相互请求和相互协作的途径,要求某个对象执行类中所定义的某个操作的规格说明。3.消息的几个关键要素:消息的发送者、消息的接收者、消息名、参数及应答。注:消息是对象之间通信的唯一途径注:消息是对象之间通信的唯一途径14老板对下属说:“明天早上八点以前把有关饮料的市场调查报告放到我的办公桌上”。消 息的 发送者消 息的 接收者参数1参数2参数3注意在此消息名是:给我市场调查报告15消息的几个特性 同一对象可以接收不同形式的消息,产生不同的响应 相同形式的消息可以送给不同对象,所做出的响应可截然不同 消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以不理会16公有消息和私有消息

9、 私有消息:由对象自己向本身发送的消息,这些消息不对外开放,外界不必了解它 公有消息:由外界直接向对象发送的消息 17在程序设计语言中的消息1.在具体的程序中,消息的表现形式为对象在其操作过程中对另一个对象的服务程序的调用,也就是函数(或过程)调用。2.例:给电话对象发送一个消息char*ifdial;ifdial=myPhone.dial(“82904456”);3.不是所有的函数调用都是消息 189.2 基本概念-类 1.类是人类抽象思维的产物。2.对一组具有相同数据和相同操作的对象的描述。3.类是对一组对象的抽象概括,而每个对象都是某一个类的一个具体的实例。对象本身不包括实现操作的代码,

10、对象本身不包括实现操作的代码,这些代码在类中定义这些代码在类中定义199.2 基本概念-类 1.类是用唯一的类名来标识的,类的定义包括数据和操作两部分。2.类中的数据和操作由于访问权限的不同,又分为公有的、私有的和受保护的。3.类与对象的关系 209.2 基本概念-实例 1.由某个特定类所描述的一个对象 2.同一个类的不同实例之间有以下特点:相同的操作集合 相同的属性集合 不同的对象名 对象和类的实例是同义词 219.2 基本概念-方法 对象所能执行的操作 在C+中称为成员函数 类中定义的函数,描述对象执行操作的算法,即响应消息的方法 229.3 面向对象的程序设计方法 面向对象程序设计是软件

11、系统设计与实现的新方法 增加软件的可扩充性和可重用性 改善并提高程序员的生产能力 控制维护软件的复杂性和软件维护的开销 239.3.1 程序设计范型 q范型:指一种通用的一般化的关于现实世界的模型。它体现了一类语言的主要特点,这些特点能用来支持应用域所希望的设计风格。q面向对象程序设计范型:v 从程序这一方面将,它是一个类的集合和各类之间的继承关系联系起来的结构,再加上一个主程序,在主程序中定义各对象并规定他们之间传递消息的规律。v 从程序执行这一方面讲,他归结为各对象和他们之间以消息传递的方式进行着的通讯。qOOP的主要特征:各对象之间的消息传递和各类之间的继承。249.3.2 结构化程序设

12、计设计思想设计思想:自顶向下、逐步求精。类似我们一般的思维方式。主模块子模块1子模块2子模块3子模块3-m子模块n子模块3-1子模块3-2子模块3-325结构化程序设计的优缺点优点:自顶向下,逐步求精 模块化 复用缺点 面向功能,易于变化:功能变化频繁,用户需求不断改变 把数据和过程分离为相互独立的实体 复杂系统的行为难以用顶层功能描述 本质上不利于复用 26一般的面向结构的程序设计框架main()fun1()fun2()func3()279.3.4 面向对象程序设计 吸取了结构化程序设计的一切优点 考虑了现实世界与面向对象解空间的映射关系 形成一个新的数据类型“类”类型 目前的面向对象程序设

13、计语言都提供了大量的类 例如:链表是一种常用的数据类型,利用它可以实现数据的存储。我们可以把链表这种存储结构以及对链表的插入和删除等操作封装成一个类,这样使用链表时,可以先构造出一个链表对象,对它的操作,就转化为调用其方法实现。28面向对象程序设计的目标和优点目标:将现实世界的问题取解尽可能简化 优点 自然、直观:考虑了现实世界与面向对象解空间的映射关系 将数据和操作放在了一起,作为一个相互依存、不可分割的整体来处理,采用数据抽象和信息隐藏技术 将对象以及对对象的操作抽象成一种新的数据类型-类 为继承和复用提供了有效的手段 使用多态性增强了操作的透明性、可理解性和可维护性 29 肩头 箭头表示

14、消息 整个应用程序对象1对象2对象3对象4对象5一般的面向对象的程序设计框架309.4 OOPL的三个重要特性 封装性继承性多态性 319.4.1 封装性 封装指的是将一个数据和与这个数据有关的操作集合放在一起,形成一个能动的实体-对象 封装有双重含义:包装和信息隐藏 封装和继承是面向对象方法中互补的两种技术 在程序设计中,是通过对类的数据和操作定义访问权限(private、public、protected)32从外界只能看到对象的外特性,即能够接受哪些消息,具有哪些处理能力。而对象的内特性(实现处理能力的算法和保存内部)对外是不可见的。封装的状态 方法2方法1方法方法n属性1属性2属性属性n

15、339.4.2 继承性 面向对象的程序设计语言的许多强有力的功能,来自于将它的类组成一个层次结构(类等级)一个类的上层可以有父类,下层可以有子类 这种层次结构的一个重要性质是继承性,一个类直接继承其父类的全部描述(数据和函数)继承又具有传递性 如果 类C 类B,类B 类A,则类C 类A 34baseclass drivedA drivedB drivedB drivedA drivedCbaseclass drivedA drivedB drivedD 单继承 重复继承 多继承 35应用程序中的继承性class baseClassclass B:public baseClassclass C:

16、public baseClassclass D:public A,public B369.4.3 多态性 指在基类中定义的数据或操作被派生类继承之后,可以具有不同的数据类型或表现出不同的行为,从而是的同样的操作名称在各个派生类中具有不同的含义。指类等级的各层中共享(公有)一个行为(函数)的名字,然而类等级中各类却各自按各自的需要来实现这个行为。以:shape为例,它的draw,这对不同形状的图形所画的方法也不一样 多态性的实现需要借助于面向对象的动态连接、重载的机制来支持 37多态性举例-绘图程序GraphLineEllipsePolygonCircleTriangleRectangleGra

17、ph*pObj;/定义一个指向图形对象的指针.pObj-Draw();/绘制图形38c+语言中的多态性 编译时得多态性:由重载实现的 运行时得多态性:由虚函数实现的 399.5 抽象 抽象是面向对象的基本思想是一种从一般的观念看待事物的方法 要求程序员集中于事物的本质特性而不是具体细节和实现细节 程序员从一组对象为起点,抽取公共行为(方法)到一个类中。40抽象现实世界的物体抽象成对象。现实世界物体之间的关系抽象成软件系统中对象之间的关系。具有共同特征的对象抽象成类。具有共同特征的类抽象出基类和派生类。程序员从一组对象为起点,抽取公共行为(方法)到一个类中。41面向对象系统的一个简单模型 对象

18、类 继承42*9.6 面向对象的分析与设计 面向对象开发方法的生命周期面向对象分析 面向对象设计 439.6.1 面向对象开发方法的生命周期 分析阶段:对问题领域中存在的事物的分析,进行抽象。设计阶段:结合具体的开发环境,进行详细设计。实现阶段:进行具体的编程,以及代码测试。449.6.2 面向对象分析 面向对象分析是软件开发过程中的问题定义阶段 面向对象分析的结论 面向对象分析包括两个方面:问题分析 应用分析 面向对象分析的过程就是建立OOA模型的过程 459.6.3 面向对象设计 1.设计是对分析结果的进一步加工2.设计阶段主要是要考虑与实现相关的因素。3.设计阶段进行的四个方面:v问题域v人机交互 v数据管理 v系统交互 469.8 面向对象程序设计语言 1.OOPL提供了特定的语法成分如类、对象来保证和支持面向对象的程序设计,并且提供继承、多态等机制。2.OOPL的出发点就是更直接描述问题领域中客观存在的事物以及它们之间的关系

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第九章-面向对象程序方法课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|