《类的概念与定义》PPT课件.ppt_第1页
《类的概念与定义》PPT课件.ppt_第2页
《类的概念与定义》PPT课件.ppt_第3页
《类的概念与定义》PPT课件.ppt_第4页
《类的概念与定义》PPT课件.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

C+程序设计,第7章类的概念与定义,OOP概念类和对象构造函数和析构函数,类和对象构造函数和析构函数,构造函数和析构函数this指针,了解OOP技术掌握类的定义掌握对象的定义和使用掌握构造函数和析构函数的定义,7.1面向对象设计方法,传统的程序设计方法是一种结构化程序设计方法。基于功能分解,将整个软件看作是一个个子功能模块的组合。结构化的方法不能适应变化的需求,不利于软件的维护与扩充。数据和作用在该数据上的操作是相互分离的。,7.1.1面向对象设计技术概述,1面向对象设计方法的起源,结构化,第7章类的概念与定义,7.1面向对象设计方法,7.1.1面向对象设计技术概述,1面向对象设计方法的起源,基于对象分解基于对象分解方法设计的软件在结构上更加稳定。避免了传统程序设计中数据和操作的潜在的不一致性软件被看作是对象及其相互作用关系的组合,便于抽象思维软件的可重用性,可靠性和安全性高,面向对象(OOP),第7章类的概念与定义,7.1面向对象设计方法,7.1.1面向对象设计技术概述,2.面向对象方法的概念,对象是对现实实体的抽象,它包括数据和操作两部分。,对象、类、消息、抽象、封装、继承、多态性等。,描述对象的性质、状态。,描述该对象的行为。,表示具有相同或相似性质的一组对象,第7章类的概念与定义,7.1面向对象设计方法,7.1.1面向对象设计技术概述,2.面向对象方法的概念,抽象强调事物的主要方面,忽略其次要方面。封装对象的各种外部性质同其具体的内部实现相互分离。继承派生新类的方法。通过继承,新类不仅具有旧类的属性和方法,而且还具有自己独有的属性和方法。多态性在一组具有继承关系的类层次中,同一个消息发给该类及该类的子类对象时,这些对象会作出不同的响应(即一个消息,多种行为)。,第7章类的概念与定义,7.1面向对象设计方法,7.1.1面向对象设计技术概述,3面向对象设计方法的基本步骤,系统分析阶段对系统进行对象分解,从中抽象出对象、类及子类,建立该系统对象模型。,系统设计阶段确定目标系统问题的求解策略,系统划分为子系统各个子系统的硬件和软件资源配置等,第7章类的概念与定义,7.1面向对象设计方法,7.1.1面向对象设计技术概述,3面向对象设计方法的基本步骤,对象设计阶段完成各个对象(类)的细节处理内部数据结构表示、对象接口及其算法等。,应用程序生成阶段根据对象间的相互作用关系,完成整个系统软件构造。,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,1.类的概念和特征,众多的具有相同属性的事物,类,归纳、划分,桥梁树木建筑花草栅栏,场景装饰物,具体的对象,实例化,一棵梨树一棵桃树一排栅栏一棵桃树一棵梨树,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,1.类的概念和特征,类的6个特点:1)程序设计更有条理;2)程序的可读性更好;3)程序设计的过程真正像是机器部件的组装;4)使程序开发模块化,分工变得方便和自然;5)提高可重用性;6)引入了类(class)和对象(object)的概念,就使得C+语言与C语言相比发生了本质的变化。,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,2.类的定义,C+的类是在结构体的基础上扩充而来的。在C+语言中,结构体可以被作为成员缺省为公有访问属性的类使用。,class类名private:数据成员或成员函数protected:数据成员或成员函数public:数据成员或成员函数;,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,2.类的定义,注意事项:1)class是定义类的关键字,类名必须是C+的有效标识符,但一般首字母大写;2)大括号的部分是类的成员(数据成员和函数成员),分别由private、public、protected三个关键字后跟冒号来指定访问属性。可以任何顺序出现任意次,这3部分并非必须同时出现;3)只有类中的成员函数才能使用private的数据成员和成员函数;,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,2.类的定义,4)public部分说明的数据成员或成员函数可被程序中的任何函数或语句调用,public成员多为成员函数;5)protected部分说明的数据成员和成员函数是不能在类之外调用的,只有类的成员函数及其子类(派生类)可以存取protected的成员;6)当未指明成员是哪部分时,默认是属于private成员,但一般不要采用;7)在类的定义中,类的说明部分的右边大括号后面必须有一个“;”。,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,3.成员函数的定义,将成员函数的定义直接写在类中。,classRecordprivate:charbookname20;intnumber;public:voidregist(char*a,intb)/成员函数regist()的定义strcpy(bookname,a);/给数据成员bookname赋值number=b;/给数据成员number赋值/,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,3.成员函数的定义,在类定义之外定义成员函数在类的定义体中只写出成员函数的原型说明,而成员函数的定义写在类的定义之后。,返回值类型类名:成员函数名(参数说明)函数体,通常将类的定义写在文件(.h文件)中,该文件称为头文件成员函数的定义写在另一个文件(.cpp文件)中,称为类文件,注:在类文件中,一定要使用“include”语句包含对应的头文件,否则,将会出现找不到成员函数或类成员的错误。,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,3.成员函数的定义,classRecord/定义图书类Recordprivate:charbookname20;intnumber;public:voidregist(char*a,intb);/成员函数regist的原型;voidRecord:regist(char*a,intb)/regist()是类Record的成员函数strcpy(bookname,a);number=b;,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,4.对象的定义和使用,类名对象名;,对象是类的实例,定义对象的方法和定义基本类型的变量一样:,Recordbook1,book2;/此处的book1,book2就是Record/类型,也就是类的两个对象book1.regist(“C+编程教程”,1001);/调用成员函数regist,/给book1的两个数据成员bookname和number赋值book2.regist(“C+语言参考”,1002);/调用成员函数regist,给book2的两个数据成员赋值,第7章类的概念与定义,7.1面向对象设计方法,7.1.2类与对象的概念和定义,5.this指针,voidRecord:regist(char*a,intb)/regist()是类Record的成员函数strcpy(bookname,a);/访问当前对象成员booknamenumber=b;/访问当前对象成员number,成员函数中,可以直接访问类成员。隐含解释为是对“当前调用者对象”的成员进行访问或使用。,类的非静态成员函数必须通过对象进行调用。,成员函数中“this-”“(*this).”可以省略,第7章类的概念与定义,7.1面向对象设计方法,7.1.3构造函数与析构函数,1构造函数的作用及实现,直接赋值,personp1=ZhangHua,23,2475096,NanKaiUniversity;,直接赋值的类应该满足:所有数据成员都是公有的没有声明任何构造函数的,对象也被称为类变量,一个类的对象是这个类的一个实例。可以有多种赋值方式。,第7章类的概念与定义,7.1面向对象设计方法,7.1.3构造函数与析构函数,1构造函数的作用及实现,公有的初始化函数,public:voidinitpoint()xcoord=0;ycoord=0;,定义一个专用的初始化函数,该函数可以有若干个参数。,第7章类的概念与定义,7.1面向对象设计方法,7.1.3构造函数与析构函数,1构造函数的作用及实现,构造函数,C+规定在类的说明中可以包含一个或多个特殊的公有函数成员构造函数,1)函数名与类名相同;2)无函数(返回)类型说明;3)构造函数在一个新的对象被建立时,该对象所隶属类的构造函数自动地被调用,对这个对象完成初始化工作;,第7章类的概念与定义,7.1面向对象设计方法,7.1.3构造函数与析构函数,1构造函数的作用及实现,构造函数,4)在上一条中提到的新对象的建立包括两种情况:一种是在对象说明语句中,一种是用new函数建立新的动态对象时;5)如果一个类说明中没有给出显式的构造函数,系统将自动给出一个缺省的(隐式的)构造函数:6)如果说明中包括多个构造函数,一般它们有不同的参数表和函数体。,(void),第7章类的概念与定义,7.1面向对象设计方法,7.1.3构造函数与析构函数,1构造函数的作用及实现,成员初始化列表,一些特殊情况下数据成员只能用初始化,而不能被赋值。量成员引用型的成员,point(floatix,floatiy):xcoord(ix),yCoord(iy),第7章类的概念与定义,7.1面向对象设计方法,7.1.3构造函数与析构函数,2析构函数的作用及实现,1)析构函数名一律为“类名”,如“point”;2)析构函数无函数返回类型;3)析构函数没有参数;4)一个类只可有一个析构函数,也可以缺省;5)在对象生存期结束时,包括用delete函数释放动态对象时,系统自动调用析构函数;6)若某个类定义中没有给出显式的析构函数的话,则系统自动给出一个缺省的(隐式的)如下形式的析构函数:,(void),第7章类的概念与定义,小结,本章主要讲解C+面向对象基础知识OOP概念类和对象构造函数和析构函数,第7章类的概念与定义,自测题,1以下对this指针描述正确的是()。A.this指针指向的是一个类B.this指针指向的是一个对象C.this指针必需也在类中显式的实现后才能使用D.可以通过对象名来调用this指针D.可以通过对象名来调用this指针2可以将现实生活中的对象经过抽象,映射为程序中的对象,对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为()。A.对象B.类C.成员D.函数3面向对象系统的哪个特征是一种信息隐藏技术,目的在于将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需用设计者提供的协议命令对象去做即可()。A.多态性B.封装性C.继承性D.复用性,第7章类的概念与定义,自测题,1以下对this指针描述正确的是(B)。A.this指针指向的是一个类B.this指针指向的是一个对象C.this指针必需也在类中显式的实现后才能使用D.可以通过对象名来调用this指针2可以将现实生活中的对象经过抽象,映射为程序中的对象,对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为(B)。A.对象B.类C.成员D.函数3面向对象系统的哪个特征是一种信息隐藏技术,目的在于将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需用设计者提供的协议命令对象去做即可(B)。A.多

温馨提示

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

评论

0/150

提交评论