《c与c的区别》PPT课件.ppt
《《c与c的区别》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《c与c的区别》PPT课件.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数 据 结 构 与 算 法 分 析从从C 语言语言到到C+语言语言数 据 结 构 与 算 法 分 析C+的学习用书的学习用书v任何一本你能接触到的C+编程书籍v谭教授的书v清华 王燕 面向对象的理论与C+实践v航空工业 赵建周 C和C+程序设计教程数 据 结 构 与 算 法 分 析C与与C+的不同的不同vC+在代码上对C的扩充v大不相同C:面向过程C+:面向对象 数 据 结 构 与 算 法 分 析面向过程程序设计面向过程程序设计C语言语言v选定数据结构、设计算法过程或函数。程序执行被看作各过程调用的序列。v面向过程编程:程序=数据结构+算法v设计思路自顶向下、逐步求精。采用模块分解与功能抽象,
2、自顶向下、分而治之。v炒菜吃 种菜、洗菜、切菜、炒菜数 据 结 构 与 算 法 分 析面向面向过程过程的的结构化结构化程序设计方法程序设计方法v缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改。每一种相对于老问题的新方法都要带来额外的开销。图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。数 据 结 构 与 算 法 分 析面向对象程序设计面向对象程序设计C+语言语言v将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体对象。v对同类型对象抽象
3、出其共性,形成类。v主要特征是各对象之间的消息传递和各类之间的继承。v类通过一个简单的外部接口,与外界发生关系。v对象与对象之间通过消息进行通信。数 据 结 构 与 算 法 分 析面向对象程序设计面向对象程序设计v一个类的集合和各类之间以继承关系联系起来的结构,再加上一个主程序,在主程序中定义各对象并规定它们之间传递消息的规律。v面向对象编程:对象=数据结构+算法(封装);程序=对象+对象+对象+v炒菜吃:买净菜、按照烹调说明书炒菜数 据 结 构 与 算 法 分 析面向对象程序设计面向对象程序设计v优点:程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过继承与多态性
4、,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。数 据 结 构 与 算 法 分 析C语言中的关键字语言中的关键字vAuto break case char continue default do double else entry enum extern for float goto if int long register return short signed sizeof static struct switch typedef union unsigned while 数 据 结 构 与 算 法 分 析C+语言中的关键字语言中的关键字vAsm auto break cas
5、e catch*cdecl char class*const continue default delete*do double else enum extern far float for friend*goto huge if inline*int interrupu long near new*operator*pascal private*protected*public*register return short signed sizeof static struct switch template*this*throw*try*typedef union unsigned virt
6、ual*void volatile while 数 据 结 构 与 算 法 分 析C+对对C的保留的保留vC+具有对传统C语言的向后兼容性,很多已有的C程序可以稍加改造就可以重用。v虽然C+具备面向对象的处理能力,但它还是保留了很多面向过程的东西。用C+完全可以不用面向对象的思想来进行程序设计,当然人们不会这样去做除了那些只是把C+看成是C扩充的初学者。数 据 结 构 与 算 法 分 析C+对对C在代码上的扩充在代码上的扩充vcout 代替 printf,scanfPrintf,scanf 都必须配合%d、%f等格式控制符使用Cout后面直接跟上操作数即可,不用格式控制符;vnew,delet
7、e 代替malloc,freeNew自动计算要分配的类型大小,省事,避免偶然错误;它自动返回正确的指针类型,不必进行类型转换;可以用new将分配的对象初始化;数 据 结 构 与 算 法 分 析一个简单的C+程序例子#include#include void main()string user_name;cout user_name;cout n Hello,user_name.and goodbye!n;数 据 结 构 与 算 法 分 析C+对对C在代码上的扩充在代码上的扩充v引用 void swap(int&a,int&b)作用:传递数据、不复制副本v函数重载:一物多用vint max(in
8、t a,int b,int c)vlong max(long a,long b,long c)vfloat max(float a,float b,float c)数 据 结 构 与 算 法 分 析几个几个C+的概念的概念v面对对象技术:软件系统对现实世界的直接模拟,尽量实现将现实世界中的事物直接影射到软件系统的解空间。现实空间问题面向对象解空间物质:一辆白色的自行车意识:自行车具体事物:一个对象-自行车的实例抽象概念:自行车类数 据 结 构 与 算 法 分 析几个几个C+的概念的概念v对象:在系统中用来描述客观事物的,其自身所具有的状态特征及可以对这些状态施加的操作结合在一起所构成的独立实体
9、,它是用来构成系统的基本单位。v对象由一组属性和一组行为构成。属性:用来描述对象静态特征的数据项。行为:用来描述对象动态特征的操作序列。数 据 结 构 与 算 法 分 析几个几个C+的概念的概念-对象对象对象名:王东对象的状态:性别:男身高:180 cm体重:68 kg对象的功能(可做的操作):回答身高回答体重回答性别修理电器教计算机课均属于自身所承受的操作均属于施加于其他对象的操作行为:用来描述对象动态特征的操作序列属性:用来描述对象静态特征的数据项。一个人,王东,男,身高180 cm,体重68 kg,会修电器、能教计算机课。数 据 结 构 与 算 法 分 析几个几个C+的概念的概念类类v分
10、类人类通常的思维方法。生活中,我们总是会把各种物体进行分类。v分类所依据的原则抽象忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。例如,石头、树木、汽车、房屋等都是人们在长期的生产和生活实践中抽象出的概念,它们分别代表了各种不同类的物体。数 据 结 构 与 算 法 分 析几个几个C+的概念的概念v类:具有相同属性和服务的一组对象的集合,是对一组客观对象的抽象,它将该组对象所具有的共同特征(包括属性特征和行为特征)集中起来,以说明该组对象的能力和性质。v如,“表”,属性特征:时、分、秒;行为特征:设定时间,显示时间
11、。v类是多个实例的综合抽象,而实例又是类的个体实物。v利用类可以实现数据的封装、隐藏、继承与派生。数 据 结 构 与 算 法 分 析类与对象类与对象类的声明类的声明v 类是一种用户自定义类型,声明形式:class 类名称 public:公有成员(外部接口)private:私有成员 protected:保护型成员Class 声明类的名称,用public、private和protected 关键字来说明类的成员的访问控制属性,最后给出成员函数的实现。数 据 结 构 与 算 法 分 析类与对象类与对象类类v公有类型成员:在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类
12、型数据和函数。v私有类型成员:在关键字private后面声明,只允许本类中的函数访问,而类外部的任何访问都是非法的。v保护类型成员:与private类似,其差别表现在继承与派生时对派生类的影响不同。数 据 结 构 与 算 法 分 析类的一个例子类的一个例子class Clock public:void SetTime(int NewH,int NewM,int NewS);void ShowTime();private:int Hour,Minute,Second;成员数据(属性)成员函数(行为)数 据 结 构 与 算 法 分 析void Clock:SetTime(int NewH,int
13、NewM,int NewS)Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime()coutHour:Minute:”操作符指针-类成员函数数 据 结 构 与 算 法 分 析类的声明类的声明v成员数据:与一般的变量声明相同,但需要将它放在类的声明体中。v成员函数:称为“方法”,一个方法对应一个操作。可以在类中说明原型,在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形成内联成员函数。v一般而言,数据成员用private,成员函数用public只有被声明为public的方法(成员函数)才能被外界所激活v简单的成
14、员函数的实现直接嵌入类的声明中(inline),复杂的则可写在外面。数 据 结 构 与 算 法 分 析类与对象类与对象对象对象v类的对象是该类的某一特定实体,即类类型的变量。v声明形式:类名 对象名;v例:Clock myClock;数 据 结 构 与 算 法 分 析类中成员的访问方式类中成员的访问方式v类中成员互访直接使用成员名v类外访问:外界通过发“消息”来激活有关方法,所谓消息,其实就是一个命令,由程序语句来实现使用“对象名.成员名”方式访问 public 属性的成员,注:类外部不能访问私有性成员,只有本类中的函数可以访问。v如:myClock.ShowTime()就是向对象myCloc
15、k发出一个消息,通知它执行display方法 数 据 结 构 与 算 法 分 析一个例子一个例子int main()Clock myClock;myClock.SetTime(8,30,30);myClock.ShowTime();#includeclass Clock ./类的声明略/.类的实现略数 据 结 构 与 算 法 分 析构造函数构造函数v构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。(在声明对象时进行的数据成员设置,称为对象的初始化。)v构造函数也是成员函数,被声明为公有型,与类名同名,无返回值。v构造函数在对象创建时由系统自动调用。v构造
16、函数也可以被重载,在对象创建时由系统自动调用。v如果程序中未声明,则系统自动产生出一个默认形式的构造函数,该函数没有参数,不进行任何操作数 据 结 构 与 算 法 分 析构造函数举例构造函数举例class Clockpublic:Clock(int NewH,int NewM,int NewS);/构造函数void SetTime(int NewH,int NewM,int NewS);void ShowTime();private:int Hour,Minute,Second;数 据 结 构 与 算 法 分 析构造函数的实现:Clock:Clock(int NewH,int NewM,int
17、 NewS)Hour=NewH;Minute=NewM;Second=NewS;建立对象时构造函数的作用:int main()Clock c(0,0,0);/隐含调用构造函数,将初始值作为实参。c.ShowTime();数 据 结 构 与 算 法 分 析析构函数析构函数v“清理善后”:在撤销对象时,系统自动调用析构函数(destructor),释放此对象所属的空间。v析构函数名:与类名相同,只是在函数名前面加一个“”,以区别于构造函数v只能用一个析构函数,不能重载v若用户未编写析构函数,编译系统会自动生成一个缺省的析构函数,它不进行任何操作数 据 结 构 与 算 法 分 析构造函数和析构函数举
18、例构造函数和析构函数举例#includeclass Point public:Point(int xx,int yy);Point();/.其他函数原型 private:int X,int Y;Point:Point(int xx=0,int yy=0)X=xx;Y=yy;Point:Point()/.其他函数的实现略Point PointA/点A(0,0)Point PointB(4,5)/B(4,5)数 据 结 构 与 算 法 分 析类的应用举例类的应用举例1#includeclass Clock /时钟类的声明 public:/外部接口,公有成员函数 void SetTime(int N
19、ewH=0,int NewM=0,int NewS=0);void ShowTime();private:/私有数据成员 int Hour,Minute,Second;数 据 结 构 与 算 法 分 析/时钟类成员函数的具体实现void Clock:SetTime(int NewH,int New,Mint NewS)Hour=NewH;Minute=NewM;Second=NewS;void Clock:ShowTime()coutHour:Minute:Second;数 据 结 构 与 算 法 分 析/主程序Void main()clock myClook;/定义对象myClockcout
20、“First time set and output:”endl;myClook.SetTime();/设置时间为默认值myClook.ShowTime();/显示时间cout“Second time set and output;”endl;myClook.SetTime(8,30,30);/设置时间为8:30:30myClook.ShowTime();/显示时间数 据 结 构 与 算 法 分 析程序运行结果:First time set and output:0:0:0Second time set and output:8:30:30程序由类Clock的定义、类成员函数的实现和主函数三个
21、独立部分组成,通过类对问题进行了高度的抽象和封闭化的描述,在主程序中声明类的实例对象并完成消息的传递从而解决了问题。数 据 结 构 与 算 法 分 析面向对象的特性面向对象的特性v封装性v继承性v多态性数 据 结 构 与 算 法 分 析封装性封装性v封装:将一个数据和与这个数据有关的操作集合放在一起,形成一个能动的实体-对象,用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象即可。v从用户的角度来看,这些对象的行为就象包含在一个“黑匣子”里,是隐蔽的、看不见的。数 据 结 构 与 算 法 分 析C+的封装思想的封装思想vC+利用类(class)的形式来实现封装的。v具有相同
22、结构和特性的所有对象构成一种“类型”类(class)v类是用来定义对象的一种抽象数据类型v对象(object):数据(属性)操作(行为)v类是对具有相同结构和特性的对象的抽象,而对象是类的具体实例(instance)首都类:北京、巴黎、莫斯科、华盛顿v类相当于是用户自定义的数据类型,其性质和其他数据类型(如整型、实型)相同数 据 结 构 与 算 法 分 析vstructstudent intnumber;char name10;char sex;floatsocre;struct student student1,student2;只包含数据,只包含数据,不包含操作不包含操作数 据 结 构 与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c与c的区别 区别 PPT 课件
限制150内