面向对象程序设计.ppt
《面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计.ppt(18页珍藏版)》请在课桌文档上搜索。
1、第10章 面向对象程序设计,教学目的:了解面向对象程序设计的编程思想了解面向对象程序设计的基本概念了解面向对象程序设计的基本方法和实现了解面向对象的软件开发,教学内容:结构化程序设计与面向对象程序设计面向对象程序设计的基本概念面向对象程序设计的基本特定类和对象继承和派生多态性面向对象的软件开发,10.1 结构化程序设计与面向对象程序设计,10.1.1 结构化程序设计与面向对象程序设计概述,结构化程序设计的思路:自顶向下、逐步求精,其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;每模块内部均是由顺序、选择和循环三种基本结构组成;模块
2、实现的方法是调用子模块。优点:有效的将一个复杂的程序系统设计任务分解成易于控制和处理的子任务,便于开发和维护。缺点:把数据和处理数据的过程分离为相互独立的实体,当数据结构发生改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。,面向对象的程序设计是由对象组合而成的,其中对象是用类来定义的,程序之间的交互主要是通过对象与对象之间的消息传递进行操作的。软件开发从本质上讲,就是对软件所要处理的问题域进行正确的认识,并把这种认识正确的描述出来。面向对象方法所强调的基本原则,就是直接面对客观存在的事务进行软件开发,将人们日常生活的习惯的思维方式和
3、表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧回到客观世界,回到人们通常的思维方式。,10.1.2 结构化程序设计和面向对象程序设计解决问题的比较,解决一个设置时钟的时间,并显示出来的问题。,用结构化程序设计的方法,把各步骤分解出来做成由几个函数来解决问题,步骤如下:(1)建立结构(2)定义全局变量(3)定义设置时间函数(4)定义显示时间函数(5)定义主程序,分别调用相关函数,#includestruct time int hour,minute,second;t1;void showtime()printf(%d:%d:%dn,t1.hour,t1.minute,t1.s
4、econd);void settime(int hour,int minute,int second)t1.hour=hour;t1.minute=minute;t1.second=second;void main()settime(8,30,30);showtime();,#includeclass Clockprivate:int hour,minute,second;public:Clock()/构造函数完成数据成员的初始化 hour=0;minute=0;second=0;void settime(int h,int m,int s)/设置时间的函数 hour=h;minute=m;s
5、econd=s;void showtime()/显示时间的函数 couthour:minute:secondendl;void main()/主函数的定义 Clock c1;c1.settime(8,30,30);c1.showtime();,面向对象的程序设计的思路:把时钟问题用Clock类来实现,在主函数中,用户只需要使用Clock类设计其对象,只要明确知道Clock类的外部接口函数,也就是操作该对象的方法settime()和showtime()就可以了,至于Clock类的内部实现,使用者一概不需要知道,知道接口和接口方法是什么,只须拿来用就可以了。这样的程序设计很好的保护了各类成员数据的
6、安全,主函数代码调用极其简单,只有建立对象和调用对象方法的操作这两步而已。以后类一旦需要修改,只修改类体本身就可以,而主函数不需要做任何修改,这样就很好的做到了什么人做的事情什么人处理,互不冲突。,10.2 面向对象程序设计的基本概念,面向对象的思想认为,客观世界是由各种各样的对象构成的,每种对象都有各自的属性和行为,不同对象之间的相互作用和联系构成了不同的系统。面向对象的方法就是要面对现实世界的实体,并将其抽象为对象,以对象为基本单位,分析、设计和实现一个系统。,(1)对象对象是指现实世界中无所不在的各种各样的实体。每一个实体包括特定的静态的属性和动态的行为,在面向对象的程序设计中将该实体的
7、属性(用数据成员表示)和行为(用操作数据的函数成员表示)封装在一个整体里;每一个实体都有所属的类,在该类中还有许多其它的不同实体,因此在建立对象时,必须给对象赋予唯一的标识符,用来标识该对象。,(3)消息消息是向某对象请求服务的一种表达式,如果用户或其他对象提出服务请求,便可以称为向该对象发送消息。在面向对象的程序中,程序执行是靠对象之间传递消息来完成的。消息实现了对象与外界、对象于其他对象之间的联系,消息传递组成部分:接收消息的对象、请求对象的方法和一个或多个参数。,(2)类类是对一组对象共同具有的属性和行为的抽象,它提供了一个具有特定功能的模块和一种代码共享的手段。类是实现数据抽象和封装的
8、工具。类是一组对象的抽象,而对象则是类的一个实例。在程序中,从语法来看,类和对象的关系相当于数据类型和变量的关系。,(4)方法方法是一个函数成员,是对某个对象接受了某一消息后所采取的一系列操作的描述。,10.3 面向对象程序设计的基本特点,(1)抽象性:抽象是指忽略一类事物中与当前处理问题的主题无关的细节,包括数据抽象和代码抽象两方面,数据抽象定义了对象的属性,而代码抽象则定义了某类对象的共同行为特征。在面向对象的程序设计中,类是实现抽象的工具。(2)封装性:封装是将抽象得到的数据和代码集合在一个整体里的过程,它还具有对内部细节隐藏保护的能力,类内某些成员可以以对外隐藏的属性被保护起来。在C+
9、的内部,类是实现封装的工具,封装保证了类具有较好的独立性,防止外部程序破坏类的内部数据,同时便于程序的维护和修改。,(3)继承性:继承是一个形象的、易于理解的术语。比如子承父业、继承遗产等都涵盖了这一名词所连接的两个类层次之间的关系,既继承者拥有被继承者所有的相关属性及行为。在面向对象程序设计中,继承是一种连接类与类的层次模型,利用现有类派生新类的过程称为类的继承。新类(子类或称为派生类)拥有原有类(父类或称为基类)的特性,又增加了自身新的特性,设计程序时,只需对新增加的内容或是原内容的修改设计代码。除了共享机制,继承还具有传递机制,即最下层的子类可继承其上各层父类的全部特性。可见,继承性显著
10、简化了类和对象的创建工作量,并进一步增强了代码的可重用率,从而大大提高了软件的开发效率和系统的可靠性。,(4)多态性:多态性是指发出同样的消息被不同类型对象接收时导致的完全不同的行为,即当向不同的对象发出相同的服务请求时,会得到不同的响应。多态性允许每个对象以适合自身的方式去响应共同的消息,不必为相同的功能的操作作用于不同的对象而去特意识别,为软件开发和维护提供了极大的方便。多态性还增强了软件的灵活性和重用性,允许用户以更明确、更易懂的方式建立通用软件。多态性通常表现为:函数重载、运算符重载和虚函数。,10.4 类和对象,类是面向对象程序设计方法的核心,利用它可以实现对数据的封装、隐藏,通过类
11、的继承与派生,能够实现对问题的深入抽象的描述。类是逻辑上相关的函数与数据的封装,它是对所要处理的问题的抽象描述,类的集成程度高,适应大型复杂程序的开发。从数据类型的角度出发,类实际上相当于用户自定义的类型,它和我们前面学习的基本类型,如整型、实型有类似的特征。同样,我们可以声明某个类类型的变量,这个变量称为类的对象(或实例),这个声明的过程称为类的实例化。类和基本类型的不同之处在于,类这个特殊类型中同时包含了对数据进行操作的函数。,10.4.1 类的定义,在C+中,类定义的一般形式如下:,class 类标识符 public:成员函数或数据成员说明;private:成员函数或数据成员说明;pro
12、tected:成员函数或数据成员说明;;,(1)class为类的关键字,其后跟的类标识符为类名;(2)类的定义包括说明和实现部分,说明部分用来说明类的成员,实现部分用来定义成员函数,若成员函数在说明部分已经给出定义,则实现部分可以省略;(3)类的成员包括数据成员和函数成员(方法),数据成员主要描述本类事物的静态属性,函数成员是本类事物所具有的行为;(4)public(公有)、private(私有)、protected(保护)被称为访问权限修饰符,出现的顺序、次数没有规定,缺省是为private,它们决定了其后的成员的访问属性;(5)类的数据成员在声明时不能进行初始化。,#includeclas
13、s Clock int hour,minute,second;public:void settime(int h,int m,int s);void showtime();void clock:settime(int h,int m,int s)hour=h;minute=m;second=s;void clock:showtime()couthour:minute:secondendl;void main()/主函数的定义 Clock c1;c1.settime(8,30,30);c1.showtime();,10.4.2 对象的定义,类定义仅仅提供了一种类型定义,它本身不占用存储空间,只有
14、在定义了属于类的变量后,系统才会为其分配空间,这种变量称为对象。对象是类的实例,存储着特定的信息和作用于这些信息之上的特定操作。,2对象成员引用(1)一般对象成员引用 数据成员:对象名.成员名函数成员:对象名.成员名(参数列表)(2)通过指针引用对象成员 数据成员:对象指针名成员名 或:(*对象指针名).成员名函数成员:对象指针名成员名(参数列表)或:(*对象指针名).成员名(参数列表),1定义形式类名 对象名表列;例如,Clock是已经定义过的一个时钟类,则可定义:Clock c1,c5,*p;其中,c1是一个Clock类的对象,可以用来描述一个具体的时钟,c5则表示一个包含5个对象的对象数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计
链接地址:https://www.desk33.com/p-263548.html