第一章面向对象的程序设计方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一章面向对象的程序设计方法面向对象程序开发主要内容包括:1.面向对象的基本理论。2.面向对象的分析方法。3.面向对象的开发发语言。4.面向对象的程序设计方法。5.面向对象的数据库管理方法。1.1设计的重要特征1.1.1类及其定义对象是客观事务的一种软件描述。而类是对象的一种抽象,类中包含了对象的属性特征。如图1-1所示。类的定义包括:1.定义对象属性。2.定义属性操作。如整数类int,字符类char等等。如通过定义:chara,即产生了字符类的一个对象“a”。开发人员通过自定义类来描述特定的对象。例如可为矩形定义如下名为“Rect”的类:ClassRect{//属性:floatlength;floatwidth;//操作floatperimeter(floatlength,floatwidth);类(包含对象属性和操作)对象反映抽象图3-1类与对象的关系floatarea(floatlength,floatwidth);}floatRect::perimater(floatlength,floatwidth)//::表示类属关系{return(2*(length+width));}floatRect::area(floatlength,floatwidth){return(length*width);}在应用程序中只需定义:Rectrect1;即生成了一个Rect类的对象rect1。1.1.2封装是隐藏软件模块的内部属性和操作,只通过特定接口与其它模块交互。封装的意义在于:1.提供一种全新的软件组织方法,适应面向对象程序设计的要求。2.通过隐藏数据保护与管理数据。3.增强程序的可复用性,减少重复劳动。1.1.3继承它反映了客观事务之间内在的联系,在面向对象程序设计中具体体现为具有共同特征的类之间的继承性。若类A与类B具有继承性,类A是类B的子类,则类A的定义定义包含类B的所有属性和操作。例如平行四边形类Para定义如下:classpara{//属性floata;floatb;//操作}其子类Rect的定义如下:classRect::para//“:”表示类Rect是类para的子类{//属性://操作:floatperimeter(floata,floatb);floatarea(floata,floatb);}floatRect::perimeter(floata,floatb){return(2*(a+b));}floatRect::area(floata,floatb){return(a*b);}图1-2所示为一个四边形类族继承关系示意。继承对于面向对象程序设计的重要意义在于:1.正确反映对象本质。2.增强应用程序的可复用性。3.实现类接口的一致性。1.1.4多态性多态性有重载和类属两种表现形式。1.重载是指相同的符号形式可代表不同的功能。运算符的重载是最为常见的重载形式。下面的代码段实现了运算符“+”对于字符串重载:char*operator+(char*str1,char*str2);//重载函数据声明四边形类平行四边形类梯形类一般四边形类矩形类正方形类等边梯形类直角梯形类表示派生关系图3-2四边形类族继承关系示意图char*operator+(char*str1,char*str2){return(strcpy(str1,str2));}还支持函数名重载。例如定义如下两个比较函数:intcompare(inta,intb);floatcompare(floata,floatb);若在应用程序的执行体中引用上述函数:intc=compare(2,3);floatc1=compare(2.3,3.5);则编译系统可根据参数的不同匹配相应函数体完成处理。2.类属在定义通用类模块的基础上,通过参数标识类的实际应用。定义形式如下:classquery{Ttype;//队列属性和操作的定义……}在应用程序中通过下面的形式即可定义整数队列query_int和浮点数队列query_float:……query(int)query_int;query(float)query_float;……3.2VC1.2.1构造函数和析构函数1.构造函数完成对象的初始工作。定义特点为:(1)函数名必须与类名相同。(2)无返回值。例如:classRect{public://构造函数Rect(int,int);//析构函数~Rect();private://属性:floatlength;floatwidth;private://操作floatperimeter(floatlength,floatwidth);floatarea(floatlength,floatwidth);}Rect::Rect(inta,intb){length=a;width=b;}floatRect::perimater(floatlength,floatwidth)//::表示类属关系{return(2*(length+width));}floatRect::area(floatlength,floatwidth){return(length*width);}在应用程序中通过定义:Rectrect1(100,50);即构造了长、宽分别为100和50的矩形对象rect1。2.析构函数完成对象的释放。定义的特点为:(1)函数名为类名前加“~”。(2)无返回值。1.2.2类成员的外部属性1.Public类型2.Protected类型3.Private类型1.2.3类的友员友员的声明形式如下:friend友员类型友员名;例如为类Rect定义友员函数GetLength和GetWidth的形式如下:classRect{Public:……friendfloatGetLength(constRect&);friendfloatGetWidth(constRect&);……private:……}floatGetLength(constRect&rect1){return(rect1.Length);}floatGetWidth(constRect&rect1){rfeturn(rect1.Width);}1.2.4虚函数是类成员函数的多态性在继承中的体现。虚函数的声明形式如下:virtual函数类型函数名;例如:classRect{public:……private://属性:floatlength;floatwidth;private://操作virtualfloatperimeter(floatlength,floatwidth);virtualfloatarea(floatlength,floatwidth);}floatRect::perimater(floatlength,floatwidth)//::表示类属关系{return(2*(length+width));}floatRect::area(floatlength,floatwidth){return(length*width);}则可如下定义矩形类Rect的派生类正方形Squ:CalssSqu:Rect{Private:flaotside;floatperimeter(floatside);floatperimeter(floatside);{return(4*side);}floatSqu::Area(floatside){return(side*side);}薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功