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

上传人:本田雅阁 文档编号:2707504 上传时间:2019-05-06 格式:PPT 页数:35 大小:508.01KB
返回 下载 相关 举报
章面向对象程序设计概论.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-Oriented Programming)的基本思想和有关概念 1.1.1 面向过程程序设计与面向对象程序设计 1.1.2 面向对象程序设计的有关概念 1.2 C+对OOP方法的支持 1.3 C+对C语言的改进 1.4 C+程序的编辑、编译和运行 1.5 C+程序结构的特点 1.6 Visual C+程序运行步骤 小结,1.1.1 面向过程与面向对象程序设计,例1.1:输入任意短语或句子,计算短语包含多少个字(word)和字符(character)。注意:输入短语时,字和字之间只能空一格。,#include /面向过程程序 void

2、main() char 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 char is %dn“,chcount); ,*Please input any phrase. I am a teacher. *:The numbe

3、r of word is 4 *:The number of char is 15,1.1.1 面向过程与面向对象程序设计(续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: /私有成员

4、 int wdcount,chcount;/数据成员 ; count:count() wdcount=1; chcount=0; ,1.1.1 面向过程与面向对象程序设计(续3),void count:process() /成员函数的实现 char ch; cout“*:Please input any phrase“endl; while(ch=getchar()!=n) chcount+; if(ch= ) wdcount+; coutendl; void count:display() cout“n*:number of word is “wdcountendl; printf(“*:n

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

6、,O2,O3,O4,O5,Changing?,P6,1.1.1 面向过程与面向对象程序设计(续6),面向过程程序设计,面向对象程序设计,P1,P2,P3,P5,O1,O2,O3,O4,O5,Changing?,P6,O4,1.1.1 面向过程与面向对象程序设计(续7),消息传递机制,面向过程程序设计,面向对象程序设计,1.1.1 面向过程与面向对象程序设计(续8),面向过程的方法: 结构化程序设计思想为使用面向过程的方法解决复杂问题提供了有力的手段. 结构化程序设计思路:自顶向下划分模块,直到最底层的每个模块都是完成单一独立的功能为止;将这些函数模块装配起来即实现编程的任务. 数据和处理数据的

7、方法是分开完成的.,1.1.1 面向过程与面向对象程序设计(续9),面向对象的方法: (1)将数据及对数据的操作方法放在一起,作为对象; (2)对同类型对象抽象出其共性,形成类; (3)类中数据用本类的方法进行处理; (4)类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信.,1.1.2 面向对象程序设计的有关概念,一、对象与抽象 二、类 三、封装 四、继承 五、多态,一、对象与抽象,1、对象 对象是现实世界中实际存在的一个事物,如:一本书、一台电脑 对象是面向对象程序设计的核心概念,从现实事物中抽象出来,对象具有: (1) 属性: 状态和外貌特征 用数据表示 (2) 方法

8、: 行为 用程序代码表示 对象 = (算法 + 数据结构) 程序 = (对象1 + 对象2 + 对象3 ),一、对象与抽象(续1),2、抽象 抽象是对现实世界中的实体进行归类、简化的描述,即模型化;是通过从特定的实例中抽取共同的性质以形成一般化的概念的过程; 抽象代表着一个对象的本质特征,这个特征将该对象与所有其他种类的对象区别开来; 抽象具有层次;,飞机,交通工具,二、类,类是面向对象程序设计封装的基本单元,封装了逻辑上相关的函数与数据; 类是创建对象的样板,是所有对象的共同的行为和不同的状态的集合体; 类包含了对所创建对象的状态描述和方法的定义。类的完整描述包含了外部接口和内部算法以及数据

9、结构的形式; 类是对问题的抽象描述,是对象的抽象。 类由struct类型引申而来,并将数据和处理数据的函数捆绑在一起。,例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.Se

10、t(4.0,6.0); /调用成员函数来实现消息发送 b.Set(4.0,6.0); /同一消息可发向多个对象,三、封装,数据封装:将数据和处理数据的方法包装成一个整体,并将具体实现细节的数据信息和操作方法在结构上隐藏起来; 信息隐藏:将一个模块的细节部分对用户隐藏起来,用户只能通过一个受保护的接口来访问某个模块,而不能直接访问一个模块内部的细节; 对象是一个状态和操作(或方法)的封装体;,我的电路被封装在机壳内了!,使用电话请按键!,公有成员,人,工人,学生,教师,农民,四、继承,继承将客观世界中一般和特殊的关系模型化为层次结构,提供了创建新类的一种方法,它的本质特征是行为共享;,对象实例:

11、 研究生 王 平,四、继承(续1),继承可增强代码的可重用性,代码的重用是利用继承基类的属性和方法来实现的. 继承某一基类的派生类可自动继承基类的全部属性和方法. 增加派生类时,即修改和扩充程序时也不必修改原有程序代码,只需增加一些新的程序代码.,四、继承(续2),发出同样的消息,被不同类型的对象接收,导致完全不同的行为。 例:调用函数求两个整型量或两个双精度型量的最大值。 int max(int ,int); double max(double,double);,五、多态,1.2 C+对面向对象程序设计方法的支持,C+支持数据封装(数据抽象) C+中,类是支持数据封装的工具,对象则是数据封装

12、的实现; C+中包含有私有、公有和保护成员 C+中通过发送消息来处理对象 每个可能的消息对应一个相应的方法,方法通过成员函数来定义; C+中允许友元破坏封装性 C+中允许函数名和运算符重载 C+支持继承性 C+支持动态联编,1.3 C+对C语言的改进,增加了新的运算符::,new, delete等; (malloc, free) 改进了类型系统,增加了安全性; 引进了引用概念; 允许函数重载,允许设置缺省参数,提高了编程的灵活性; 引进了内联函数,提高了程序的效率; 可以根据需要随时对变量进行说明,1.4 C+程序的编辑、编译和运行,1.5 C+程序结构的特点,一、标识符 组成规则:以字母或下

13、划线开始,其后跟零个或多个字母、数字或下划线; 标识符的长度任意 区分字母的大小写; 不能使用系统的保留字; C+系统关键字 二、预处理命令 宏定义 文件包含 条件编译,关键字(保留字),三、输入/输出流操作语句,流操作:指数据从源点搬运到终点的流动操作。 1、输出运算符(插入符inserting、putting) 数据的流动 终点 源点 cout(CRT显示器)xy; cout“n x =“x“t y= “yendl;,2、输入运算符,数据的流动 源点 终点 cin(键盘) 程序中的变量名或对象名; 多个输入操作可组合成一条语句; 输入运算自动识别数据类型,不需要以%开头的格式说明符。 例:

14、 cinxy;,例1-3 流操作示范程序,#include using namespace std; void main() double x,y; coutx; couty; double z=x+y; cout”x+y=”zendl; ,I/O流库,提供所 有的输入输出操作,cout:流类对象 :提取符 endl:换行;,结果: 请输入x:43 请输入y:46 x+y=89,四、函数、语句及注释,C+的源程序由若干个函数组成,函数间相互独立; C+的源程序有且只能有一个main(); 调用用户自定义函数必须先定义好,调用系统标准函数必须加相应头文件; 复合语句同C语言一样,括起来,称为块。

15、 注释:两种方法 /*/ 可放在程序区域的任何位置,可占多行 / 单行注释,1.6 Visual C+程序运行步骤,一、打开Visual C+开发环境主窗口 二、创建一个空的项目 菜单命令:File / New 选项卡:Projects / Win32 Console Application Location:指定路径 Project Name:指定项目名称 三、建立源程序文件 菜单命令:Project / Add to Project / New 选中C+ Source File,指定文件名后单击OK 四、存盘运行 File / Save Build, Execute programm,*面

16、向过程解法: #include struct animal int weight; int feet; ; int main() animal dog1,dog2,chicken; dog1.weight=15; dog2.weight=37; chicken.weight=3; dog1.feet=4; dog2.feet=4; chicken.feet=2; cout“The weight of dog1 is “dog1.weightendl; cout“The weight of dog2 is “dog2.weight“n“; cout“ Wt of chicken is“chick

17、en.weightendl; return 0; ,P54 L2-13 3只动物有重量和身长两个属性,对其赋值,并输出它们的重量,*面向对象解法: #include class animal 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

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

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1