面向对象程序设计中的概念课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《面向对象程序设计中的概念课件.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计中的概念课件.ppt(125页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.对象对象客观世界中任何一个事物都可以看成一个对象客观世界中任何一个事物都可以看成一个对象(object)。对象可大可小。对象是构成系统的基本单位。对象可大可小。对象是构成系统的基本单位。一个对象往往是由一组属性和一组行为构成的。一个对象往往是由一组属性和一组行为构成的。2.封装与信息隐蔽封装与信息隐蔽面向对象程序设计方法的一个重要特点就是面向对象程序设计方法的一个重要特点就是“封装性封装性”(encapsulation),所谓,所谓“封装封装”,指两方面的含义:,指两方面的含义:一、将有关的数据和操作代码封装在一个对象中,形成一个基一、将有关的数据和操作代码封装在一个对象中,形成一个基本单
2、位,各个对象之间相对独立,互不干扰。本单位,各个对象之间相对独立,互不干扰。二、将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下二、将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。少量接口,以便与外界联系,接收外界的消息。信息隐蔽还有利于数据安全,防止无关的人了解和修改数据。信息隐蔽还有利于数据安全,防止无关的人了解和修改数据。面向对象程序设计中的概念面向对象程序设计中的概念13.抽象抽象在程序设计方法中,常用到抽象在程序设计方法中,常用到抽象(abstraction)这一名)这一名词。抽象的过程是将有关事物的共性归纳、集中的过程。词。抽象的过程是
3、将有关事物的共性归纳、集中的过程。抽象的作用是表示同一类事物的本质。抽象的作用是表示同一类事物的本质。C+中的类就是中的类就是对一批具体的数的抽象。对一批具体的数的抽象。类是对象的抽象,而对象则是类的特例,或者说是类的类是对象的抽象,而对象则是类的特例,或者说是类的具体表现形式。具体表现形式。4.继承与重用继承与重用如果在软件开发中已经建立了一个名为如果在软件开发中已经建立了一个名为A的的“类类”,又,又想另外建立一个名为想另外建立一个名为B的的“类类”,而后者与前者内容基本相,而后者与前者内容基本相同,只是在前者的基础上增加一些属性和行为,只需在类同,只是在前者的基础上增加一些属性和行为,只
4、需在类A的基础上增加一些新内容即可。这就是面向对象程序设计中的基础上增加一些新内容即可。这就是面向对象程序设计中的继承机制。利用继承可以简化程序设计的步骤。的继承机制。利用继承可以简化程序设计的步骤。C+提供了继承机制,采用继承的方法可以很方便地利提供了继承机制,采用继承的方法可以很方便地利用一个已有的类建立一个新的类。这就是常说的用一个已有的类建立一个新的类。这就是常说的“软件重用软件重用”的思想。的思想。25.多态性多态性如果有几个相似而不完全相同的对象,有时人们要求如果有几个相似而不完全相同的对象,有时人们要求在向它们发出同一个消息时,它们的反应各不相同,分别在向它们发出同一个消息时,它
5、们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。执行不同的操作。这种情况就是多态现象。如,在如,在Windows环境下,用鼠标双击一个文件对象环境下,用鼠标双击一个文件对象(这这就是向对象传送一个消息就是向对象传送一个消息),如果对象是一个可执行文件,如果对象是一个可执行文件,则会执行此程序,如果对象是一个文本文件,则启动文本则会执行此程序,如果对象是一个文本文件,则启动文本编辑器并打开该文件。编辑器并打开该文件。在在C+中,所谓多态性中,所谓多态性(polymorphism)是指:是指:由继承由继承而产生的相关的不同的类,其对象对同一消息会作出不同而产生的相关的不同的类,其对象对
6、同一消息会作出不同的响应。的响应。多态性是面向对象程序设计的一个重要特征,能增加多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性。程序的灵活性。3传统的面向过程程序设计是围绕功能进行的,用一个函数传统的面向过程程序设计是围绕功能进行的,用一个函数实现一个功能。所有的数据都是公用的,一个函数可以使实现一个功能。所有的数据都是公用的,一个函数可以使用任何一组数据,而一组数据又能被多个函数所使用(见用任何一组数据,而一组数据又能被多个函数所使用(见图图8.3)。)。面向对象程序设计的特点面向对象程序设计的特点4l 面向对象程序设计采取的是另外一种思路。面向对象程序设计采取的是另外一种思路。
7、l 程序设计者的任务包括两个方面:程序设计者的任务包括两个方面:一是设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;二是考虑怎样向有关对象发送消息,以完成所需的任务。这时它如同一个总调度,不断地向各个对象发出命令,让这些对象活动起来(或者说激活这些对象),完成自己职责范围内的工作。各个对象的操作完成了,整体任务也就完成了。l 显然,对一个大型任务来说,面向对象程序设显然,对一个大型任务来说,面向对象程序设计方法是十分有效的,它利用代码的重用,大大计方法是十分有效的,它利用代码的重用,大大降低程序设计人员的工作难度,减少出错机会。降低程序设计人员的工作难度,减少出错机会。5l 类是类是
8、C+中十分重要的概念,它是实现面向对象程序设计的基础。中十分重要的概念,它是实现面向对象程序设计的基础。l 类是所有面向对象的语言的共同特征,所有面向对象的语言都提类是所有面向对象的语言的共同特征,所有面向对象的语言都提供了这种类型。一个有一定规模的供了这种类型。一个有一定规模的C+程序是由许多类所构成的。程序是由许多类所构成的。l 面向对象的软件工程是面向对象方法在软件工程领域的全面应用。面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括它包括:面向对象的分析(OOA)面向对象的设计(OOD)面向对象的编程(OOP)Object-Oriented Programming面向对象
9、的测试(OOT)面向对象的软件维护(OOSM)类和对象的作用类和对象的作用6l 类是用户自己定义的类型。如果程序中要用到类类型,必类是用户自己定义的类型。如果程序中要用到类类型,必须自己根据需要进行声明,或者使用别人已设计好的类。须自己根据需要进行声明,或者使用别人已设计好的类。l 类类(class)就是对象的类型。类是一种广义的数据类型。就是对象的类型。类是一种广义的数据类型。类这种数据类型中的数据既包含数据,也包含操作数据的类这种数据类型中的数据既包含数据,也包含操作数据的函数。函数。l 不能把类中的全部成员与外界隔离,一般是把数据隐蔽不能把类中的全部成员与外界隔离,一般是把数据隐蔽起来,
10、而把成员函数作为对外界的接口。起来,而把成员函数作为对外界的接口。class Student /声明类类型声明类类型 private:/声明以下部分为私有的声明以下部分为私有的int num;char name20;char sex;public:/声明以下部分为公用的声明以下部分为公用的void display()coutnum:numendl;coutname:nameendl;coutsex:sexendl;Student stud1,stud2;/定义了两个定义了两个Student 类的对象类的对象声明类类型声明类类型7l 类的成员函数类的成员函数(简称类函数简称类函数)是函数的一种,
11、它的用法和作用是函数的一种,它的用法和作用和函数基本上是一样的,它也有返回值和函数类型。和函数基本上是一样的,它也有返回值和函数类型。l 它与一般函数的区别只是:它与一般函数的区别只是:它是属于一个类的成员,出现在它是属于一个类的成员,出现在类体中。类体中。l一般的做法是将需要被外界调用的成员函数指定为一般的做法是将需要被外界调用的成员函数指定为public,它们是类的对外接口。它们是类的对外接口。l 注意,并非要求把所有成员函数都指定为注意,并非要求把所有成员函数都指定为public。有的函数。有的函数并不是准备为外界调用的,而是为本类中的成员函数所调用的,并不是准备为外界调用的,而是为本类
12、中的成员函数所调用的,就应该将它们指定为就应该将它们指定为private。这种函数的作用是支持其他函数。这种函数的作用是支持其他函数的操作,是类中其他成员的工具函数的操作,是类中其他成员的工具函数(utility function),类,类外用户不能调用这些私有的工具函数。外用户不能调用这些私有的工具函数。l 类的成员函数是类体中十分重要的部分。如果一个类中不包类的成员函数是类体中十分重要的部分。如果一个类中不包含成员函数,就等同于含成员函数,就等同于C语言中的结构体了,体现不出类在面语言中的结构体了,体现不出类在面向对象程序设计中的作用。向对象程序设计中的作用。类的成员函数类的成员函数成员函
13、数的性质成员函数的性质8在前面的成员函数是在类体中定义的。也可以在类体中只写在前面的成员函数是在类体中定义的。也可以在类体中只写成员函数的声明,而在类的外面进行函数定义。如成员函数的声明,而在类的外面进行函数定义。如:class Student public:void display();/公用成员函数原型声明公用成员函数原型声明 private:int num;string name;char sex;/以上以上3行是私有数据成员行是私有数据成员 ;void Student display()/在类外定义在类外定义display类函数类函数 coutnum:numendl;/函数体函数体 c
14、outname:nameendl;coutsex:sexhourminutesec;int main()Time t1,t2;coutsizeof(Time)endl;coutsizeof(t1)endl;coutsizeof(t1)endl;return 0;12l C+通过类来实现封装性,把数据和与这些数据有关的操作封通过类来实现封装性,把数据和与这些数据有关的操作封装在一个类中。装在一个类中。l 公用成员函数是用户使用类的公用接口公用成员函数是用户使用类的公用接口,或称类的对外接口。或称类的对外接口。类中被操作的数据是私有的,实现的细节对用户是隐蔽的,这类中被操作的数据是私有的,实现的细
15、节对用户是隐蔽的,这种实现称为私有实现种实现称为私有实现(private implementation)。这种这种“类的类的公用接口与私有实现的分离公用接口与私有实现的分离”形成了信息隐蔽。形成了信息隐蔽。软件工程的一个最基本的原则就是将接口与实现分离,它的好软件工程的一个最基本的原则就是将接口与实现分离,它的好处在于:处在于:(1)如果想修改或扩充类的功能,只需修改本类中有关的数据成如果想修改或扩充类的功能,只需修改本类中有关的数据成员和与它有关的成员函数,程序中类外的部分可以不必修改。员和与它有关的成员函数,程序中类外的部分可以不必修改。(2)如果在编译时发现类中的数据读写有错,不必检查整
16、个程序,如果在编译时发现类中的数据读写有错,不必检查整个程序,只需检查本类中访问这些数据的少数成员函数。只需检查本类中访问这些数据的少数成员函数。类的封装性和信息隐蔽类的封装性和信息隐蔽 公用接口与私有实现的分离公用接口与私有实现的分离13l 在面向对象的程序开发中,在面向对象的程序开发中,一般做法是将类的声明放在一般做法是将类的声明放在指定的头文件中指定的头文件中,用户如果想用该类,只要把有关的头文,用户如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,提高件包含进来即可,不必在程序中重复书写类的声明,提高编程的效率。编程的效率。l 由于在头文件中包含了类的声明,因
17、此在程序中就可以由于在头文件中包含了类的声明,因此在程序中就可以用该类来定义对象。由于在类体中包含了对成员函数的声用该类来定义对象。由于在类体中包含了对成员函数的声明,在程序中就可以调用这些对象的公用成员函数。为了明,在程序中就可以调用这些对象的公用成员函数。为了实现信息隐蔽,对类成员函数的定义一般不放在头文件中,实现信息隐蔽,对类成员函数的定义一般不放在头文件中,而另外放在一个文件中。而另外放在一个文件中。类声明和成员函数定义的分离类声明和成员函数定义的分离14/student.h (头文件可以包括头文件可以包括:外部变量声明、函数原型声明、类声明、常外部变量声明、函数原型声明、类声明、常量
18、声明、内联函数和量声明、内联函数和typedef声明,该头文件则进行类的声明声明,该头文件则进行类的声明)class Student /类声明类声明 public:void display();/公用成员函数原型声明公用成员函数原型声明private:int num;char name20;char sex;/student.cpp /在此文件中进行函数的定义在此文件中进行函数的定义#include#include“student.h”/不要漏写此行,否则编译通不过不要漏写此行,否则编译通不过Using namespace std;void Student display()/在类外定义在类外
19、定义display类函数类函数coutnum:numendl;coutname:nameendl;coutsex:sexendl;类声明和成员函数定义的分离类声明和成员函数定义的分离15为了组成一个完整的源程序,还应当有包括主函数的源文为了组成一个完整的源程序,还应当有包括主函数的源文件:件:/main.cpp 主函数模块主函数模块/#include#include“student.h”/将类声明头文件包含进来将类声明头文件包含进来/using namespace std;int main()Student stud;/定义对象定义对象 stud.display();/执行执行stud对象的对
20、象的display函数函数 return 0;这是一个包括这是一个包括3个文件的程序,组成两个文件模块:个文件的程序,组成两个文件模块:一个是一个是主模块主模块main.cpp,一个是,一个是student.cpp。在主模块中又包。在主模块中又包含头文件含头文件student.h。在预编译时会将头文件。在预编译时会将头文件student.h中中的内容取代的内容取代#include student.h行。行。16请注意:请注意:由于将头文件由于将头文件student.h放在用户当前目录中,因放在用户当前目录中,因此在文件名两侧用双撇号包起来此在文件名两侧用双撇号包起来(student.h)而不用
21、尖而不用尖括号括号(),否则编译时会找不到此文件。,否则编译时会找不到此文件。17l 由于要求接口与实现分离,为软件开发商向用户提供类由于要求接口与实现分离,为软件开发商向用户提供类库创造了很好的条件。库创造了很好的条件。l 开发商把用户所需的各种类的声明按类放在不同的头文开发商把用户所需的各种类的声明按类放在不同的头文件中,同时对包含成员函数定义的源文件进行编译,得到件中,同时对包含成员函数定义的源文件进行编译,得到成员函数定义的目标代码。软件商向用户提供这些头文件成员函数定义的目标代码。软件商向用户提供这些头文件和类的实现的目标代码和类的实现的目标代码(不提供函数定义的源代码不提供函数定义
22、的源代码)。l 用户在使用类库中的类时,只需将有关头文件包含到自用户在使用类库中的类时,只需将有关头文件包含到自己的程序中,并且在编译后连接成员函数定义的目标代码己的程序中,并且在编译后连接成员函数定义的目标代码即可。即可。l 由于类库的出现,用户可以像使用零件一样方便地使用由于类库的出现,用户可以像使用零件一样方便地使用在实践中积累的通用的或专用的类,这就大大减少了程序在实践中积累的通用的或专用的类,这就大大减少了程序设计的工作量,有效地提高了工作效率。设计的工作量,有效地提高了工作效率。18l 在面向对象程序理论中,在面向对象程序理论中,“方法方法”是指对数据的操作。是指对数据的操作。一个
23、一个“方法方法”对应一种操作。显然,只有被声明为公用的对应一种操作。显然,只有被声明为公用的方法(成员函数)才能被对象外界所激活。方法(成员函数)才能被对象外界所激活。l 外界是通过发外界是通过发“消息消息”来激活有关方法的。所谓来激活有关方法的。所谓“消息消息”,其实就是一个命令,由程序语句来实现。,其实就是一个命令,由程序语句来实现。stud.display();就是向对象就是向对象stud发出的一个发出的一个“消息消息”,通知它执行其中,通知它执行其中的的display“方法方法”(即(即display函数)。函数)。l 上面这个语句涉及上面这个语句涉及3个术语:个术语:对象、方法和消息
24、。对象、方法和消息。stud是对象,是对象,display()是方法,语句是方法,语句“stud.display();”是是消息。消息。面向对象程序设计中的几个名词面向对象程序设计中的几个名词19例例8.3 将程序用含成员函数的类来处理。将程序用含成员函数的类来处理。#include using namespace std;class Timepublic:void set_time();/公用成员函数公用成员函数void show_time();/公用成员函数公用成员函数 private:/数据成员为私有数据成员为私有int hour;int minute;int sec;int main(
25、)Time t1;/定义对象定义对象t1 t1.set_time();/调用对象调用对象t1的成员函数的成员函数set_time,向,向t1的数据成员输入数据的数据成员输入数据 t1.show_time();/调用对象调用对象t1的成员函数的成员函数show_time,输出,输出t1的数据成员的值的数据成员的值 Time t2;/定义对象定义对象t2类和对象的简单应用举例类和对象的简单应用举例20 t2.set_time();/调用对象调用对象t2的成员函数的成员函数set_time,向,向t2的数据成员输入数据的数据成员输入数据 t2.show_time();/调用对象调用对象t2的成员函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 中的 概念 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内