第一章面向对象的程序设计方法 .docx
精品名师归纳总结第一章 面对对象的程序设计方法面对对象程序开发主要内容包括:1. 面对对象的基本理论。2. 面对对象的分析方法。3. 面对对象的开发发语言。4. 面对对象的程序设计方法。5. 面对对象的数据库治理方法。1. 1设计的重要特点1 1 1 类及其定义对象是客观事务的一种软件描述。而类是对象的一种抽象,类中包含了对象的属性特点。如图 1-1 所示。反映类 包含对象属性和操作对象抽象图3-1 类与对象的关系类的定义包括:1. 定义对象属性。2. 定义属性操作。如整数类 int ,字符类 char 等等。如通过定义: char a ,即产生了字符类的一个对象“a”。开发人员通过自定义类来描述 特定的 对象。例 如可为矩形定义如 下名为“ Rect”的类:Class Rect/属性:float length。float width。/操作float perimeterfloat length,float width。float area float length,float width。可编辑资料 - - - 欢迎下载精品名师归纳总结float Rect:perimaterfloat length,float width/:表示类属关系return2*length+width。float Rect:areafloat length,float widthreturnlength*width。在应用程序中只需定义:Rect rect1。即生成了一个 Rect 类的对象 rect1 。1 1 2 封装是隐匿软件模块的内部属性和操作,只通过特定接口与其它模块交互。封装的意义在于:1. 供应一种全新的软件组织方法,适应面对对象程序设计的要求。2. 通过隐匿数据爱护与治理数据。3. 增强程序的可复用性,削减重复劳动。1 1 3 继承它反映了客观事务之间内在的联系,在面对对象程序设计中详细表达为具有共同特点的类之间的继承性。如类 A 与类 B 具有继承性,类 A 是类 B 的子类,就类 A 的定义定义包含类B的全部属性和操作。例如平行四边形类Para 定义如下:class para /属性float a。float b。/操作其子类 Rect 的定义如下:class Rect:para /“:”表示类 Rect 是类 para 的子类/属性:/操作:float perimeterfloat a,float b。float areafloat a,float b。可编辑资料 - - - 欢迎下载精品名师归纳总结float Rect:perimeterfloat a,float breturn2*a+b。float Rect:areafloat a,float breturna*b。图 1-2 所示为一个四边形类族继承关系示意。四边形类平行四边形类梯形类一般四边形类矩形类等边梯形类直角梯形类正方形类表示派生关系图3-2 四边形类族继承关系示意图继承对于面对对象程序设计的重要意义在于:1. 正确反映对象本质。2. 增强应用程序的可复用性。3. 实现类接口的一样性。1. 1 4 多态性多态性有重载和类属两种表现形式。1. 重载是指相同的符号形式可代表不同的功能。运算符的重载是最为常见的重载形式。下面的代码段实现了运算符“ +”对于字符串重载:char * operator+char *str1,char *str2。/ 重载函数据声明char * operator+char *str1,char *str2可编辑资料 - - - 欢迎下载精品名师归纳总结returnstrcpystr1,str2。仍支持函数名重载。例如定义如下两个比较函数:int compareint a,int b。float comparefloat a,float b。如在应用程序的执行体中引用上述函数: int c=compare2,3。float c1=compare2.3,3.5。就编译系统可依据参数的不同匹配相应函数体完成处理。2. 类属在定义通用类模块的基础上,通过参数标识类的实际应用。定义形式如下:class queryT type。/队列属性和操作的定义在应用程序中通过下面的形式即可定义整数队列query_int和浮点数队列query_float:queryint query_int。queryfloat query_float。可编辑资料 - - - 欢迎下载精品名师归纳总结3 2VC1 2 1 构造函数和析构函数1. 构造函数完成对象的初始工作。定义特点为:(1) ) 函数名必需与类名相同。(2) ) 无返回值。例如:class Rectpublic :/构造函数Rectint,int。/析构函数Rect。private: /属性:float length。float width。private : /操作float perimeterfloat length,float width。float area float length,float width。Rect:Rectint a,int blength=a。width=b。float Rect:perimaterfloat length,float width/:表示类属关系return2*length+width。float Rect:areafloat length,float widthreturnlength*width。在应用程序中通过定义:Rect rect1100,50。即构造了长、宽分别为100 和 50 的矩形对象 rect1 。2. 析构函数可编辑资料 - - - 欢迎下载精品名师归纳总结完成对象的释放。定义的特点为:(1) 函数名为类名前加“ ”。(2) 无返回值。1. 2 2 类成员的外部属性1. Public类型2. Protected类型3. Private类型1 2 3 类的友员友员的声明形式如下:friend友员类型友员名。例如为类 Rect 定义友员函数 GetLength 和 GetWidth 的形式如下:class RectPublic :friend float GetLengthconst Rect &。friend float GetWidthconst Rect &。private:float GetLengthconst Rect &rect1returnrect1.Length。float GetWidthconst Rect &rect1rfeturnrect1.Width。1 2 4 虚函数是类成员函数的多态性在继承中的表达。虚函数的声明形式如下:virtual函数类型函数名。 例如:class Rect可编辑资料 - - - 欢迎下载精品名师归纳总结public :private: /属性:float length。float width。private : /操作virtual float perimeterfloat length,float width。virtual float area float length,float width。float Rect:perimaterfloat length,float width/:表示类属关系return2*length+width。float Rect:areafloat length,float widthreturnlength*width。就可如下定义矩形类 Rect 的派生类正方形 Squ: Calss Squ:RectPrivate :flaot side。float perimeterfloat side。float perimeterfloat side。return4*side。float Squ:Areafloat sidereturnside*side。可编辑资料 - - - 欢迎下载