收藏 分销(赏)

2023年面向对象的程序设计方法.doc

上传人:二*** 文档编号:4816773 上传时间:2024-10-13 格式:DOC 页数:11 大小:117.54KB 下载积分:5 金币
下载 相关 举报
2023年面向对象的程序设计方法.doc_第1页
第1页 / 共11页
本文档共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); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服