资源描述:
《面向对象程序设计语言C++第03章 类与对象.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、面向对象程序设计语言C++1第三章类和对象3.1类与对象3.1.1类的定义将日期当作一个复杂数据;structDate{intday,month,year;};voidInitDate(Date*pDate,intd,intm,inty);voidAddYear(Date*pDate,intyear);voidAddMonth(Date*pDate,intmonth);voidAddDay(Date*pDate,intday);2第三章类和对象3.1类与对象3.1.1类的定义存在的问题:针对数据的操作和数据没有明确的联系,它们都是相对独立的。所以,在加工数据时,必须将数据的实例作
2、为参数传递给操作函数,数据是被动的。从应用的角度来看,数据应该是主动的,而操作是作为主体的数据主动发起的,也就是说,操作是被动的。3第三章类和对象3.1类与对象3.1.1类的定义经过这样的改造后,数据成为能动的主体,它不仅包含解决问题的数据,同时也包含加工数据的操作,从而数据与操作紧密地结合在一起。这种数据包真正地成为独立的单元。另外一方面,数据包内部的变化不会反射到它的外部。这就是说,数据内部结构的改变不会对使用数据包的程序部分带来影响。这就是数据封装的一般概念。4第三章类和对象3.1类与对象3.1.1类的定义一般地,C++是用类来实现封装机制的:classclassName{
3、attributes;//datamembers;operations;//memberfunctions;};//注意这个分号的存在定义了一个新的数据类型:className。className是类的名字,也是该类型的类型名。5第三章类和对象3.1类与对象3.1.1类的定义:在一个类中,可以被外部访问的部分被定义在public段中。这些成员被称为公有成员。不能被外部访问的部分被定义在private段中,称为私有成员。一个类外部的函数或者其他的类只能访问这个类的公有成员。而不能直接访问私有的成员。6第三章类和对象3.1类与对象3.1.2访问控制classDate{private:
4、//类外不可访问intday,month,year;public://类外可访问voidInitDate(intd,intm,inty);//类外可访问voidAddYear(intyear);voidAddMonth(intmonth);voidAddDay(intday);};7第三章类和对象3.1类与对象3.1.2访问控制私有段公有段接口保护段8第三章类和对象3.1类与对象3.1.2访问控制数据封装是相对的概念,只是对于类外而言。而对于类内部,所有的成员都是相互可见的。9第三章类和对象3.1类与对象3.1.3类和对象的关系类只是一种形式化定义。要使用类提供的功能,必须使用类
5、的实例--对象。对象要占据一定的内存空间。类和对象的关系就像整型和变量的关系。inti;Dated;10classCircle{private:intx,y;//圆心的X、Y坐标floatfRadius;//半径public:voidSetXY(inta,intb);voidSetRadius(floatr);voidMove(intnewx,intnewy);…//其它成员};第三章类和对象3.1类与对象3.1.3类和对象的关系Circlec1,c2,c3;xyfRadiusC1xyfRadiusC2xyfRadiusC3SetXY()SetRadius()Move()12第三
6、章类和对象3.2类的成员3.2.1数据成员类的数据成员往往描述了该类对象所处的状态,因此它被称为属性。所以在设计一个类的时候,都会从该类对象中提取那些能表达对象本质的数据作为属性。13第三章类和对象3.2类的成员3.2.1数据成员例:包含对象的类classTriangle{private:Pointv[3];//三角形的三个顶点intnColor;public://其它的共有成员…};14第三章类和对象3.2类的成员3.2.2成员函数函数作为成员是面向对象的一种标志之一。这表明了,操作是隶属于对象的。成员函数与一般的函数一样,都有这样一些特性:函数名、参数列表和返回类型。作为成员
7、的函数可以在类类型定义时给出,也可以在类类型定义时只给出成员函数的声明。有些特殊的成员函数可能没有返回类型。没有返回类型指的是函数声明前不能加上任何的类型说明,包括void。这与函数没有返回值是不同的。15第三章类和对象3.2类的成员1.在类中定义成员函数classDate{//简化版private:intday,month,year;public:voidInitDate(intd,intm,inty){day=d;month=m;year=y;}…};16第三章类和对象3.2