第四讲:面向对象程序设计方法及类、对象的概念

上传人:大米 文档编号:431991904 上传时间:2023-12-11 格式:DOCX 页数:15 大小:58.31KB
返回 下载 相关 举报
第四讲:面向对象程序设计方法及类、对象的概念_第1页
第1页 / 共15页
第四讲:面向对象程序设计方法及类、对象的概念_第2页
第2页 / 共15页
第四讲:面向对象程序设计方法及类、对象的概念_第3页
第3页 / 共15页
第四讲:面向对象程序设计方法及类、对象的概念_第4页
第4页 / 共15页
第四讲:面向对象程序设计方法及类、对象的概念_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《第四讲:面向对象程序设计方法及类、对象的概念》由会员分享,可在线阅读,更多相关《第四讲:面向对象程序设计方法及类、对象的概念(15页珍藏版)》请在金锄头文库上搜索。

1、第四讲:面向对象程序设计方法及类、对象的概念本讲基本要求掌握:面向对象程序设计的方法及特点;类的声明的对象的定义理解:对 象的封装、抽象、继承与多态性四个特快性的概念;类和对象的作用;面向对象 和面向过程的程序构成。了解:面向对象的软件开发。重点、难点: 面向对象程序设计的方法及特点;类的声明的对象的定义; 类成员函数的性质、定义及存贮方式。一、面向对象程序设计方法概述对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详 细地描述每一瞬时的数据结构及对其的操作过程。但是当程序规模较大时,就显 得力不从心了。C+就是为了解决编写大程序过程中的困难而产生的。1、什么是面向对象的程序设计

2、问题提出:对于规模比较小的程序,编程者可以直接编写出一个面向过程 的程序,详细地描述每一瞬时的数据结构及对其的操作过程。但是当程序规模较 大时,就显得力不从心了。C+就是为了解决编写大程序过程中的困难而产生的。解决方法:面向对象的程序设计的思路和人们日常生活中处理问题的思路是相似的。在自然世界和社会生活中,个复杂的事物总是由许多部分组成的。当人们生产汽车时,并不是先设计和制造发动机,再设计和制造底盘,然后 设计和制造车身和轮子,而是分别设计和制造发动机、底盘、车身和轮子,最后 把它们组装在一起。在组装时,各部分之间有定的联系,以便协调工作。例如 驾驶员踩油门,就能调节油路,控制发动机的转速,驱

3、动车轮转动。这就是面向 对象的程序设计的基本思路。面先讨论几个有关的概念。对象定义:客观世界中任何一个事物都可以抽象的看成一个对象(objec t)。或者说,客 观世界是由千千万万个对象组成的。对象可以是自然物体(如汽车、房屋、狗熊), 也可以是社会生活中的一种逻辑结构(如班级、支部、连队),甚至一篇文章、一 个图形、一项计划等都可视作对象。说明:1、对象可大可小。2、对象可以是自然体也可以是逻辑体。3、对象可以嵌套。4、对象有两个要素:静态特征称为属性(attribute),动态特征称为行为(behavior)。5、控制行为改变的因素称之为消息。要使某一个对象实现某一种行为(即操作) ,应当

4、向它传送相应的消息。討空2/-I變-I图 2.1面向对象的程序设计采用了以上人们所熟悉的这种思路。使用面向对象的程 序设计方法设计一个复杂的软件系统时,首要的问题是确定该系统是由哪些对象 组成的,并且设计这些对象。在C+中,每个对象都是由数据和函数(即操作代 码)这两部分组成的,见图2。封装与信息隐蔽1. 可以对一个对象进行封装处理,把它的部分属性和功能对外界屏蔽,也 就是说从外界是看不到的,甚至是不可知的。2. 对象进行封装处理做的好处是大大降低了人们操作对象的复杂程度,使用 对象的人完全可以不必知道对象内部的具体细节,只需了解其外部功能即 可自如地操作对象。3. 在设计一个对象时,要周密地

5、考虑如何进行封装,把不必要让外界知道的 部分“隐蔽”起来。也就是说,把对象的内部实现和外部行为分隔开来。 人们在外部进行控制,而具体的操作细节是在内部实现的,对外界是不透 明的。定义:“封装”-指两方面的含义:一是将有关的数据和操作代码封装在一个对 象中,形成一个基本单位,各个对象之间相对独立,互不于扰。二是将对象中某 些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收 外界的消息。这种对外界隐蔽的做法称为信息隐蔽(information hiding)。信息 隐蔽还有利于数据安全,防止无关的人了解和修改数据。抽象在程序没计方法中,常用到抽象(abs trac tion )

6、这一名词。其实“抽象”这概念并不抽象,是很具体的,人们对之是司空见惯的。例如,我们常用的名 词“人”,就是一种抽象。定义:抽象的过程是将有关事物的共性归纳、集中的过程。说明:1、抽象的作用是表示同类事物的本质。2、对象是具体存在的,在C+中,可以将对象抽象类型定义为“类(class)”。类是对象的抽象,而对象则是类的特例,或者说是类的具体表现形式。继承与重用C+提供了继承机制,采用继承的方法可以很方便地利用一个已确的类建立 一个新的类,这就可以重用已有软件中的一部分甚至大部分,大大节省了编程工 作量。这就是常说的“软件重用(software reusability)的思想,不仅可以利用 自己过

7、去所建立的类、而且可以利用别人使用的类或存放在类库中的类,对这些 类作适当加工即可使用,大大缩短了软件开发周期,对于大型软件的开发具有重 要意义。多态性定义:多态性(polymorphism)是指由继承而产生的相关的不同的类,其对象对同 一消息会作出不同的响应。说明:多态性是面向对象程序设计的个重要特征,能增加程序的灵活性。2、面向对象程序设计的特点图3面向对象程序设计采取的是另外一种思路。它面对的是一个个对象。实际 上,每一组数据都是有特定的用途的,是某种操作的对象。也就是说,一组操作 调用一组数据。例如a, b, c是三角形的三边,只与计算三角形面积和输出三角 形的操作有关,与其他操作无关

8、。我们就把这 3 个数据和对三角形的操作代码放 在一起,封装成一个对象,与外界相对分隔,正如一个家庭的人生活在一起,与 外界相对独立一样。这是符合客观世界本来面目的。程序设计者的任务包括两个方面:1、设计所需的各种类和对象,即决定把哪些数据和操作封装在一起。2、考虑怎样向有关对象发送消息,以完成所需的任务。3、C与C+程序(类和对象的作用)1、C+对C的改进,最重要的就是增加了 “类”这样一种类型。所以C+开始时被称为“带类的 c”。2、C+支持面向过程的程序设计,也支持基于对象和面向对象的程序设计。3、基于对象就是基于类。与面向过程的程序不同,基于对象的程序是以类 和对象为基础的,程序的操作

9、是围绕对象进行的。在此基础上利用了继承机制和 多态性,就成为面向对象的程序设计。4、基于对象程序设计所面对的是一个个对象。所有的数据分别属于不同的 对象。人们设想把相关的数据和操作放在一起,形成个整体,与外界相对分隔。 这就是面向对象的程序设计中的对象。面向过程的结构化程序设计中:程序=算法+数据结构说明:算法和数据结构两者是互相独立、分开设计的,面向过程的程序设计是以算法为主体的。基于对象和面向对象程序设计中:对象=算法+数据结构程序=(对象+对象+对象+)+消息 或:程序二对象S+消“对象s”表示多个对象。消息的作用就是对对象的控制。程序设计的关键 是设计好每一个对象,以及确定向这些对象发

10、出的命令,使各对象完成相应的操 作。4、面向对象的软件开发在以前软件开发所面临的问题比较简单,从任务分析到编写程序,再到程序 的调试,难度都不太大,可以由一个人或一个小组来完成。随着软件规模的迅速 增大,软件人员面临的问题十分复杂,需要考虑的因素很多,在个软件中所产 生的错误和隐藏的错误可能达到惊人的程度,这不是程序没计阶段所能解决的。 需要规范整个软件开发过程,明确软件开发过程中每个阶段的任务,在保证前一 个阶段工作的正确性的情况下,再进行下一阶段的工作。这就是软件工程学需要 研究和解决的问题。 面向对象的软件工程包括以下几个部分:1. 面向对象分析(object oriented anal

11、ysis, OOA)2. 面向对象设计(Object oriented design, OOD)3. 面向对象编程(object oriented programming, OOP)4. 面向对象测试(object oriented test, OOT)5面向对象维护(Object oriented soft maintenance, OOSM)二、类的声明和对象的定义 1、类的对象的关系(事物的抽象与抽象事物的实例)对象(object)-每一个实体都可以作为对象。类(class)-类代表了某一批对象的共性和特征。1、类是对象的类型。2、类是一批有共性和特征的对象3、类是对象的抽象,而对象是类

12、的实例。4、类是对象的模板。5、对象是类的一个变量。2、声明类类型类是用户自己指定的类型。如果程序中要用到类类型,必须自己根据需要进 行声明,或者使用别人已设计好的类。C+标准本身并不提供现成的类的名称、 结构和内容。在C+中怎样声明一个类类型呢?其方法和声明一个结构体类型是相似的。声明一个结构体类型的方法:struct Student/ 声明了一个名为 Student 的结构体类型 int num;char name20;char sex;Studentstudl, stud2; /定义了两个结构体变量 studl 和 stud2 声明一个类类型的方法: class Student/以 cl

13、ass 开头 int num ;char name20;char sex;/以上 3 行是数据成员void display() /这是成员函数 toutname: name endl ;cout sex: sexeadl; /以上 4 行是函数中的操作语句;Student studl,stud2; /定义两个 Student 类的对象 studl 和 smd2可以将上面类的声明改为class Student /声明类类型 private : /声明以下部分为私有的int num;char name20char sex;public: /声明以下部分为公用的void display() cout

14、mum:nurnetldl ;coutname:nameendl;coutsex:sexendl;Student studl,stud2; /定义了两个 Student 类的对象现在声明了dlspllay 函数是公用的,外界就可以调用该函数了。归纳以上对类类型的声明,可以得到其一般形式如下:class 类名 private :私有的数据和成员函数;public :公用的数据和成员函数;说明:1、private 和 public 称为成员访问限定符(member accesss pecifier)。2、除了 private和public之外,还有一种成员访问限定符protected(受保 护的)

15、,用pro tec ted声明的成员称为受保护的成员,它不能被类外访问(这点与 私有成员类似),但可以被派生类的成员函数访问。3、在声明类类型时,声明为private的成员和声明为public的成员的次序 任意,在一个类体中不一定都包含 private 和 public 部分。在一个类体中,关 键字private和public可以分别出现多次,即一个类体可以包含多个private 和 public 部分。4、在以前的C+程序中,常先出现private部分,后出现public部分。5、在C+程序中,经常可以看到类。常用的C+编译系统往往向用户提供类 库(但不属于C+语言的组成部分),内装常用的基本的类,供用户使用。不少用 户也把自己或本单位经常用到的类放在一个专门的类库中,需要用时直接调用, 这样就减少了程序设计的工作量。3、定义对象的方法定义对象也可以有几种方法。先声明类类型,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号