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