《2022年第一章面向对象的程序设计方法 .pdf》由会员分享,可在线阅读,更多相关《2022年第一章面向对象的程序设计方法 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 / 7 第一章 面向对象的程序设计方法面向对象程序开发主要内容包括:1面向对象的基本理论。2面向对象的分析方法。3面向对象的开发发语言。4面向对象的程序设计方法。5面向对象的数据库管理方法。11 设计的重要特征111 类及其定义对象是客观事务的一种软件描述。而类是对象的一种抽象,类中包含了对象的属性特征。如图1-1 所示。类的定义包括:1定义对象属性。2定义属性操作。如整数类 int ,字符类 char 等等。如通过定义: char a ,即产生了字符类的一个对象“a”。开发人员通过自定义 类来描述 特定的 对象。例 如可为矩形定义如 下名为“Rect”的类:Class Rect /属性:
2、 float length。 float width。 /操作 float perimeter(float length,float width)。 float area (float length,float width)。类(包含对象属性和操作)对象 反映 抽象图3-1 类与对象的关系精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 7 页2 / 7 float Rect:perimater(float length,float width)/:表示类属关系 return(2*(length+width)。 float Rect:ar
3、ea(float length,float width) return(length*width)。 在应用程序中只需定义: Rect rect1。即生成了一个 Rect 类的对象 rect1 。112 封装是隐藏软件模块的内部属性和操作,只通过特定接口与其它模块交互。封装的意义在于:1提供一种全新的软件组织方法,适应面向对象程序设计的要求。2通过隐藏数据保护与管理数据。3增强程序的可复用性,减少重复劳动。113 继承它反映了客观事务之间内在的联系,在面向对象程序设计中具体体现为具有共同特征的类之间的继承性。若类 A 与类 B 具有继承性,类A 是类 B的子类,则类 A的定义定义包含类B的所有
4、属性和操作。例如平行四边形类Para 定义如下:class para /属性 float a。 float b。 /操作 其子类 Rect 的定义如下: class Rect:para /“:”表示类 Rect 是类 para 的子类 /属性: /操作: float perimeter(float a,float b)。 float area(float a,float b)。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 7 页3 / 7 float Rect:perimeter(float a,float b) return(2*(
5、a+b)。 float Rect:area(float a,float b) return(a*b)。 图 1-2 所示为一个四边形类族继承关系示意。继承对于面向对象程序设计的重要意义在于:1正确反映对象本质。2增强应用程序的可复用性。3实现类接口的一致性。114 多态性多态性有重载和类属两种表现形式。1重载是指相同的符号形式可代表不同的功能。运算符的重载是最为常见的重载形式。下面的代码段实现了运算符“+”对于字符串重载:char * operator+(char *str1,char *str2)。/ 重载函数据声明char * operator+(char *str1,char *str2
6、) 四边形类平行四边形类梯形类一般四边形类矩形类正方形类等边梯形类直角梯形类表示派生关系图3-2 四边形类族继承关系示意图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 7 页4 / 7 return(strcpy(str1,str2)。 还支持函数名重载。例如定义如下两个比较函数: int compare(int a,int b)。 float compare(float a,float b)。若在应用程序的执行体中引用上述函数:int c=compare(2,3)。float c1=compare(2.3,3.5)。则编译系统可根据
7、参数的不同匹配相应函数体完成处理。2类属在定义通用类模块的基础上,通过参数标识类的实际应用。定义形式如下:class query T type。 /队列属性和操作的定义 在应用程序中通过下面的形式即可定义整数队列query_int和浮点数队列query_float: query(int) query_int。query(float) query_float。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 7 页5 / 7 32 VC 121 构造函数和析构函数1构造函数完成对象的初始工作。定义特点为:(1) 函数名必须与类名相同。(2)
8、 无返回值。例如:class Rect public : /构造函数 Rect(int,int)。 /析构函数 Rect()。 private: /属性: float length。 float width。 private : /操作 float perimeter(float length,float width)。 float area (float length,float width)。 Rect:Rect(int a,int b) length=a。 width=b。 float Rect:perimater(float length,float width)/:表示类属关系 re
9、turn(2*(length+width)。 float Rect:area(float length,float width) return(length*width)。 在应用程序中通过定义:Rect rect1(100,50)。即构造了长、宽分别为100 和 50 的矩形对象 rect1 。2析构函数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 7 页6 / 7 完成对象的释放。定义的特点为:(1)函数名为类名前加“ ”。(2)无返回值。122 类成员的外部属性1Public 类型2Protected类型3Private类型12
10、3 类的友员友员的声明形式如下:friend 友员类型友员名;例如为类 Rect 定义友员函数 GetLength 和 GetWidth 的形式如下:class Rect Public : friend float GetLength(const Rect &)。 friend float GetWidth(const Rect &)。 private: float GetLength(const Rect &rect1) return(rect1.Length)。 float GetWidth(const Rect &rect1) rfeturn(rect1.Width)。 124 虚函数是
11、类成员函数的多态性在继承中的体现。虚函数的声明形式如下:virtual 函数类型函数名;例如:class Rect 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 7 页7 / 7 public : private: /属性: float length。 float width。 private : /操作 virtual float perimeter(float length,float width)。 virtual float area (float length,float width)。 float Rect:perimat
12、er(float length,float width)/:表示类属关系 return(2*(length+width)。 float Rect:area(float length,float width) return(length*width)。 则可如下定义矩形类Rect 的派生类正方形 Squ: Calss Squ:Rect Private : flaot side。 float perimeter(float side)。 float perimeter(float side)。 return(4*side)。 float Squ:Area(float side) return(side*side)。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 7 页