您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第2章 C++面向对象基础(1)
第2章C++面向对象基础2.1C++的类和对象C++程序由类定义、类实现和主程序组成。2.1.1类在C++语言中,一个类的定义包含两部分内容:数据成员;成员函数。数据成员定义该类对象的属性;成员函数定义了该类对象的操作即行为或动作。又称为方法。例如:点类。⑴类的定义类由三部分组成:类名、数据成员和成员函数。class类名{private://私有数据成员和成员函数public://公有数据成员和成员函数protected://保护的数据成员和成员函数};classPoint{private:intx,y;public:voidShowPoint();intGetX();intGetY();};⑵类的实现voidPoint::ShowPoint(){cout(x,y)endl;}intPoint::GetX(){returnx;}intPoint::GetY(){returny;}有关类定义的几点说明:(1)class是定义类的关键字,类名是一种标识符,必须符合C++标识符的命名规则。{}内是类的定义体部分,说明该类的成员,类的成员包括数据成员和成员函数。(2)类成员的三种访问控制权限:类有三种访问控制权限,分别是private(私有成员)、public(公有成员)、protected(保护成员),在每一种访问控制权限下,均可以定义数据成员和成员函数。private:只能由本类的成员函数或友元函数访问。public:对外开放,提供了类与外部的接口。protected:只能由本类的成员函数、友元函数或公有派生类成员函数访问。(Seealso类的继承)类定义举例例:定义日期类classTdate//定义日期类{public://定义公有成员函数voidSet(intm,intd,inty);//置日期值intIsLeapYear();//判是否闰年voidPrint();//输出日期值private://定义私有数据成员intmonth;intday;intyear;};//类定义体的结束⑶类中成员函数的定义类的数据成员说明对象的特征,而成员函数决定对象的操作行为。成员函数是程序算法实现的部分,是对封装的数据进行操作的唯一途径。类的成员函数有两种定义方法:外联定义和内联定义。①外联成员函数(外联函数)在类外定义成员函数的具体形式为:返回值类型类名::成员函数名(形式参数表){//函数体}外联函数的定义voidTdate::Set(intm,intd,inty)//置日期值{month=m;day=d;year=y;}intTdate::IsLeapYear()//判是否闰年{return(year%4==0&&year%100!=0)||(year%400==0);}voidTdate::Print()//输出日期值{coutmonth/day/yearendl;}②内联成员函数内联函数有两种定义方法:一种方法是在类定义体内定义成员函数(隐式声明);另一种方法是使用inline关键字。Ⅰ在类定义体内定义内联函数(隐式声明)classTdate{public:voidSet(intm,intd,inty)//置日期值{month=m;day=d;year=y;}private:intmonth;intday;intyear;};Ⅱ使用关键字inline定义内联成员函数(显式声明)inlinevoidTdate::Set(intm,intd,inty){month=m;day=d;year=y;}或voidinlineTdate::Set(intm,intd,inty){month=m;day=d;year=y;}2.1.2对象对象(Object)是类(Class)的一个具体实例(Instance)。例如:点pa(3,4)是点类的一个具体实例。对象定义语法:类名对象名;例如:定义一个点对象。Pointpa(3,4);⑴对象的定义①方法一:在定义类的同时直接定义classPoint{private:intx,y;public:voidinit(intx0,inty0);intGetx(void);intGety(void);}dot1,dot2;②方法二:在使用时定义对象(类似于变量定义)类名对象1标识符,...,对象n标识符;如:Pointdot1,dot2,*pdot;⑵成员的访问①通过对象调用成员格式:对象名.公有成员其中,“.”称为对象选择符,简称点运算符。例如:dot1.GetX()②通过指向对象的指针调用成员格式:指向对象的指针-成员,例如:pdot-GetX()或(*对象指针名).公有成员,例如:(*pdot).GetX()classMyclock{private:inthour,minute,second;public:voidinit();voidupdata();voiddisplay();};Myclockclock,*pclock;//定义对象clock和指向//Myclock类对象的指针pclockclock.init();//通过对象访问公有成员函数pclock=&clock;//指针pclock指向对象clockpclock-display();//通过指针访问成员函数clock.hour=4;//错误,因为不能访问其私有成员⑶C++程序结构一般一个较大的项目可以分为三种文件来存放:(1)将类的说明作为一个头文件来存放。内联函数和类定义一般归入头文件;(2)类的实现部分单独组成一个文件,用来存放类的成员函数的定义;(3)在main()中实现类的应用。看例子2.3、2.4⑷C++程序设计步骤①画类图类名对象名成员函数②类定义classPoint{public:Point();GetX();intx;inty;}classTriangle{public:Triangle(intx1,inty1,intx2,inty2,intx3,inty3);voidPrintTriangle();doubleaLength();doublebLength();doublecLength();intCheck();doubleCalculateArea();private:PointA,B,C;doublea,b,c,area;};③类实现voidPoint::PrintPoint(){cout(x,y)endl;}doubleTriangle::CalculateArea(){doubles;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));returnarea;}④主程序voidmain(){TriangleT1(0,0,3,3,3,0;T1.PrintTriangle();if(T1.Check()){cout”Area=”T1.CalculateArea();}elsecoutT1isfailedendl;}总结:1.类的定义;2.对象的定义;3.类成员的引用;4.C++程序的结构;5.MicrosoftVisualStudio2005使用方法。要求:会定义类和对象,会画类图和对象图,理解C++程序的结构。理解面向对象设计思想。熟练使用MicrosoftVisualStudio.Net2005编程环境。实验一类和对象(1)实验目的:理解C++程序的结构,掌握类和对象的定义和使用,熟悉MicrosoftVisualStudio2005使用方法。实现内容:参照例2.3设计日期类,并显示你感兴趣的日期。要求画出类图,主程序流程图。
本文标题:第2章 C++面向对象基础(1)
链接地址:https://www.777doc.com/doc-3196692 .html