2023年面向对象的程序设计方法.doc
《2023年面向对象的程序设计方法.doc》由会员分享,可在线阅读,更多相关《2023年面向对象的程序设计方法.doc(11页珍藏版)》请在咨信网上搜索。
第一章 面向对象的程序设计方法 面向对象程序开发重要内容涉及: 1. 面向对象的基本理论。 2. 面向对象的分析方法。 3. 面向对象的开发发语言。 4. 面向对象的程序设计方法。 5. 面向对象的数据库管理方法。 1.1 设计的重要特性 1.1.1 类及其定义 对象是客观事务的一种软件描述。而类是对象的一种抽象,类中包含了对象的属性特性。如图1-1所示。 类的定义涉及: 1. 定义对象属性。 2. 定义属性操作。 如整数类int,字符类char等等。 如通过定义:char a,即产生了字符类的一个对象“a”。 开发人员通过自定义类来描述特定的对象。例如可为矩形定义如下名为“Rect”的类: Class Rect { //属性: float length; float width; //操作 float perimeter(float length,float width); float area (float length,float width); } float Rect::perimater(float length,float width)//::表达类属关系 { return(2*(length+width)); } float Rect::area(float length,float width) { return(length*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 perimeter(float a,float b); float area(float a,float b); } float Rect::perimeter(float a,float b) { return(2*(a+b)); } float Rect::area(float a,float b) { return(a*b); } 图1-2所示为一个四边形类族继承关系示意。 继承对于面向对象程序设计的重要意义在于: 1. 对的反映对象本质。 2. 增强应用程序的可复用性。 3. 实现类接口的一致性。 1.1.4 多态性 多态性有重载和类属两种表现形式。 1.重载 是指相同的符号形式可代表不同的功能。运算符的重载是最为常见的重载形式。 下面的代码段实现了运算符“+”对于字符串重载: char * operator+(char *str1,char *str2);//重载函数据声明 char * operator+(char *str1,char *str2) { 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); 则编译系统可根据参数的不同匹配相应函数体完毕解决。 2.类属 在定义通用类模块的基础上,通过参数标记类的实际应用。定义形式如下: class query { T type; //队列属性和操作的定义 …… } 在应用程序中通过下面的形式即可定义整数队列query_int和浮点数队列query_float: …… query(int) query_int; query(float) query_float; …… 3.2 VC 1.2.1 构造函数和析构函数 1. 构造函数 完毕对象的初始工作。定义特点为: (1) 函数名必须与类名相同。 (2) 无返回值。 例如: 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)//::表达类属关系 { return(2*(length+width)); } float Rect::area(float length,float width) { return(length*width); } 在应用程序中通过定义: Rect rect1(100,50); 即构造了长、宽分别为100和50的矩形对象rect1。 2.析构函数 完毕对象的释放。定义的特点为: (1) 函数名为类名前加“~”。 (2) 无返回值。 1.2.2 类成员的外部属性 1. Public类型 2. Protected类型 3. Private类型 1.2.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); } 1.2.4 虚函数 是类成员函数的多态性在继承中的体现。 虚函数的声明形式如下: virtual 函数类型 函数名; 例如: class Rect { public : …… private: //属性: float length; float width; private : //操作 virtual float perimeter(float length,float width); virtual float area (float length,float width); } float Rect::perimater(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); }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 面向 对象 程序设计 方法
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文