资源预览内容
第1页 / 共125页
第2页 / 共125页
第3页 / 共125页
第4页 / 共125页
第5页 / 共125页
第6页 / 共125页
第7页 / 共125页
第8页 / 共125页
第9页 / 共125页
第10页 / 共125页
亲,该文档总共125页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1. 对象 客观世界中任何一个事物都可以看成一个对象(object)。 对象可大可小。对象是构成系统的基本单位。 一个对象往往是由一组属性和一组行为构成的。 2. 封装与信息隐蔽 面向对象程序设计方法的一个重要特点就是“封装性” (encapsulation),所谓“封装”,指两方面的含义:一、将有关的数据和操作代码封装在一个对象中,形成一个 基本单位,各个对象之间相对独立,互不干扰。 二、将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留 下少量接口,以便与外界联系,接收外界的消息。 信息隐蔽还有利于数据安全,防止无关的人了解和修改数据 。面向对象程序设计中的概念13. 抽象 在程序设计方法中,常用到抽象(abstraction) 这一名词。抽象的过程是将有关事物的共性归纳、集中的过 程。 抽象的作用是表示同一类事物的本质。C+中的 类就是对一批具体的数的抽象。 类是对象的抽象,而对象则是类的特例,或者说 是类的具体表现形式。 4. 继承与重用 如果在软件开发中已经建立了一个名为A的“类” ,又想另外建立一个名为B的“类”,而后者与前者内容基本 相同,只是在前者的基础上增加一些属性和行为,只需在类 A的基础上增加一些新内容即可。这就是面向对象程序设计 中的继承机制。利用继承可以简化程序设计的步骤。C+提供了继承机制,采用继承的方法可以很方 便地利用一个已有的类建立一个新的类。这就是常说的“软 件重用” 的思想。25. 多态性 如果有几个相似而不完全相同的对象,有时人 们要求在向它们发出同一个消息时,它们的反应各不相同 ,分别执行不同的操作。这种情况就是多态现象。 如,在Windows环境下,用鼠标双击一个文件 对象(这就是向对象传送一个消息),如果对象是一个可执行 文件,则会执行此程序,如果对象是一个文本文件,则启 动文本编辑器并打开该文件。 在C+中,所谓多态性(polymorphism)是指: 由继承而产生的相关的不同的类,其对象对同一消息会作 出不同的响应。 多态性是面向对象程序设计的一个重要特征, 能增加程序的灵活性。3传统的面向过程程序设计是围绕功能进行的,用一个函数 实现一个功能。所有的数据都是公用的,一个函数可以使 用任何一组数据,而一组数据又能被多个函数所使用(见 图8.3)。面向对象程序设计的特点4l 面向对象程序设计采取的是另外一种思路。l 程序设计者的任务包括两个方面: 一是设计所需的各种类和对象,即决定把哪 些数据和操作封装在一起; 二是考虑怎样向有关对象发送消息,以完成 所需的任务。 这时它如同一个总调度,不断地向各个对象 发出命令,让这些对象活动起来(或者说激活这 些对象),完成自己职责范围内的工作。各个对 象的操作完成了,整体任务也就完成了。l 显然,对一个大型任务来说,面向对象程序设 计方法是十分有效的,它利用代码的重用,大大 降低程序设计人员的工作难度,减少出错机会。5l 类是C+中十分重要的概念,它是实现面向对象程序设计的基础 。l 类是所有面向对象的语言的共同特征,所有面向对象的语言都 提供了这种类型。一个有一定规模的C+程序是由许多类所构成的 。l 面向对象的软件工程是面向对象方法在软件工程领域的全面应 用。它包括:面向对象的分析(OOA)面向对象的设计(OOD)面向对象的编程(OOP)Object-Oriented Programming面向对象的测试(OOT)面向对象的软件维护(OOSM)类和对象的作用6l 类是用户自己定义的类型。如果程序中要用到类类型, 必须自己根据需要进行声明,或者使用别人已设计好的类 。 l 类(class)就是对象的类型。类是一种广义的数据类型。 类这种数据类型中的数据既包含数据,也包含操作数据的 函数。 l 不能把类中的全部成员与外界隔离,一般是把数据隐蔽 起来,而把成员函数作为对外界的接口。 class Student /声明类类型 private: /声明以下部分为私有的 int num; char name20; char sex; public: /声明以下部分为公用的 void display( ) couthourminutesec;int main() Time t1,t2; cout #include “student.h” /不要漏写此行,否则编译通不过 Using namespace std; void Studentdisplay( ) /在类外定义display类函数 cout #include “student.h” /将类声明头文件包含进来 /using namespace std; int main( ) Student stud; /定义对象stud.display( ); /执行stud对象的display函数return 0; 这是一个包括3个文件的程序,组成两个文件模块: 一个 是主模块main.cpp,一个是student.cpp。在主模块中又 包含头文件student.h。在预编译时会将头文件student.h 中的内容取代#include student.h行。16请注意: 由于将头文件student.h放在用户当前目录中, 因此在文件名两侧用双撇号包起来(student.h)而不用尖 括号(),否则编译时会找不到此文件。17l 由于要求接口与实现分离,为软件开发商向用户提供类 库创造了很好的条件。l 开发商把用户所需的各种类的声明按类放在不同的头文 件中,同时对包含成员函数定义的源文件进行编译,得到 成员函数定义的目标代码。软件商向用户提供这些头文件 和类的实现的目标代码(不提供函数定义的源代码)。l 用户在使用类库中的类时,只需将有关头文件包含到自 己的程序中,并且在编译后连接成员函数定义的目标代码 即可。l 由于类库的出现,用户可以像使用零件一样方便地使用 在实践中积累的通用的或专用的类,这就大大减少了程序 设计的工作量,有效地提高了工作效率。18l 在面向对象程序理论中, “方法”是指对数据的操作。 一个“方法”对应一种操作。显然,只有被声明为公用的方 法(成员函数)才能被对象外界所激活。l 外界是通过发“消息”来激活有关方法的。所谓“消息”, 其实就是一个命令,由程序语句来实现。stud.display( ); 就是向对象stud发出的一个“消息”,通知它执行其中的 display“方法”(即display函数)。l 上面这个语句涉及3个术语: 对象、方法和消息。stud 是对象,display( )是方法,语句“stud.display( );”是消 息。面向对象程序设计中的几个名词19例8.3 将程序用含成员函数的类来处理。 #include using namespace std; class Time public: void set_time( ); /公用成员函数 void show_time( ); /公用成员函数private: /数据成员为私有 int hour; int minute; int sec; ; int main( ) Time t1; /定义对象t1 t1.set_time( ); /调用对象t1的成员函数set_time,向t1的数据成员输入数 据t1.show_time( ); /调用对象t1的成员函数show_time,输出t1的数据成员的 值Time t2; /定义对象t2类和对象的简单应用举例20t2.set_time( ); /调用对象t2的成员函数set_time,向t2的数据成员输入数 据t2.show_time( ); /调用对象t2的成员函数show_time,输出t2的数据成员的 值return 0; void Timeset_time( ) /在类外定义set_time函数 cinhour;cinminute;cinsec; void Timeshow_time( ) /在类外定义show_time函数 cout using namespace std; class Array_max /声明类 public: /以下3行为成员函数原型声明 void set_value( ); /对数组元素设置值 void max_value( ); /找出数组中的最大元素 void show_value( ); /输出最大值 private: int array10; /整型数组 int max; /max用来存放最大值 ;void Array_max:set_value( ) /成员函数定义,向数组元素输入数值 int i; for (i=0;iarrayi; 22void Array_max:max_value( ) /成员函数定义,找数组元素中的最大 值 int i;max=array0;for (i=1;imax) max=arrayi; void Array_max:show_value( ) /成员函数定义,输出最大值 cout using namespace std; class Time public:Time( ) /定义构造成员函数,函数名与类名相同 hour=0; /利用构造函数对对象中的数据成员赋初值minute=0;sec=0; void set_time( ); /函数声明 void show_time( ); /函数声明 private: int hour; /私有数据成员 int minute; int sec; ;25void Timeset_time( ) /定义成员函数,向数据成员赋值 cinhour;cinminute;cinsec; void Timeshow_time( ) /定义成员函数,输出数据成员的值 cout using namespace std; class Box public:Box(int,int,int); /声明带参数的构造函数int volume( ); /声明计算体积的函数private:int height;int width;int length; ; BoxBox(int h,int w,int len) /在类外定义带参数的构造函数 height=h;width=w;length=len; int Boxvolume( ) /定义计算体积的函数 return(height*width
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号