C面向对象程序设计PPT课件_第1页
C面向对象程序设计PPT课件_第2页
C面向对象程序设计PPT课件_第3页
C面向对象程序设计PPT课件_第4页
C面向对象程序设计PPT课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、1 C+面向面向对象对象程序设计程序设计 谭浩强编著谭浩强编著授课教师:姬广永授课教师:姬广永QQ:41588872学习网站:学习网站:http:/ 2第二章第二章 类和对象类和对象 面向对象程序设计面向对象程序设计31.编程语言的几个发展阶段面向机器语言汇编语言面向过程语言:把代码组成过程或函数结构化程序设计语言:仍然为面向过程语言面向对象语言:引入类4面向对象的语言v主要的面向对象语言C+SmalltalkEiffelCLOSJava5v最早的面向对象的编程语言是1966年推出的Simlula,它首次提出模拟人类的思维方式,把数据和相关的操作集成在一起的思想。v20世纪80年代末期,以C+

2、为代表的面向对象程序设计(OOP)才流行起来。vJava是20世纪90年代新出现的面向对象的编程语言,它去除C+中非面向对象的内容,并实现一次编写,多次使用的跨平台特点,是面向对象开发工具中最具潜力的成员之一。面向对象的语言6图图1-1 软件开发软件开发瀑布模型瀑布模型 (软件生命周期)(软件生命周期)7图图1-2 极限编程过程模型极限编程过程模型8极限编程的思想能够适应客户需求的快速变化,激发开发者的热情。2001年,17名编程大师分别代表极限编程、水晶方法、实用编程等开发流派,发表“敏捷软件开发”宣言。敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。敏捷开发会

3、造成软件继承性的下降,因此它不是软件开发的终极选择。对于长时间、人数众多的大型软件应用的开发,文档的管理与衔接作用还是不可替代的。 敏捷开发敏捷开发9面向对象的方法 v二十世纪七十年代发展起来的v结构化编程的解决方案v模拟人类的思维过程面向对象分析 (OOA)面向对象设计 (OOD)面向对象的实现 (OOI )10面向对象的方法 v现实世界中所有的事物都是对象v对象都具有某些特征,并展现某些行为11对象 车型:法拉利颜色:红色年份:1995活动活动发动停车加速12面向对象的方法 v公司中的不同部门都是对象人事会计销售13将组织中的部门视为对象v每个部门的员工可对该部门的数据进行控制和操作Sal

4、esPersonnelAccounts14面向对象的编程v将活动和属性与每一实体相关联属性属性员工详细资料工资结算表票据凭证收据活动活动计算工资支付工资支付帐单记帐银行交易会计15对象v每个对象都有它自己的特性或特征,描述它是什么或它做什么。交通监视应用程序中的车辆菜单 鼠标和键盘 人事文件有关某次考试的分数表时间 复数16类n对象对象n表示现实世界中的实体。n类类把众多对象分类是人类认识客观世界常采用的办把众多对象分类是人类认识客观世界常采用的办法,分类的原则是抽象。即忽略事物非本质特征,找出法,分类的原则是抽象。即忽略事物非本质特征,找出事物的共性。事物的共性。17类v类:类:相似对象的集

5、合相似对象的集合这些对象拥有相同特性、共同的行为。v术语“类”是“对象的类”的缩略形式。例如:人类、动物类、过程类18类多边形对象多边形对象多边形类多边形类属性属性顶点边填充颜色方法方法绘制擦除移动抽象为19类与对象 类是具有共同属性和行为的对象的抽象。类可以定义为数据和方法的集合。类也称为模板,因为它们提供了对象的基本框架。类对象抽象抽象实例化实例化属性或状态属性或状态操作或行为操作或行为数据或变量数据或变量方法方法封装的实体封装的实体=数据数据+方方法法20属性v每个对象称为它的类的每个对象称为它的类的实例实例 任何一个对象都应当具有这两个要素,一是属性任何一个对象都应当具有这两个要素,一

6、是属性(attribute);二是行为二是行为(behavior),即能根据外界给的信息进行相应的操,即能根据外界给的信息进行相应的操作。作。对象是由一组属性和一组行为构成的。对象是由一组属性和一组行为构成的。 v当对象在类中表示时,对象拥有的特征称为属性。 在多边形类中:顶点、边、填充颜色都是属性属性21方法v当对象(或实体)在类中表示时,对象或实体拥有的动作称为方法在多边形类中,“draw”,“erase”和“move”都是方法的示例,它们是类的一部分22面向对象的编程v面向对象编程的基本思想是:从现实世界中客观存在的事物出发来构造软件系统,并尽可能的运用人类自然的思维方式。23面向对象程

7、序设计方法的优点v可重用性可重用性可重用性是面向对象软件开发的一个核心思路,面向对象程序设计的抽象、封装、继承、多态四大特点都围绕这个核心服务。v可扩展性可扩展性v可管理性可管理性24类的实现包括类的实现包括类声明类声明和和类体类体3.4.1 类声明类声明 class Student ; class 定义类的关键字定义类的关键字。(注意不要把class写成Class)。 Student 类的名称,习惯上,类名的首字母大写,并且命名类的名称,习惯上,类名的首字母大写,并且命名的规则符合标识符的规则。的规则符合标识符的规则。2.2类的定义类的定义25v在定义类时,只是定义了一种导出的数据类型,在定

8、义类时,只是定义了一种导出的数据类型,并并不为类分配存储空间不为类分配存储空间,所以,在定义类中的数据成,所以,在定义类中的数据成员时,员时,不能对其初始化不能对其初始化。如:。如:vclass Test int x=5,y=6; /是不允许的是不允许的v extern float x; /是不允许的是不允许的 v类中的任何成员数据均不能使用关键字类中的任何成员数据均不能使用关键字extern,auto或或register限定其存储类型限定其存储类型。类体类体26类体类体 类体包含数据(主要是变量)的定义和方法的定义。在类体包含数据(主要是变量)的定义和方法的定义。在类体中只可以有定义数据、定

9、义方法的语句,而不能有其类体中只可以有定义数据、定义方法的语句,而不能有其他的语句,如控制语句、赋值语句等。他的语句,如控制语句、赋值语句等。 class 属性; 方法;class Studentpublic:int num;string name;void setName(string newName) name=newName; ;27对象对象只有在定义了属于类的变量后,系统才会为只有在定义了属于类的变量后,系统才会为类的类的变量变量分配空间。分配空间。在定义类时,只是定义了一种在定义类时,只是定义了一种数据类型数据类型,并不为类分配存并不为类分配存储空间。储空间。类的变量我们称之为类的变

10、量我们称之为对象对象。28对象的定义格式:对象的定义格式:v类名类名 对象对象1,对象,对象2,.;Student st1,st2; 类名类名对象名对象名在建立对象时,只为对象分配用于保存数据成员的在建立对象时,只为对象分配用于保存数据成员的内存空间,内存空间,而成员函数的代码为该类的每一个对象而成员函数的代码为该类的每一个对象所共享所共享。 29对象的定义方法同结构体定义变量的方法一样对象的定义方法同结构体定义变量的方法一样class A float x,y;public: void Setxy( float a, float b ) x=a; y=b; void Print(void) c

11、outxtyendl; a1,a2;void main(void) A a3,a4;定义全局对象定义全局对象定义局部对象定义局部对象30对象的使用对象的使用一个对象的成员就是该对象的类所定义的成员,一个对象的成员就是该对象的类所定义的成员,有有成员数据和成员函数成员数据和成员函数,引用时同结构体变量类,引用时同结构体变量类似,用似,用“.”运算符。运算符。31class A float x,y;public: float m,n; void Setxy( float a, float b ) x=a; y=b; void Print(void) coutxtyendl; ;void main(

12、void) A a1,a2; a1.m=20; a1.n=10; a1.Setxy(2.0, 5.0); a1.Print(); void main(void) A a1,a2; m=20; n=10; Setxy(2.0, 5.0); Print(); 用对象名调用用对象名调用不能直接调用不能直接调用32类体的区域称为类体的区域称为类作用域类作用域。类的成员函数与。类的成员函数与成员数据,其作用域都是属于类的作用域,成员数据,其作用域都是属于类的作用域,仅在该类的范围内有效,仅在该类的范围内有效,故不能在主函数中故不能在主函数中直接通过函数名和成员名来调用函数直接通过函数名和成员名来调用函数

13、。 33定义People类v思考:人有哪些属性哪些行为34定义People类v#includev#includevusing namespace std;vclass peoplev public:float hight,weight;string head,ear,mouth;void speak(string s) couts; v;35vint main()v people zhubajie;vzhubajie.weight=200.0f;vzhubajie.hight=1.70f;vzhubajie.head=大头;vzhubajie.ear=两只大耳朵;vzhubajie.mouth

14、=一只大嘴;vcout重量:zhubajie.weight身高zhubajie.hightendl;vcout猪八戒的头:zhubajie.head嘴:zhubajie.mouth耳朵:zhubajie.earendl;vzhubajie.speak(师傅,咱们别去西天了,改去月宫吧师傅,咱们别去西天了,改去月宫吧);v36类的定义格式:类的定义格式:class 类名类名 private : 成员数据成员数据;成员函数;成员函数; public : 成员数据成员数据;成员函数;成员函数; protected:成员数据成员数据;成员函数;成员函数;;关键字关键字类名类名私有私有公有公有保护保护c

15、lass Student private : char Name20; float Math; float Chiese; public : float average; void SetName(char *name); void SetMath(float math); void SetChinese(float ch); float GetAverage(void);分号不能少分号不能少37用关键字用关键字public限定的成员称为限定的成员称为公有成员公有成员公有成员的数据或函数不受类的限制,公有成员的数据或函数不受类的限制,可以在类内或类可以在类内或类外自由使用外自由使用;对类而言是

16、透明的。对类而言是透明的。38vclass Studentvpublic:vint num;vstring name;v;vint main()vvStudent stu1;=张三;vstu1.num=2012001;vcout学生的学号:stu1.num,姓名:;v39用关键字用关键字priviate限定的成员称为限定的成员称为私有成员私有成员对私有成员对私有成员限定在该类的内部使用限定在该类的内部使用,即,即只允许该只允许该类中的成员函数使用私有的成员数据类中的成员函数使用私有的成员数据对于私有的成员函数,只能被对于私有的成员函数,只能被该类内的成员函

17、数该类内的成员函数调用调用;类就相当于私有成员的作用域。类就相当于私有成员的作用域。 40vclass Studentvprivate: int num;v string name; ;vint main()v Student stu1;=张三;vstu1.num=2012001;vcout学生的学号:stu1.num,姓名:;vname : cannot access private member declared in class Student41vclass Studentvprivate: string name;vpublic:string s

18、etName(string newName)vname=newName;vreturn name; v;vint main()vStudent stu1;vstring name1;vname1=stu1.setName(张三);vcout姓名:name1;v42vclass Studentvprivate: string name;vstring setName(string newName)vname=newName;vreturn name; v;vint main()vStudent stu1;vstring name1;vname1=stu1.setName(张三);vcout姓名:

19、name1;v43而用关键字而用关键字protected所限定的成员称为所限定的成员称为保护保护成员成员,只允许在类内及该类的派生类中使用,只允许在类内及该类的派生类中使用保护的数据或函数。即保护成员的作用域是保护的数据或函数。即保护成员的作用域是该类及该类的派生类该类及该类的派生类。44私有成员私有成员公有成员公有成员保护成员保护成员类内函数类内函数可以调用可以调用可以调用可以调用可以调用可以调用类(非派生类(非派生类)外函数类)外函数不可调用不可调用可以调用可以调用不可调用不可调用派生类函数派生类函数不可调用不可调用 可以调用可以调用可以调用可以调用私有函数私有函数 公有函数公有函数保护函

20、数保护函数类内函数类内函数可以调用可以调用 可以调用可以调用可以调用可以调用类(非派生类)类(非派生类)外外函数函数不可调用不可调用 可以调用可以调用不可调用不可调用派生类函数派生类函数不可调用不可调用 可以调用可以调用可以调用可以调用45每一个限制词每一个限制词(private等等)在类体中可使用多在类体中可使用多次。一旦使用了限制词,该限制词一直有效,次。一旦使用了限制词,该限制词一直有效,直到下一个限制词开始为止。直到下一个限制词开始为止。如果未加说明,类中成员默认的访问权限是如果未加说明,类中成员默认的访问权限是private,即私有的。,即私有的。46class Studentcha

21、r Name20;float Math;float Chiese; public :float average; void SetName(char *name);void SetMath(float math);void SetChinese(float ch); float GetAverage(void);均为私有权限均为私有权限均为公有权限均为公有权限47用成员选择运算符用成员选择运算符“.”只能访问对象的只能访问对象的公有公有成员成员,而不能访问对象的私有成员或保护成,而不能访问对象的私有成员或保护成员。员。若要访问对象的私有的数据成员,只能若要访问对象的私有的数据成员,只能通过对象

22、的公有成员函数来获取通过对象的公有成员函数来获取。 48class A float x, y; public: void Setxy(float a,float b) x=a; y=b; void Print(void) coutxtyendl; ;xySetxy()Print()A私有数据私有数据公有函数公有函数在在类外不能直接使用类外不能直接使用 x 或或 y ,必须通过,必须通过Setxy()给给 x 或或 y 赋值,通过赋值,通过Print()输出输出 x 或或 y 。49class A float x,y;public: float m,n; void Setxy( float a, float b ) x=a; y=b; void Print(void) cout

温馨提示

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

评论

0/150

提交评论