面向对象程序设计概论_第1页
面向对象程序设计概论_第2页
面向对象程序设计概论_第3页
面向对象程序设计概论_第4页
面向对象程序设计概论_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 面向对象程序设计概论 1.1OOP(Object-Oriented 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函数函数2函数函数3 函数函数3-1函数函数3-2 数据数据1数据数据2数据数据3 图图1.1 面向过程中算法与数据结构的关系面向过程中算法与数据结构的关系 数据结构数据结构1 数据结构数据结构3 数据结构数据结构2 数据结构数据结构4 数据结构数据结构 算法算法1 算法算法2 算法算法2 同一种操作的不同算法实同一种操作的不同算法实 现是多余的现是多余的 只能与一个对应只能与一个对应 图图1.2 算法与数据结构应为算法与数据结构应为1:1

3、关系关系 1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计 例例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); w

4、hile(ch=getchar()!=n) chcount+; if(ch= ) wdcount+; printf(nprintf(n* *:The number of word is %dn,wdcount);:The number of word is %dn,wdcount); printf(n printf(n* *:The number of char is %dn,chcount);:The number of char is %dn,chcount); 1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续1) void main() Count a;/定义对象定

5、义对象 cess();/调用公有成员函数调用公有成员函数 a.display(); 运 行 结 果 *Please input any phrase. I am a teacher. *:The number of word is 4 *:The number of char is 15 面向对象程序设计方法面向对象程序设计方法 1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续2) #include class Count /定义类定义类 public: /公有成员公有成员 Count(); /构造函数构造函数 void process(); /成员函数成员函数

6、 void display(); private: /私有成员私有成员 int wdcount,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:disp

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

8、,比较自然地模拟 了人类认识客观世界了人类认识客观世界 的方式;的方式; 以相对稳定的以相对稳定的“对象对象” 和和“数据结构数据结构”为中为中 心来构造系统心来构造系统 可重用性较好可重用性较好 面向过程程序设计面向对象程序设计 1.1.1 面向过程与面向对象程序设计面向过程与面向对象程序设计(续续5) 消息传递消息传递 机制机制 面向过程 程序设计 面向对象 程序设计 参数参数 f1()() 返回值返回值 过程过程1 参数参数 f2()() 返回值返回值 过程过程2 参数参数 f3()() 返回值返回值 过程过程3 数据数据1 数据数据2 数据数据3 数据数据4 数据数据5 消息消息1 M

9、F2 对象对象1 MF4 MF3 MF2 MF1 对象对象2 MF4 MF3 MF1 消息消息2 1.1.2 面向对象程序设计的有关概念面向对象程序设计的有关概念 一、对象与抽象一、对象与抽象 二、类二、类 三、封装三、封装 四、继承四、继承 五、多态五、多态 一、对象与抽象一、对象与抽象 1、对象、对象 对象是现实世界中实际存在的一个事物,如:一对象是现实世界中实际存在的一个事物,如:一 本书、一台电脑本书、一台电脑 对象是面向对象程序设计的核心概念,从现实事对象是面向对象程序设计的核心概念,从现实事 物中抽象出来,对象具有:物中抽象出来,对象具有: (1) 属性属性: 状态和外貌特征状态和

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

11、对象区别开来;与所有其他种类的对象区别开来; 抽象具有层次;抽象具有层次; 汽车汽车 轮船轮船 飞机飞机 交通工具交通工具 二、类 1、什么是类、什么是类 类是面向对象程序设计封装的基本单元,是创建对类是面向对象程序设计封装的基本单元,是创建对 象的样板,它包含着对所创建对象的状态描述和方法的象的样板,它包含着对所创建对象的状态描述和方法的 定义。类的完整描述包含了外部接口和内部算法以及数定义。类的完整描述包含了外部接口和内部算法以及数 据结构的形式;据结构的形式; 类类由由struct类型类型引申而来,并将数据和处理数据的引申而来,并将数据和处理数据的 函数捆绑在一起。函数捆绑在一起。 2、

12、类是对象的抽象及描述、类是对象的抽象及描述 类中包含生成对象的具体方法,由一个类所创建的类中包含生成对象的具体方法,由一个类所创建的 对象称为该类的实例,一个类的所有对象具有相同的数对象称为该类的实例,一个类的所有对象具有相同的数 据类型;据类型; 3、类是抽象数据类型的实现、类是抽象数据类型的实现 类是所有对象的共同的行为和不同的状态的集合体;类是所有对象的共同的行为和不同的状态的集合体; 例例1-2 结构体引申为类结构体引申为类 struct Complex /结构体结构体 double real,imag; ; class Complex /类类 private: double real

13、, imag; /数据成员数据成员 public: void Set(double r,double i) /成员函数成员函数 real=r; imag=i; ; void main() Complex a,b; /a、b是是Complex类的实例变量类的实例变量 a.Set(4.0,6.0); /调用成员函数来实现消息发送调用成员函数来实现消息发送 b.Set(4.0,6.0); /同一消息可发向多个对象同一消息可发向多个对象 三、封装三、封装 数据封装:数据封装:将数据和处理数据的方法包装成一个整体,将数据和处理数据的方法包装成一个整体, 并并将具体实现细节的数据信息和操作方法在结构上隐藏

14、将具体实现细节的数据信息和操作方法在结构上隐藏 起来;起来; 信息隐藏:将一个模块的细节部分对用户隐藏起来,信息隐藏:将一个模块的细节部分对用户隐藏起来, 用户只能通过一个受保护的接口来访问某个模块,而不用户只能通过一个受保护的接口来访问某个模块,而不 能直接访问一个模块内部的细节;能直接访问一个模块内部的细节; 一个对象具有状态、行为和标识。一个对象具有状态、行为和标识。 对象是一个状态和操作(或方法)的封装体;对象是一个状态和操作(或方法)的封装体; 我的电路被封装在机我的电路被封装在机 壳内了!壳内了! 使用电话请按键!使用电话请按键! 公有成员 人人 小学生小学生 中学生中学生 大学生

15、大学生研究生研究生 工人工人学生学生教师教师农民农民 四、继承四、继承 继承将客观世界中一般和特殊的关系模型继承将客观世界中一般和特殊的关系模型 化为层次结构,提供了创建新类的一种方法,化为层次结构,提供了创建新类的一种方法, 它的本质特征是行为共享;它的本质特征是行为共享; 助教助教 讲师讲师 教授教授研究生研究生 对象实例:对象实例: 研究生研究生 王王 平平 人人 身份证号码:字符串(身份证号码:字符串(18位)位) 姓姓 名:字符串(名:字符串(20位)位) 学生学生 学校名称:字符串(学校名称:字符串(30位)位) 学学 号:字符串(号:字符串(12位)位) 研究生研究生 专专 业:

16、字符串(业:字符串(30位)位) 入学年月日:结构类型入学年月日:结构类型Date 作为作为“人人” 身份证码:身份证码:422520 姓姓 名:王名:王 平平 作为作为“学生学生” 学校名称:中南民族大学学校名称:中南民族大学 学学 号:号:090701022 作为作为“研究生研究生” 专专 业:自动控制业:自动控制 入学年月日:入学年月日:1/9/2009 四、继承(续四、继承(续1) 继承可增强代码的可重用性继承可增强代码的可重用性,代码的重用是代码的重用是 利用继承基类的属性和方法来实现的利用继承基类的属性和方法来实现的. 继承某一基类的派生类可自动继承基类的继承某一基类的派生类可自动

17、继承基类的 全部属性和方法全部属性和方法. 增加派生类时增加派生类时,即修改和扩充程序时也不必即修改和扩充程序时也不必 修改原有程序代码修改原有程序代码,只需增加一些新的程序代码只需增加一些新的程序代码. 四、继承(续四、继承(续2) 发出同样的消息,被不同类型的对象接收发出同样的消息,被不同类型的对象接收 ,导致完全不同的行为。,导致完全不同的行为。 例:调用函数求两个整型量或两个双精度型量例:调用函数求两个整型量或两个双精度型量 的最大值。的最大值。 int max(int ,int); double max(double,double); 五、多态五、多态 1.2C+对面向对象程序设计方

18、法的支持对面向对象程序设计方法的支持 C+支持数据封装(数据抽象)支持数据封装(数据抽象) C+中,类是支持数据封装的工具,对象中,类是支持数据封装的工具,对象 则是数据封装的实现;则是数据封装的实现; C+中包含有私有、公有和保护成员中包含有私有、公有和保护成员 C+中通过发送消息来处理对象中通过发送消息来处理对象 每个可能的消息对应一个相应的方法,方每个可能的消息对应一个相应的方法,方 法通过函数来定义;法通过函数来定义; C+中中允许友元破坏封装性允许友元破坏封装性 C+中允许函数名和运算符重载中允许函数名和运算符重载 C+支持继承性支持继承性 C+支持动态联编支持动态联编 1.3C+对

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

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

21、 autoboolbreakcasecatchcharclass constconst_cast continue defaultdeletedodouble dynamic_cast else enumexplicitexternfalsefloat forfriendgotoifinlineintlong mutablenewoperator privateprotected publicregister reinterpret_castreturnshortsignedsizeofstatic static_cast structswitchtemplate thisthrowtrue

22、trytypedef typeidtypename unionunsigned virtual voidvolatile while 三、输入三、输入/输出流操作语句输出流操作语句 流操作:指数据从源点搬运到终点的流动操作。流操作:指数据从源点搬运到终点的流动操作。 1、输出运算符(插入符、输出运算符(插入符inserting、putting) 数据的流动数据的流动 终点终点 源点源点 cout(CRT显示器显示器)程序中的变量名或对象名;程序中的变量名或对象名; 同同printf()一样,可以输出转义符;一样,可以输出转义符; 多个输出操作可组合成一条语句;多个输出操作可组合成一条语句; 输

23、出运算自动识别数据类型,不需要以输出运算自动识别数据类型,不需要以%开头的格式说开头的格式说 明符。明符。 例:例:int x;int y; cout请输入一个实数:请输入一个实数:n; coutxy; coutn x =xt y= y程序中的变量名或对象名;程序中的变量名或对象名; 多个输出操作可组合成一条语句;多个输出操作可组合成一条语句; 输入运算自动识别数据类型,不需要以输入运算自动识别数据类型,不需要以%开头开头 的格式说明符。的格式说明符。 例:例: cinxy; 例例1-3 流操作流操作示范程序示范程序 #include using namespace std; void mai

24、n() double x,y; coutx; couty; double z=x+y; out”x+y=”zendl; I/O流库,提供所流库,提供所 有的输入输出操作有的输入输出操作 cout:流类对象:流类对象 :提取符:提取符 endl:换行;换行; 结果:请输入结果:请输入x:43 请输入请输入y:46 x+y=89 四、函数、语句及注释四、函数、语句及注释 C+的源程序由若干个函数组成,函数间相互的源程序由若干个函数组成,函数间相互 独立;独立; C+的源程序有且只能有一个的源程序有且只能有一个main(); 调用用户定义函数必须定义好,调用系统标调用用户定义函数必须定义好,调用系统

25、标 准函数必须加相应头文件;准函数必须加相应头文件; 复合语句同复合语句同C语言一样,语言一样,括起来,称为块。括起来,称为块。 注释:两种方法注释:两种方法 /*/ 可放在程序区域的任何位置,可占多可放在程序区域的任何位置,可占多 行行 / 单行注释单行注释 1.6 Visual C+程序运行步骤程序运行步骤 一、打开一、打开Visual C+开发环境主窗口开发环境主窗口 二、创建一个空的项目二、创建一个空的项目 菜单命令:菜单命令:File / NewFile / New 选项卡:选项卡:Projects / Win32 Console ApplicationProjects / Win3

26、2 Console Application LocationLocation:指定路径指定路径 Project NameProject Name:指定项目名称指定项目名称 三、建立源程序文件三、建立源程序文件 菜单命令:菜单命令:Project / Add to Project / NewProject / Add to Project / New 选中选中C+ Source File,C+ Source File,指定文件名后单击指定文件名后单击OKOK 四、存盘运行四、存盘运行 File / SaveFile / Save Build, Execute programm Build, Ex

27、ecute programm 小结小结 (1)OOP以对象为核心,以抽象和归类为基础,强调程序分层以对象为核心,以抽象和归类为基础,强调程序分层 分类的概念,克服了软件复杂性,是将客观世界的模型在计算机分类的概念,克服了软件复杂性,是将客观世界的模型在计算机 中自然地表现出来的最好方法。中自然地表现出来的最好方法。 (2)OOP将一种数据结构和操作该数据结构的方法捆在一起,将一种数据结构和操作该数据结构的方法捆在一起, 封装在一个程序实体内,从而实现了数据封装和信息隐藏。通常,封装在一个程序实体内,从而实现了数据封装和信息隐藏。通常, 用数据成员描述某类的属性,用成员函数描述行为。用数据成员描述某类的属性,用成

温馨提示

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

评论

0/150

提交评论