面向对象程序设计概论.ppt

上传人:ni****g 文档编号:569944520 上传时间:2024-07-31 格式:PPT 页数:35 大小:343KB
返回 下载 相关 举报
面向对象程序设计概论.ppt_第1页
第1页 / 共35页
面向对象程序设计概论.ppt_第2页
第2页 / 共35页
面向对象程序设计概论.ppt_第3页
第3页 / 共35页
面向对象程序设计概论.ppt_第4页
第4页 / 共35页
面向对象程序设计概论.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《面向对象程序设计概论.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计概论.ppt(35页珍藏版)》请在金锄头文库上搜索。

1、第一章 面向对象程序设计概论1.1 OOP(Object-OrientedOOP(Object-Oriented Programming)Programming)的的基基本思想和有关概念本思想和有关概念1.1.1 面向过程程序设计与面向对象程序设计面向过程程序设计与面向对象程序设计1.1.2 面向对象程序设计的有关概念面向对象程序设计的有关概念1.2 C+对对OOP方法的支持方法的支持1.3C+对对C语言的改进语言的改进1.4C+程序的编辑、编译和运行程序的编辑、编译和运行1.5C+程序结构的特点程序结构的特点1.6 Visual C+程序运行步骤程序运行步骤小结小结Evaluation on

2、ly.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计例例1.11.1:输入任意短语或句子,计算短语包含多少个字:输入任意短语或句子,计算短语包含多少个字(word)(word)和字和字符符(character)(character)。注意:输入短语时,字和字之间只能空一格。注意:输入短语时,字和字之间只能空一格。#include /面向过程程序面向过程程序void main() ch

3、ar ch; int wdcount,chcount; wdcount=1; chcount=0; printf(*:Please input any phrase:n); while(ch=getchar()!=n) chcount+; if(ch= ) wdcount+; printf(n*:The number of word is %dn,wdcount);printf(n*:The number of word is %dn,wdcount); printf(n*:The number of char is %dn,chcount); printf(n*:The number of

4、char is %dn,chcount); *Please input any phrase.I am a teacher.*:The number of word is 4*:The number of char is 15Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续1)void main() count A;/定义对象定义对象 A.proc

5、ess();/调用公有成员函数调用公有成员函数 A.display(); 面向对象程序设计方法面向对象程序设计方法Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续2)#include #include using namespace std;class count /定义类定义类public: /公有成员公有成员 count(); /构造函数构造函

6、数 void process(); /成员函数成员函数 void display();private: /私有成员私有成员 int wdcount,chcount;/数据成员数据成员;count:count() wdcount=1; chcount=0;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续3)void count:process() /

7、成员函数的实现成员函数的实现 char ch; cout*:Please input any phraseendl; while(ch=getchar()!=n) chcount+; if(ch= ) wdcount+; coutendl;void count:display() coutn*:number of word is wdcountendl; printf(*:number of char is %dn,chcount); Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.C

8、opyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续4)是一种数学思维或计算是一种数学思维或计算机思维方法,与人们认机思维方法,与人们认识世界的方法不同识世界的方法不同以不稳定的、多变的以不稳定的、多变的“过程过程”和和“操作操作” 为中为中心来构造系统心来构造系统可重用性较差可重用性较差是建立在认识方法学基是建立在认识方法学基础上的一项技术科学,础上的一项技术科学,比较自然地模拟了人类比较自然地模拟了人类认识客观世界的方式;认识客观世界的方式;以相对稳定的以相对稳定的“对象对象”和和“数据结构数据结构”为中

9、心为中心来构造系统来构造系统可重用性较好可重用性较好面向过程程序设计面向对象程序设计Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续5)面向过程程序设计程序程序=(算法)(算法)+(数据结构(数据结构)面向对象程序设计程序程序=(算法(算法+数据结构)数据结构)P1P2P3P4P5O1O2O3O4O5P6Evaluation only.Create

10、d with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续6)面向过程程序设计面向对象程序设计P1P2P3P5O1O2O3O4O5P6O4Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计

11、面向过程与面向对象程序设计(续续7)消息传递消息传递机制机制面向过程程序设计面向对象程序设计参数参数 f1()() 返回值返回值过程过程1参数参数 f2()() 返回值返回值过程过程2参数参数 f3()() 返回值返回值过程过程3数据数据1数据数据2数据数据3数据数据4数据数据5消息消息1MF2对象对象1MF4MF3MF2MF1对象对象2MF4MF3MF1消息消息2Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.

12、1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续8)面向过程的方法面向过程的方法: 结构化程序设计思想为使用面向过程的方法结构化程序设计思想为使用面向过程的方法解决复杂问题提供了有力的手段解决复杂问题提供了有力的手段. 结构化程序设计思路结构化程序设计思路:自顶向下划分模块自顶向下划分模块,直直到最底层的每个模块都是完成单一独立的功能为到最底层的每个模块都是完成单一独立的功能为止止;将这些函数模块装配起来即实现编程的任务将这些函数模块装配起来即实现编程的任务. 数据和处理数据的方法是分开完成的数据和处理数据的方法是分开完成的.Evaluation only.Created w

13、ith Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续9)面向对象的方法面向对象的方法: (1)将数据及对数据的操作方法放在一起将数据及对数据的操作方法放在一起,作作为对象为对象; (2)对同类型对象抽象出其共性,形成类对同类型对象抽象出其共性,形成类; (3)类中数据用本类的方法进行处理类中数据用本类的方法进行处理; (4)类通过一个简单的外部接口与外界发生类通过一个简单的外部接口与外界发生关系,对象

14、与对象之间通过消息进行通信关系,对象与对象之间通过消息进行通信.Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.1.2 面向对象程序设计的有关概念面向对象程序设计的有关概念一、对象与抽象一、对象与抽象二、类二、类三、封装三、封装四、继承四、继承五、多态五、多态Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0

15、.Copyright 2004-2011 Aspose Pty Ltd.一、对象与抽象一、对象与抽象1、对象、对象对象是现实世界中实际存在的一个事物,如:一对象是现实世界中实际存在的一个事物,如:一本书、一台电脑本书、一台电脑对象是面向对象程序设计的核心概念,从现实事对象是面向对象程序设计的核心概念,从现实事物中抽象出来,对象具有:物中抽象出来,对象具有:(1) 属性属性: 状态和外貌特征状态和外貌特征 用数据表示用数据表示(2) 方法方法: 行为行为 用程序代码表示用程序代码表示 对象对象 = (算法算法 + 数据结构数据结构) 程序程序 = (对象对象1 + 对象对象2 + 对象对象3 )

16、Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.一、对象与抽象(续一、对象与抽象(续1)2、抽象、抽象抽象是对现实世界中的实体进行归类、简化的描述,抽象是对现实世界中的实体进行归类、简化的描述,即模型化即模型化;是通过从特定的实例中抽取共同的性质是通过从特定的实例中抽取共同的性质以形成一般化的概念的过程;以形成一般化的概念的过程;抽象代表着一个对象的抽象代表着一个对象的本质特征本质特征,这个特征将该对象,这个特征将该

17、对象与所有其他种类的对象区别开来;与所有其他种类的对象区别开来;抽象具有抽象具有层次层次;汽车汽车轮船轮船飞机飞机交通工具交通工具Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.二、类 1.什么是类什么是类 类是面向对象程序设计封装的基本单元,是创建对象类是面向对象程序设计封装的基本单元,是创建对象的样板的样板,它包含着对所创建对象的它包含着对所创建对象的状态描述和方法状态描述和方法的定义。的定义。类的完整描述包含了

18、外部接口和内部算法以及数据结构的类的完整描述包含了外部接口和内部算法以及数据结构的形式;形式; 类类由由struct类型类型引申而来,并将引申而来,并将数据和处理数据的数据和处理数据的函数函数捆绑在一起。捆绑在一起。 2. 类是对象的抽象及描述类是对象的抽象及描述 类是对问题的类是对问题的抽象描述,是对象的抽象。抽象描述,是对象的抽象。 3. 类是抽象数据类型的实现类是抽象数据类型的实现 类是对逻辑上相关的类是对逻辑上相关的函数与数据的封装,函数与数据的封装,类是所有对类是所有对象的象的共同的行为共同的行为和和不同的状态不同的状态的集合体;的集合体;Evaluation only.Create

19、d with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.例例1-2 结构体引申为类结构体引申为类struct Complex1 /结构体结构体 double real,imag; ;class Complex2 /类类 private: double real, imag; /数据成员数据成员 public: void Set(double r,double i) /成员函数成员函数 real=r; imag=i; ;void main() Complex1 x; x

20、.real=100; Complex2 a,b; /a、b是是Complex2类的实例变量类的实例变量 a.Set(4.0,6.0); /调用成员函数来实现消息发送调用成员函数来实现消息发送 b.Set(4.0,6.0); /同一消息可发向多个对象同一消息可发向多个对象Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.三、封装三、封装数据封装:数据封装:将数据和处理数据的方法包装成一个整体,将数据和处理数据的方法包装成

21、一个整体,并将具体实现细节的数据信息和操作方法在结构上隐藏并将具体实现细节的数据信息和操作方法在结构上隐藏起来;起来;信息隐藏:信息隐藏:将一个模块的细节部分对用户隐藏起来,用将一个模块的细节部分对用户隐藏起来,用户只能通过一个户只能通过一个受保护的接口受保护的接口来访问某个模块,而不能来访问某个模块,而不能直接访问一个模块内部的细节;直接访问一个模块内部的细节;对象是一个对象是一个状态状态和和操作(或方法)操作(或方法)的的封装体封装体;我的电路被我的电路被封装封装在机壳内了!在机壳内了!使用电话请按键!使用电话请按键!公有成员Evaluation only.Created with Asp

22、ose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.人人小学生小学生 中学生中学生 大学生大学生研究生研究生工人工人学生学生教师教师农民农民四、继承四、继承 继承将客观世界中一般和特殊的关系模型继承将客观世界中一般和特殊的关系模型化为层次结构,提供了创建新类的一种方法,化为层次结构,提供了创建新类的一种方法,它的本质特征是行为共享;它的本质特征是行为共享;助教助教 讲师讲师 教授教授研究生研究生Evaluation only.Created with Aspose.Slides fo

23、r .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.对象实例:对象实例: 研究生研究生 王王 平平人人身份证号码:字符串(身份证号码:字符串(18位)位)姓姓 名:字符串(名:字符串(20位)位)学生学生学校名称:字符串(学校名称:字符串(30位)位)学学 号:字符串(号:字符串(12位)位)研究生研究生专专 业:字符串(业:字符串(30位)位)入学年月日:结构类型入学年月日:结构类型Date作为作为“人人”身份证码:身份证码:420153199517042520姓姓 名:王名:王 平平作为作为“学生学生”学

24、校名称:中南民族大学学校名称:中南民族大学学学 号:号:100701022作为作为“研究生研究生”专专 业:自动控制业:自动控制入学年月日:入学年月日:1/9/2010四、继承(续四、继承(续1)Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd. 继继承承可可增增强强代代码码的的可可重重用用性性,代代码码的的重重用用是是利用继承基类的属性和方法来实现的利用继承基类的属性和方法来实现的. 继继承承某某一一基基类类的的派派

25、生生类类可可自自动动继继承承基基类类的的全部属性和方法全部属性和方法. 增增加加派派生生类类时时,即即修修改改和和扩扩充充程程序序时时也也不不必必修修改改原原有有程程序序代代码码,只只需需增增加加一一些些新新的的程程序序代代码码.四、继承(续四、继承(续2)Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd. 发发出出同同样样的的消消息息,被被不不同同类类型型的的对对象象接接收收,导致完全不同的行为。导致完全不同的行为。

26、例例:调调用用函函数数求求两两个个整整型型量量或或两两个个双双精精度度型型量量的最大值。的最大值。 int max(int ,int); double max(double,double);五、多态五、多态Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.2C+对面向对象程序设计方法的支持对面向对象程序设计方法的支持C+支持数据封装(数据抽象)支持数据封装(数据抽象) C+中,类是支持数据封装的工具,对象则中,类是

27、支持数据封装的工具,对象则是数据封装的实现;是数据封装的实现; C+中包含有私有、公有和保护成员中包含有私有、公有和保护成员C+中通过发送消息来处理对象中通过发送消息来处理对象 每个可能的消息对应一个相应的方法,方法每个可能的消息对应一个相应的方法,方法通过成员函数来定义;通过成员函数来定义;C+中中允许友元破坏封装性允许友元破坏封装性C+中允许函数名和运算符重载中允许函数名和运算符重载C+支持继承性支持继承性C+支持动态联编支持动态联编Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.

28、Copyright 2004-2011 Aspose Pty Ltd.1.3C+对对C语言的改进语言的改进增加了新的运算符:增加了新的运算符::,new, delete等;等; (malloc, free)改进了类型系统,增加了安全性;改进了类型系统,增加了安全性;引进了引进了引用引用概念;概念;允许函数允许函数重载重载,允许设置缺省参数,提高了,允许设置缺省参数,提高了编程的灵活性;编程的灵活性;引进了内联函数,提高了程序的效率;引进了内联函数,提高了程序的效率;可以根据需要随时对变量进行说明可以根据需要随时对变量进行说明Evaluation only.Created with Aspose

29、.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.4C+程序的编辑、编译和运行程序的编辑、编译和运行源程序源程序.cpp目标文件目标文件.obj可执行文件可执行文件.exe编译器编译器连接器连接器磁盘中的磁盘中的#include文件文件C+库文件库文件.LIBEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.

30、1.5 C+程序结构的特点程序结构的特点一、标识符一、标识符 组成规则:以组成规则:以字母字母或或下划线下划线开始,其后跟零个或开始,其后跟零个或多个多个字母字母、数字数字或或下划线下划线;标识符的标识符的长度任意长度任意区分区分字母的字母的大小写大小写;不能不能使用系统的使用系统的保留字保留字;C+系统关键字系统关键字二、预处理命令二、预处理命令宏定义宏定义文件包含文件包含条件编译条件编译Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspo

31、se Pty Ltd.关键字(保留字)关键字(保留字) 表表1-1C+的关键字的关键字P22Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.三、输入三、输入/输出流操作语句输出流操作语句流操作:指数据从源点搬运到终点的流动操作。流操作:指数据从源点搬运到终点的流动操作。1、输出运算符(插入符、输出运算符(插入符inserting、putting) 数据的流动数据的流动 终点终点 源点源点 cout(CRT显示器显示器

32、)程序中的变量名或对象名;程序中的变量名或对象名; 同同printf()一样,可以输出转义符;一样,可以输出转义符;多个输出操作可组合成一条语句;多个输出操作可组合成一条语句;输出运算自动识别数据类型输出运算自动识别数据类型,不需要以,不需要以%开头的格式说明开头的格式说明符。符。例:例:int x;double y; cout“请输入数据:请输入数据:n; coutxy; coutn x =xt y= y程序中的变量名或对象名;程序中的变量名或对象名; 多个输入操作可组合成一条语句;多个输入操作可组合成一条语句;输入运算自动识别数据类型输入运算自动识别数据类型,不需要以,不需要以%开头开头的

33、格式说明符。的格式说明符。例:例:cinxy;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.例例1-3 流操作示范程序流操作示范程序#include using namespace std;void main() double x,y; coutx; couty; double z=x+y; cout”x+y=”zendl;I/O流库,提供所流库,提供所有的输入输出操作有的输入输出操作cout:流类对象:流类对象:

34、提取符:提取符endl:换行;:换行;结果:结果:请输入请输入x:43请输入请输入y:46x+y=89Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.四、函数、语句及注释四、函数、语句及注释C+的源程序由若干个函数组成,函数间相互的源程序由若干个函数组成,函数间相互独立;独立;C+的源程序有且只能有一个的源程序有且只能有一个main();调用用户自定义函数必须先定义好,调用系调用用户自定义函数必须先定义好,调用系统标

35、准函数必须加相应头文件;统标准函数必须加相应头文件;复合语句同复合语句同C语言一样,语言一样,括起来,称为块。括起来,称为块。注释:两种方法注释:两种方法/*/ 可放在程序区域的任何位置,可占多行可放在程序区域的任何位置,可占多行/ 单行注释单行注释 Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.1.6 Visual C+程序运行步骤程序运行步骤一、打开一、打开Visual C+开发环境主窗口开发环境主窗口二、创建

36、一个空的项目二、创建一个空的项目 菜单命令:菜单命令:File / NewFile / New 选项卡:选项卡:Projects / Win32 Console ApplicationProjects / Win32 Console Application LocationLocation:指定路径指定路径 Project NameProject Name:指定项目名称指定项目名称三、建立源程序文件三、建立源程序文件 菜单命令:菜单命令:Project / Add to Project / NewProject / Add to Project / New 选中选中C+ Source File

37、,C+ Source File,指定文件名后单击指定文件名后单击OKOK四、存盘运行四、存盘运行 File / Save File / Save Build, Execute programm Build, Execute programmEvaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.*面向过程解法:面向过程解法:#includestruct animal int weight;int feet; ;int mai

38、n() animal dog1,dog2,chicken; dog1.weight=15; dog2.weight=37; chicken.weight=3; dog1.feet=4; dog2.feet=4; chicken.feet=2; coutThe weight of dog1 is dog1.weightendl; coutThe weight of dog2 is dog2.weightn; cout Wt of chicken ischicken.weightendl; return 0;P54 L2-13 3只动物有重只动物有重量和身长两个属性,量和身长两个属性,对其赋值,并

39、输出对其赋值,并输出它们的重量它们的重量Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.*面向对象解法:面向对象解法:#include class animalpublic:animal(int W=0,int F=0)weight=W; feet=F; int getWeight();int getfeet(); private:int weight;int feet;int animal:getWeight()

40、/成员函数的实现成员函数的实现 return weight; int animal:getfeet() return feet; Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.int main()animal dog1(15,3),dog2(37,4);animal chicken(3,4);coutThe weight of dog1 dog1.getWeight()endl;coutThe weight of

41、dog2 dog2.getWeight()endl;coutThe weight of chicken ;cout chicken.getWeight()n;return 0;Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.小结小结(1)OOP以以对对象象为为核核心心,以以抽抽象象和和归归类类为为基基础础,强强调调程程序序分分层层分分类类的的概概念念,克克服服了了软软件件复复杂杂性性,是是将将客客观观世世界的模型在计

42、算机中自然地表现出来的最好方法。界的模型在计算机中自然地表现出来的最好方法。(2)类类:将将一一种种数数据据结结构构和和操操作作该该数数据据结结构构的的方方法法捆捆在在一一起起,封封装装在在一一个个程程序序实实体体内内而而形形成成。实实现现了了数数据据封封装和信息隐藏装和信息隐藏。(3)对象对象:抽象数据类型的实现。:抽象数据类型的实现。(4)消消息息传传递递机机制制是是对对象象之之间间相相互互通通信信和和作作用用的的唯唯一一方式方式。(5)对对象象、消消息息传传递递机机制制和和以以继继承承为为基基础础的的类类层层次次结结构构是面向对象程序设计的三个要点。是面向对象程序设计的三个要点。Evaluation only.Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号