面向对象编程技术课件.ppt
《面向对象编程技术课件.ppt》由会员分享,可在线阅读,更多相关《面向对象编程技术课件.ppt(112页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章内容1序2面向对象思想概述3学习忠告学习高级语言的体会如何快速入手、掌握一门高级编程语言学习语言有捷径吗?探讨学习语言的探讨学习语言的一般过程与方法一般过程与方法?个人学习的成功之处快速切入一门语言一、序一、序课程学习目的课程学习目的1.开拓视野2.激发学习兴趣3.步入新境地?C程序员程序员C+程序员程序员关键是思关键是思想观念的想观念的转变转变一、序返返 回回二、面向对象编程语言概述二、面向对象编程语言概述1.对象概述对象概述2.面向对象与面向过程面向对象与面向过程3.结构化与非结构化结构化与非结构化4.事件驱动的执行机制事件驱动的执行机制5.软件复用软件复用寻找面向对象寻找面向对象编程
2、语言与面编程语言与面向过程语言异向过程语言异同点同点返返 回回面向对象的现实渊源面向对象的现实渊源现实中的简化模现实中的简化模型型冯冯.诺依曼诺依曼计算机计算机遗传算遗传算法法神经网络神经网络谁来开这加飞谁来开这加飞机?机?1 对象概述对象概述对象及类类定义了对象特征以及对象外观和行为的模模板板。它刻划了一组具有共同特征共同特征的对象。对象是类的实例实例,现实世界的任意客观实体皆可视为对象。属性属性是对象的特征特征。每一类对象都有若干属性。方法方法是指控制对象动作行为行为的方式。每个对象的动作及行为都是由一些特定的“方法”控制的。返返 回回2 面向对象与面向过程面向对象与面向过程面向过程:面向
3、过程:1.重点放在如何实现细节过程方面,将数据与函数分开。2.形式:主模块+若干个子模块(main()+子函数)。3.特点:自顶向下,逐步求精功能分解。4.缺点:效率低,是手工作坊式的编程返返 回回面向对象:面向对象:1.观点:自然界是由实体(对象)所组成。2.程序设计方法:使用面向对象的观点来描述模仿并处理现实问题。3.要求:高度概括、分类和抽象。4.面向对象目的:使用户既不需要懂得太多的计算机、也不需要懂太多的业务。是设计理念的转变是设计理念的转变面向对象的设计思想面向对象的设计思想抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。数据抽象:描述某类对象的属性或状
4、态(对象相互区别的物理量)。代码抽象:描述某类对象的共有的行为特征或具有的功能。抽象的实现:通过类的定义。之抽象之抽象面向对象的设计思想面向对象的设计思想层层分类,使概念逐渐细化,即具体化。例如,生物分为动物和植物,动物又分为脊椎动物和无脊椎动物,脊椎动物包括哺乳动物,哺乳动物又分为猫、狗,等等之分类之分类面向对象的设计思想面向对象的设计思想将抽象出的数据成员、代码成员相结合,将它们视为一个整体。1.目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。2.实现封装:类定义中的 之封装之封装面向对象的设计思想面向对象的设计思想子类与父
5、类1.子类继承父类所有的属性、方法,并可定义自己的特有属性与方法2.提高软件开发效率,为软件复用提供强有力的支持之继承之继承 3 结构化程序设计结构化程序设计 结构化程序设计的概念是荷兰学者Dijkstra首先提出,用三种基本的程序控制结构来编制程序,从而使程序具有好的结构 三种基本结构三种基本结构:1.顺序结构顺序结构2.选择结构选择结构3.循环结构循环结构消除消除GOTO语句语句返返 回回4 事件驱动事件驱动Windows下的应用程序的用户界面都是由窗体、菜单和控件等对象构成的,各个对象的动作以及对象之间的关联,完全取决于操作者所做的操作。(程序的运行并没有固定的顺序),这种工作模式叫事件
6、或消息驱动方式。事件就是使某个对象进入活动状态(激活)的一种操作或动作。返返 回回5.软件复用软件复用传统程序设计方法在软件复用上的困难面向对象程序设计在类的基础上构造同类的对象(如实例化,继承),为软件在OOA及OOD上提供有力的支持返返 回回软件复用的范畴软件复用的范畴1.代码的复用代码的复用2.设计的复用设计的复用3.分析的复用分析的复用4.测试信息的复用测试信息的复用三、学习忠告1.把C+当成一门新的语言学习(和C没啥关系!真的。);2.不要被VC、BCB、BC、MC、TC等词汇所迷惑他们都是集成开发环境,而我们要学的是一门语言;3.不要放过任何一个看上去很简单的小编程问题他们往往并不
7、那么简单,或者可以引伸出很多知识点;三、学习忠告4.会用Visual C+,并不说明你会C+;5.学class并不难,template、STL、generic programming也不过如此难的是长期坚持实践和不遗余力的博览群书;6.看Visual C+的书,是学不了C+语言的;7.浮躁的人容易说:XX语言不行了,应该学YY;是你自己不行了吧!?8.浮躁的人容易问:我到底该学什么;别问,学就对了;三、学习忠告9.浮躁的人容易问:XX有钱途吗;建议你去抢银行;10.浮躁的人容易说:我要中文版!我英文不行!不行?学呀!11.浮躁的人容易问:XX和YY哪个好;告诉你吧,都好只要你学就行;12.浮躁
8、的人分两种:a)只观望而不学的人;b)只学而不坚持的人;13.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;三、学习忠告14.学习编程最好的方法之一就是阅读源代码;15.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;16.别指望看第一遍书就能记住和掌握什么请看第二遍、第三遍;17.C+绝不是所谓的C的“扩充”如果C+一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;三、学习忠告18.学习编程的秘诀是:编程,编程,再编程;19.读完了Inside The C+Object Model以后再来认定自己是不是已经学会了C+;20.不要漏掉书中任何一个练习题请全部做完并记录下解题思路;
9、21.既然决定了学C+,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;三、学习忠告22.既然决定了学C+,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;23.就让C+语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C+语言本身为主;24.决不要因为程序“很小”就不遵循某些你不熟练的规则好习惯是培养出来的,而不是一次记住的;25.每学到一个C+难点的时候,尝试着对别人讲解这个知识点并让他理解你能讲清楚才说明你真的理解了;三、学习忠告26.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Versi
10、on 100.XX;27.保存好你写过的所有的程序那是你最好的积累之一;28.请不要做浮躁的人;29.读完了Inside The C+Object Model以后再来认定自己是不是已经学会了C+;30.请热爱C+!返返 回回第三章第三章 函数函数函数的定义与使用内联函数带默认参数的函数函数重载函数模板使用C+系统函数本章的主本章的主要内容。要内容。第一节第一节 函数的定义与使用函数的定义与使用1.函数的分类函数的分类一、一、从从函数定义函数定义的角度看,分为库函数和用户定义函数两种。的角度看,分为库函数和用户定义函数两种。(1)库函数 由系统提供,调用前包含有该函数原型的头文件。在前面各章中用
11、到printf、scanf 等函数均属此类。(2)用户定义函数 由用户按需要写的函数。不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明。第一节第一节 函数的定义与使用函数的定义与使用二、从二、从功能功能的角度分类。的角度分类。(1)有返回值函数 执行后将向调用者返回值。须在函函数数定定义义和和函函数数说说明明中中明明确确返返回回值值的类型。的类型。(2)无返回值函数无返回值函数 执行后不向调用者返回值。指定它的返回为“空类型”“void”。第一节第一节 函数的定义与使用函数的定义与使用三三、从从主主调调函函数数和和被被调调函函数数之之间间数数据据传传送送的的角角度
12、度看看又又可可分分为为无无参函数和有参函数两种。参函数和有参函数两种。(1)无参函数 函数定义和说明及函数调用时均不带参数。主调函数和被调函数之间不进行参数传送。(2)有参函数 在函数定义及函数说明时都有参数,称为形式参数(形参)。在函数调用时须给出实际参数(实参),主调函数把实参传给形参。第一节第一节 函数的定义与使用函数的定义与使用2.函数的定义函数的定义 类型说明符 函数名()声明部分 /老格式 语句 例:int max(int x,int y)return(xy?x:y);void prt(char*strx)couty?x:y);.Main()Coutmax(3.5,7.9)endl
13、;标准标准C中将返回值转换位整形中将返回值转换位整形返回值由返回值由return语句实现语句实现结果是结果是?2、嵌套调用:、嵌套调用:被调函数在执行的过程中又调用其它函数main()fa();.fb();fa().fb();.fb();.3、递归调用:、递归调用:函数直接或间接的调用自身如求 n!、汉诺塔 理解递归调用的实理解递归调用的实现过程现过程一个问题的递归可以分为“回退”和“递推”两个阶段。构成递归的条件1.递归结束条件及结束时的值;2.能用递归形式表示,并且递归向终止条件发展。4、传值与引用、传值与引用引用:引用:是某一变量(对象)的一个别名,对引用的操作与是某一变量(对象)的一个
14、别名,对引用的操作与对变量直接操作完全一样。对变量直接操作完全一样。声明方法:声明方法:类型标识符类型标识符&引用名引用名=目标变量名目标变量名 例1:int a;int&ra=a;/定义引用ra,它是变量a的引用,即别名 关于引用:关于引用:1.&在此不是求地址运算,而是起标识作用2.类型标识符是指目标变量的类型3.声明引用时,必须同时对其进行初始化 关于引用:关于引用:4.引用声明后,不能再把该引用名作为其他变量名的别名5.对引用求地址,就是对目标变量求地址6.建立数组的引用:int a10,b23;int(&ar)10=a;int(&br)23=b;注意!注意!不同与指针不同与指针4、传
15、值与引用、传值与引用重点重点:传值、引用、指针的区别引用的含义引用的含义int add(int x,int y)x=x+y;return x;int add(int*x,int y)*x=*x+y;return*x;int add(int&x,int y)x=x+y;return x;int a,b;Add(a,b);int a,b;int*p;p=&a;Add(p,b);int a,b;Add(a,b);调调用用返返 回回第二节第二节 内联函数内联函数目的:提高程序运行效率缺点:程序长度增大可以看成是宏内联函数格式 inline 函数定义说明:是否真正是内联函数由编译器决定。函数规模过大,编
16、译器一般不作为内联函数处理 包含循环一般不当作内联函数例:例:inline int add(int x,int y)return x+y;返返 回回第三节第三节 带默认值参数的函数带默认值参数的函数定义定义:在函数定义时可以预先给出参数的默认值int sum_calc(int n,int i=1)int sum=0;int j;for(j=i;j=n;j+)sum+=j;return sum;注意:注意:1.默认的形参按自右到左的顺序定义 P802.在调用可以使用部分默认形参值例例:int add(int a=0,int b=2,int c=3,int d=4,int e=5)return(a
17、+b+c+d+e);void main()coutadd(1)endl;coutadd(1,9)endl;coutadd(1,9,8)endl;coutadd(1,9,3,7)endl;coutadd()0?x:-x);float abs(float x)return(x0?x:-x);Double 函数模板定义template(typename 自定义表示符)函数定义 使用自定义表示符templatetypeT abs(typeT x)Return(X0?x:-x);或者用class T!模板的执行过程模板的执行过程程序实例:程序实例:#include iostream.htemplate/
18、或者或者template typeT abs(typeT X)return(X0?X:-X);void main()int x=-9;coutabs(x)endl;返返 回回第五节第五节 C+系统函数系统函数类似类似C的库函数的库函数查阅查阅MSDN返返 回回第四章第四章 类与对象类与对象1类和对象类和对象2构造函数与析构函数构造函数与析构函数3面向对象的基本特点面向对象的基本特点4类的组合类的组合5前向引用说明前向引用说明6类模板类模板/以后介绍以后介绍7面向对象标记面向对象标记8要点回顾要点回顾认识事物的认识事物的规律:由简规律:由简单到复杂单到复杂!顺顺序体现第三版序体现第三版本改进了本
19、改进了一、一、类与对象类与对象1.类概述类概述1.类是具有相同属性和行为的一组对象的抽象集合,为该类的全部对象提供了统一的抽象描述,包括属性和行为两个主要部分。2.利用类可以实现数据的封装、隐藏、继承与派生。3.利用类易于编写大型复杂程序,其模块化程度比C中采用函数更高。慢慢体会慢慢体会类是一种用户自定义类型,声明形式:class 类名 public:公有成员(外部接口)private:私有成员 protected:保护型成员2.类的定义:类的定义:时钟类的成员时钟类的成员(数据成员与函数成员声明)(数据成员与函数成员声明)class Clockprivate:int Hour,Minute,
20、Second;public:void SetTime(int NewH,int NewM,int NewS);void ShowTime();成员函数成员函数数据成员数据成员void Clock:SetTime(int NewH,int NewM,int NewS)Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime()coutHour:Minute:Second;时钟类的函数成员(定义部分时钟类的函数成员(定义部分)说明:1.关键字public后面声明公有类型成员 它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数2.关键字p
21、rivate后面声明私有类型成员 允许本类中的函数访问,类外部的任何函数都不能访问。紧跟在类名称的后面声明私有成员,关键字private可省略(不提倡)说明说明:3.保护类型与private类似,其差别表现在继承与派生时对派生类的影响不同,在第七章介绍。下页下页 例子例子class circle public:circle:circle(int r)radius=r;int area()return(int)3.14*radius*radius;void circle_prt()coutthe private radius is:radiusendl;private:int radius;vo
22、id main()circle circle1(1),circle2(3);coutthe private radius is:circle1.radius成员名”方式访问 public 属性的成员返返 回回二、构造函数与析构函数二、构造函数与析构函数构造函数名与类名相同构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。在对象创建时由系统自动调用。如果程序中未声明,则系统自动产生出一个缺省形式的构造函数1.构造函数构造函数定义及使用定义及使用构造函数举例构造函数举例class circle public:int radius;int area();circ
23、le(int r);int area(int r);circle:circle(int r)radius=r;int circle:area()return(int)3.14*radius*radius;void main()circle circle1(5);coutthe circles area is;coutcircle1.area()endl;定义部分定义部分1.构造函数与类同名2.不能指定返回值类型不能指定返回值类型3.可以是重载函数4.可以是内联函数5.如无自定义构造函数,C+系统自动产生空的的构造函数6.如构造函数带有参数,则在定义对象时必须带上相同类型的实参7.通过定义类的实
24、例对象,只分配数据成员空间,共享类的共享类的代码空间代码空间注意:注意:析构函数名:类名完成对象被删除前的一些清理工作。在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。如果程序中未声明析构函数,编译器将自动产生一个缺省的析构函数。析构函数不带任何参数2.析构函数析构函数定义及使用定义及使用请关注后请关注后面的内容!面的内容!析构函数举例析构函数举例class Point public:Point(int xx,int yy);Point();/.其它函数原形 private:int X,int Y;包含:delete A delete B 注意注意1.命名方式2.一般类中设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 编程 技术 课件
限制150内