资源预览内容
第1页 / 共80页
第2页 / 共80页
第3页 / 共80页
第4页 / 共80页
第5页 / 共80页
第6页 / 共80页
第7页 / 共80页
第8页 / 共80页
第9页 / 共80页
第10页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
从C 语言到C+语言,C+的学习用书,任何一本你能接触到的C+编程书籍谭教授的书清华 王燕 面向对象的理论与C+实践航空工业 赵建周 C和C+程序设计教程,C与C+的不同,C+在代码上对C的扩充大不相同C: 面向过程C+:面向对象,面向过程程序设计C语言,选定数据结构、设计算法过程或函数。程序执行被看作各过程调用的序列。面向过程编程: 程序 = 数据结构 + 算法设计思路自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。炒菜吃 种菜、洗菜、切菜、炒菜,面向过程的结构化程序设计方法,缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改。每一种相对于老问题的新方法都要带来额外的开销。图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。,面向对象程序设计C+语言,将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体对象。对同类型对象抽象出其共性,形成类。主要特征是各对象之间的消息传递和各类之间的继承。类通过一个简单的外部接口,与外界发生关系。对象与对象之间通过消息进行通信。,面向对象程序设计,一个类的集合和各类之间以继承关系联系起来的结构,再加上一个主程序,在主程序中定义各对象并规定它们之间传递消息的规律。面向对象编程: 对象 = 数据结构 + 算法 (封装); 程序 = 对象 + 对象 + 对象 + 炒菜吃: 买净菜、按照烹调说明书炒菜,面向对象程序设计,优点:程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。,C语言中的关键字,Auto 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+语言中的关键字,Asm auto break case 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 virtual* void volatile while,C+ 对C的保留,C+具有对传统C语言的向后兼容性,很多已有的C程序可以稍加改造就可以重用。虽然C+具备面向对象的处理能力,但它还是保留了很多面向过程的东西。用C+完全可以不用面向对象的思想来进行程序设计,当然人们不会这样去做除了那些只是把C+看成是C扩充的初学者。,C+对C在代码上的扩充,cout 代替 printf, scanfPrintf, scanf 都必须配合%d、%f等格式控制符使用Cout后面直接跟上操作数即可,不用格式控制符;new, delete 代替malloc, freeNew自动计算要分配的类型大小,省事,避免偶然错误;它自动返回正确的指针类型,不必进行类型转换;可以用new将分配的对象初始化;,一个简单的C+程序例子,#include #include void main()string user_name;cout user_name;cout n Hello, user_name . and goodbye! n;,C+对C在代码上的扩充,引用 void swap(int &a, int &b)作用:传递数据、不复制副本函数重载:一物多用int max(int a, int b, int c)long max(long a, long b, long c)float max(float a, float b, float c),几个C+的概念,面对对象技术:软件系统对现实世界的直接模拟,尽量实现将现实世界中的事物直接影射到软件系统的解空间。,现实空间问题,面向对象解空间,物质:一辆白色的自行车意识:自行车,具体事物:一个对象-自行车的实例抽象概念:自行车类,几个C+的概念,对象:在系统中用来描述客观事物的,其自身所具有的状态特征及可以对这些状态施加的操作结合在一起所构成的独立实体,它是用来构成系统的基本单位。对象由一组属性和一组行为构成。属性:用来描述对象静态特征的数据项。行为:用来描述对象动态特征的操作序列。,几个C+的概念-对象,对象名:王东对象的状态:性别:男身高:180 cm体重:68 kg,对象的功能(可做的操作):回答身高回答体重回答性别修理电器教计算机课,均属于自身所承受的操作,均属于施加于其他对象的操作,行为:用来描述对象动态特征的操作序列,属性:用来描述对象静态特征的数据项。,一个人,王东,男,身高180 cm,体重68 kg, 会修电器、能教计算机课。,几个C+的概念类,分类人类通常的思维方法。生活中,我们总是会把各种物体进行分类。分类所依据的原则抽象忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。例如,石头、树木、汽车、房屋等都是人们在长期的生产和生活实践中抽象出的概念,它们分别代表了各种不同类的物体。,几个C+的概念,类:具有相同属性和服务的一组对象的集合,是对一组客观对象的抽象,它将该组对象所具有的共同特征(包括属性特征和行为特征)集中起来,以说明该组对象的能力和性质。如,“表”,属性特征:时、分、秒;行为特征:设定时间,显示时间。类是多个实例的综合抽象,而实例又是类的个体实物。利用类可以实现数据的封装、隐藏、继承与派生。,类与对象类的声明,类是一种用户自定义类型,声明形式:class 类名称 public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员Class 声明类的名称,用public、private和protected 关键字来说明类的成员的访问控制属性,最后给出成员函数的实现。,类与对象类,公有类型成员:在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。私有类型成员:在关键字private后面声明,只允许本类中的函数访问,而类外部的任何访问都是非法的。保护类型成员:与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 NewM, int NewS) Hour=NewH; Minute=NewM; Second=NewS;void Clock:ShowTime() coutHour:Minute:”操作符指针 - 类成员函数,类的声明,成员数据:与一般的变量声明相同,但需要将它放在类的声明体中。成员函数:称为“方法”,一个方法对应一个操作。可以在类中说明原型,在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形成内联成员函数。一般而言,数据成员用private,成员函数用public只有被声明为public的方法(成员函数)才能被外界所激活简单的成员函数的实现直接嵌入类的声明中(inline),复杂的则可写在外面。,类与对象对象,类的对象是该类的某一特定实体,即类类型的变量。声明形式: 类名 对象名;例: Clock myClock;,类中成员的访问方式,类中成员互访直接使用成员名类外访问:外界通过发“消息”来激活有关方法,所谓消息,其实就是一个命令,由程序语句来实现使用“对象名.成员名”方式访问 public 属性的成员,注:类外部不能访问私有性成员,只有本类中的函数可以访问 。如: myClock. ShowTime( )就是向对象myClock发出一个消息,通知它执行display方法,一个例子,int main() Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime();,#includeclass Clock ./类的声明略/.类的实现略,构造函数,构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。(在声明对象时进行的数据成员设置,称为对象的初始化。)构造函数也是成员函数,被声明为公有型,与类名同名,无返回值。构造函数在对象创建时由系统自动调用。构造函数也可以被重载,在对象创建时由系统自动调用。如果程序中未声明,则系统自动产生出一个默认形式的构造函数,该函数没有参数,不进行任何操作,构造函数举例,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 NewS)Hour= NewH;Minute= NewM;Second= NewS;建立对象时构造函数的作用:int main() Clock c(0,0,0); /隐含调用构造函数,将初始值作为实参。 c.ShowTime();,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号