面向对象程序设计概论

上传人:仙*** 文档编号:210653439 上传时间:2023-05-17 格式:PPT 页数:35 大小:307KB
收藏 版权申诉 举报 下载
面向对象程序设计概论_第1页
第1页 / 共35页
面向对象程序设计概论_第2页
第2页 / 共35页
面向对象程序设计概论_第3页
第3页 / 共35页
资源描述:

《面向对象程序设计概论》由会员分享,可在线阅读,更多相关《面向对象程序设计概论(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+程序运行步骤程序运行步骤小结小结1.1.1 面向过程与面向

2、对象程序设计面向过程与面向对象程序设计例例1.11.1:输入任意短语或句子,计算短语包含多少个字:输入任意短语或句子,计算短语包含多少个字(word)(word)和字和字符符(character)character)。注意:输入短语时,字和字之间只注意:输入短语时,字和字之间只能能空一格。空一格。#include /面向过程程序面向过程程序void main()char ch;int wdcount,chcount;wdcount=1;chcount=0;printf(*:Please input any phrase:n);while(ch=getchar()!=n)chcount+;if(

3、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 char is%dn,chcount);*Please input any phrase.I am a teacher.*:The number of word is 4*:The number of char is 151.1.1 面向过程与面向对象程序设计面

4、向过程与面向对象程序设计(续续1)void main()count A;/定义对象定义对象 A.process();/调用公有成员函数调用公有成员函数 A.display();面向对象程序设计方法面向对象程序设计方法1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续2)#include#include using namespace std;class count /定义类定义类public:/公有成员公有成员 count();/构造函数构造函数 void process();/成员函数成员函数 void display();private:/私有成员私有成员 int wd

5、count,chcount;/数据成员数据成员;count:count()wdcount=1;chcount=0;1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续3)void count:process()/成员函数的实现成员函数的实现 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

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

7、造系统可重用性较好可重用性较好面向过程程序设计面向对象程序设计1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续5)面向过程程序设计程序程序=(算法)(算法)+(数据结构(数据结构)面向对象程序设计程序程序=(算法(算法+数据结构)数据结构)P1P2P3P4P5O1O2O3O4O5P61.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续6)面向过程程序设计面向对象程序设计P1P2P3P5O1O2O3O4O5P6O41.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续7)消息传递消息传递机制机制面向过程程序设计面向对象程序设计参数参数 f1

8、()()返回值返回值过程过程1参数参数 f2()()返回值返回值过程过程2参数参数 f3()()返回值返回值过程过程3数据数据1数据数据2数据数据3数据数据4数据数据5消息消息1MF2对象对象1MF4MF3MF2MF1对象对象2MF4MF3MF1消息消息21.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续8)面向过程的方法面向过程的方法:结构化程序设计思想为使用面向过程的方法结构化程序设计思想为使用面向过程的方法解决复杂问题提供了有力的手段解决复杂问题提供了有力的手段.结构化程序设计思路结构化程序设计思路:自顶向下划分模块自顶向下划分模块,直到直到最底层的每个模块都是完成单

9、一独立的功能为止最底层的每个模块都是完成单一独立的功能为止;将这些函数模块装配起来即实现编程的任务将这些函数模块装配起来即实现编程的任务.数据和处理数据的方法是分开完成的数据和处理数据的方法是分开完成的.1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续9)面向对象的方法面向对象的方法:(1)将数据及对数据的操作方法放在一起将数据及对数据的操作方法放在一起,作作为对象为对象;(2)对同类型对象抽象出其共性,形成类对同类型对象抽象出其共性,形成类;(3)类中数据用本类的方法进行处理类中数据用本类的方法进行处理;(4)类通过一个简单的外部接口与外界发生类通过一个简单的外部接口与

10、外界发生关系,对象与对象之间通过消息进行通信关系,对象与对象之间通过消息进行通信.1.1.2 面向对象程序设计的有关概念面向对象程序设计的有关概念一、对象与抽象一、对象与抽象二、类二、类三、封装三、封装四、继承四、继承五、多态五、多态一、对象与抽象一、对象与抽象1、对象、对象对象是现实世界中实际存在的一个事物,如:一对象是现实世界中实际存在的一个事物,如:一本书、一台电脑本书、一台电脑对象是面向对象程序设计的核心概念,从现实事对象是面向对象程序设计的核心概念,从现实事物中抽象出来,对象具有:物中抽象出来,对象具有:(1)属性属性:状态和外貌特征状态和外貌特征 用数据表示用数据表示(2)方法方法

11、:行为行为 用程序代码表示用程序代码表示 对象对象=(算法算法+数据结构数据结构)程序程序=(对象对象1+对象对象2+对象对象3)一、对象与抽象(续一、对象与抽象(续1)2、抽象、抽象抽象是对现实世界中的实体进行归类、简化的描述,抽象是对现实世界中的实体进行归类、简化的描述,即模型化即模型化;是通过从特定的实例中抽取共同的性质以是通过从特定的实例中抽取共同的性质以形成一般化的概念的过程;形成一般化的概念的过程;抽象代表着一个对象的抽象代表着一个对象的本质特征本质特征,这个特征将该对象,这个特征将该对象与所有其他种类的对象区别开来;与所有其他种类的对象区别开来;抽象具有抽象具有层次层次;汽车汽车

12、轮船轮船飞机飞机交通工具交通工具二、类 类是面向对象程序设计类是面向对象程序设计封装的基本单元封装的基本单元,封装了逻辑,封装了逻辑上相关的函数与数据;上相关的函数与数据;类是创建类是创建对象的样板对象的样板,是所有对象的是所有对象的共同的行为共同的行为和和不不同的状态同的状态的集合体;的集合体;类包含了对所创建对象的类包含了对所创建对象的状态描述和方法状态描述和方法的定义。类的定义。类的完整描述包含了外部接口和内部算法以及数据结构的形的完整描述包含了外部接口和内部算法以及数据结构的形式;式;类是对问题的类是对问题的抽象抽象描述,是描述,是对象的抽象。对象的抽象。类类由由struct类型类型引

13、申而来,并将引申而来,并将数据和处理数据的数据和处理数据的函数函数捆绑在一起。捆绑在一起。例例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.real=100;Complex2 a,b;/a、b是是Complex2类的实例变量类的实例变量 a.Set(4.0,6

14、.0);/调用成员函数来实现消息发送调用成员函数来实现消息发送 b.Set(4.0,6.0);/同一消息可发向多个对象同一消息可发向多个对象三、封装三、封装数据封装:数据封装:将数据和处理数据的方法包装成一个整体,将数据和处理数据的方法包装成一个整体,并并将具体实现细节的数据信息和操作方法在结构上隐藏将具体实现细节的数据信息和操作方法在结构上隐藏起来;起来;信息隐藏:信息隐藏:将一个模块的细节部分对用户隐藏起来,用将一个模块的细节部分对用户隐藏起来,用户只能通过一个户只能通过一个受保护的接口受保护的接口来访问某个模块,而不能来访问某个模块,而不能直接访问一个模块内部的细节;直接访问一个模块内部

15、的细节;对象是一个对象是一个状态状态和和操作(或方法)操作(或方法)的的封装体封装体;我的电路被我的电路被封装封装在机壳内了!在机壳内了!使用电话请按键!使用电话请按键!公有成员人人小学生小学生 中学生中学生 大学生大学生研究生研究生工人工人学生学生教师教师农民农民四、继承四、继承 继承将客观世界中一般和特殊的关系模型继承将客观世界中一般和特殊的关系模型化为层次结构,提供了创建新类的一种方法,化为层次结构,提供了创建新类的一种方法,它的本质特征是行为共享;它的本质特征是行为共享;助教助教 讲师讲师 教授教授研究生研究生对象实例:对象实例:研究生研究生 王王 平平人人身份证号码:字符串(身份证号

16、码:字符串(18位)位)姓姓 名:字符串(名:字符串(20位)位)学生学生学校名称:字符串(学校名称:字符串(30位)位)学学 号:字符串(号:字符串(12位)位)研究生研究生专专 业:字符串(业:字符串(30位)位)入学年月日:结构类型入学年月日:结构类型Date作为作为“人人”身份证码:身份证码:422520姓姓 名:王名:王 平平作为作为“学生学生”学校名称:中南民族大学学校名称:中南民族大学学学 号:号:100701022作为作为“研究生研究生”专专 业:自动控制业:自动控制入学年月日:入学年月日:1/9/2010四、继承(续四、继承(续1)继继承承可可增增强强代代码码的的可可重重用用

17、性性,代代码码的的重重用用是是利用继承基类的属性和方法来实现的利用继承基类的属性和方法来实现的.继继承承某某一一基基类类的的派派生生类类可可自自动动继继承承基基类类的的全部属性和方法全部属性和方法.增增加加派派生生类类时时,即即修修改改和和扩扩充充程程序序时时也也不不必必修改原有程序代码修改原有程序代码,只需增加一些新的程序代码只需增加一些新的程序代码.四、继承(续四、继承(续2)发发出出同同样样的的消消息息,被被不不同同类类型型的的对对象象接接收收,导致完全不同的行为。导致完全不同的行为。例例:调调用用函函数数求求两两个个整整型型量量或或两两个个双双精精度度型型量量的最大值。的最大值。int

18、 max(int,int);double max(double,double);五、多态五、多态1.2C+对面向对象程序设计方法的支持对面向对象程序设计方法的支持C+支持数据封装(数据抽象)支持数据封装(数据抽象)C+中,中,类是支持数据封装的工具,对象则类是支持数据封装的工具,对象则是数据封装的实现;是数据封装的实现;C+中包含有私有、公有和保护成员中包含有私有、公有和保护成员C+中通过发送消息来处理对象中通过发送消息来处理对象 每个可能的消息对应一个相应的方法,方法每个可能的消息对应一个相应的方法,方法通过通过成员成员函数来定义函数来定义;C+中中允许友元破坏封装性允许友元破坏封装性C+中

19、允许函数名和运算符重载中允许函数名和运算符重载C+支持继承性支持继承性C+支持动态联编支持动态联编1.3C+对对C语言的改进语言的改进增加了新的运算符:增加了新的运算符::,new,delete等;等;(malloc,free)改进了类型系统,增加了安全性;改进了类型系统,增加了安全性;引进了引进了引用引用概念;概念;允许函数允许函数重载重载,允许设置缺省参数,提高了,允许设置缺省参数,提高了编程的灵活性;编程的灵活性;引进了内联函数,提高了程序的效率;引进了内联函数,提高了程序的效率;可以根据需要随时对变量进行说明可以根据需要随时对变量进行说明1.4C+程序的编辑、编译和运行程序的编辑、编译

20、和运行源程序源程序.cpp目标文件目标文件.obj可执行文件可执行文件.exe编译器编译器连接器连接器磁盘中的磁盘中的#include文文件件C+库文件库文件.LIB1.5 C+程序结构的特点程序结构的特点一、标识符一、标识符 组成规则:以组成规则:以字母字母或或下划线下划线开始,其后跟零个或开始,其后跟零个或多个多个字母字母、数字数字或或下划线下划线;标识符的标识符的长度任意长度任意区分区分字母的字母的大小写大小写;不能不能使用系统的使用系统的保留字保留字;C+系统关键字系统关键字二、预处理命令二、预处理命令宏定义宏定义文件包含文件包含条件编译条件编译关键字(保留字)关键字(保留字)表表1-

21、1C+的关键字的关键字P22三、输入三、输入/输出流操作语句输出流操作语句流操作:指数据从源点搬运到终点的流动操作。流操作:指数据从源点搬运到终点的流动操作。1、输出运算符(插入符、输出运算符(插入符inserting、putting)数据的流动数据的流动 终点终点 源点源点 cout(CRT显示器显示器)程序中的变量名或对象名;程序中的变量名或对象名;同同printf()一样,可以输出转义符;一样,可以输出转义符;多个输出操作可组合成一条语句;多个输出操作可组合成一条语句;输出运算自动识别数据类型输出运算自动识别数据类型,不需要以,不需要以%开头的格式说开头的格式说明符。明符。例:例:int

22、 x;double y;cout“请输入数据:请输入数据:n;coutxy;coutn x=xt y=y程序中的变量名或对象名;程序中的变量名或对象名;多个输入操作可组合成一条语句;多个输入操作可组合成一条语句;输入运算自动识别数据类型输入运算自动识别数据类型,不需要以,不需要以%开头开头的格式说明符。的格式说明符。例:例:cinxy;例例1-3 流操作流操作示范程序示范程序#include using namespace std;void main()double x,y;coutx;couty;double z=x+y;cout”x+y=”zendl;I/O流库,提供所流库,提供所有的输入

23、输出操作有的输入输出操作cout:流类对象:流类对象:提取符:提取符endl:换行;换行;结果:结果:请输入请输入x:43请输入请输入y:46x+y=89四、函数、语句及注释四、函数、语句及注释C+的源程序由若干个函数组成,函数间相互的源程序由若干个函数组成,函数间相互独立;独立;C+的源程序有且只能有一个的源程序有且只能有一个main();调用用户自定义函数必须先定义好,调用系调用用户自定义函数必须先定义好,调用系统标准函数必须加相应头文件;统标准函数必须加相应头文件;复合语句同复合语句同C语言一样,语言一样,括起来,称为块。括起来,称为块。注释:两种方法注释:两种方法/*/可放在程序区域的

24、任何位置,可占多行可放在程序区域的任何位置,可占多行/单行注释单行注释 1.6 Visual C+程序运行步骤程序运行步骤一、打开一、打开Visual C+开发环境主窗口开发环境主窗口二、创建一个空的项目二、创建一个空的项目 菜单命令:菜单命令:File/NewFile/New 选项卡:选项卡:Projects/Win32 Console ApplicationProjects/Win32 Console Application LocationLocation:指定路径指定路径 Project NameProject Name:指定项目名称指定项目名称三、建立源程序文件三、建立源程序文件 菜

25、单命令:菜单命令:Project/Add to Project/NewProject/Add to Project/New 选中选中C+Source File,C+Source File,指定文件名后单击指定文件名后单击OKOK四、存盘运行四、存盘运行 File/SaveFile/Save Build,Execute programm Build,Execute programm*面向过程解法:面向过程解法:#includestruct animal int weight;int feet;int main()animal dog1,dog2,chicken;dog1.weight=15;do

26、g2.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只动物有重只动物有重量和身长两个属性,量和身长两个属性,对其赋值,并输出对其赋值,并输出它们的重量它们的重量*面向对象解法:面向对象解法:#include class animal

27、public:animal(int W=0,int F=0)weight=W;feet=F;int getWeight();int getfeet();private:int weight;int feet;int animal:getWeight()/成员函数的实现成员函数的实现 return weight;int animal:getfeet()return feet;int main()animal dog1(15,3),dog2(37,4);animal chicken(3,4);coutThe weight of dog1 dog1.getWeight()endl;coutThe w

28、eight of dog2 dog2.getWeight()endl;coutThe weight of chicken ;cout chicken.getWeight()n;return 0;小结小结(1)OOP以以对对象象为为核核心心,以以抽抽象象和和归归类类为为基基础础,强强调调程程序序分分层层分分类类的的概概念念,克克服服了了软软件件复复杂杂性性,是是将将客客观观世世界的模型在计算机中自然地表现出来的最好方法。界的模型在计算机中自然地表现出来的最好方法。(2)类类:将将一一种种数数据据结结构构和和操操作作该该数数据据结结构构的的方方法法捆捆在在一一起起,封封装装在在一一个个程程序序实实体体内内而而形形成成。实实现现了了数数据据封封装和信息隐藏装和信息隐藏。(3)对象对象:抽象数据类型的实现。:抽象数据类型的实现。(4)消消息息传传递递机机制制是是对对象象之之间间相相互互通通信信和和作作用用的的唯唯一一方式方式。(5)对对象象、消消息息传传递递机机制制和和以以继继承承为为基基础础的的类类层层次次结结构构是面向对象程序设计的三个要点。是面向对象程序设计的三个要点。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!