第四讲:面向对象程序设计方法及类、对象的概念
本文关键词:面向对象程序设计
本讲基本要求
对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详细地描述每一瞬时的数据结构及对其的操作过程。但是当程序规模较大时,就显得力不从心了。C++就是为了解决编写大程序过程中的困难而产生的。
面向对象的程序设计的思路和人们日常生活中处理问题的思路是相似的。在自然世界和社会生活中,—个复杂的事物总是由许多部分组成的。
当人们生产汽车时,并不是先设计和制造发动机,再设计和制造底盘,然后设计和制造车身和轮子,而是分别设计和制造发动机、底盘、车身和轮子,最后把它们组装在一起。在组装时,各部分之间有—定的联系,以便协调工作。例如驾驶员踩油门,就能调节油路,控制发动机的转速,驱动车轮转动。这就是面向对象的程序设计的基本思路。
下面先讨论几个有关的概念。
客观世界中任何一个事物都可以抽象的看成一个对象(object)。或者说,客观世界是由千千万万个对象组成的。对象可以是自然物体(如汽车、房屋、狗熊),也可以是社会生活中的一种逻辑结构(如班级、支部、连队),甚至一篇文章、一个图形、一项计划等都可视作对象。
2、对象可以是自然体也可以是逻辑体。
4、对象有两个要素:静态特征称为属性(attribute),动态特征称为行为(behavior)。
5、控制行为改变的因素称之为消息。要使某一个对象实现某一种行为(即操作),应当向它传送相应的消息。
图2.2
面向对象的程序设计采用了以上人们所熟悉的这种思路。使用面向对象的程序设计方法设计一个复杂的软件系统时,首要的问题是确定该系统是由哪些对象组成的,并且设计这些对象。在C++中,每个对象都是由数据和函数(即操作代码)这两部分组成的,见图2。
⑵封装与信息隐蔽
“封装”---指两方面的含义:一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不于扰。二是将对象中某些部分对外隐蔽,即隐蔽其内部细节,,只留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐蔽的做法称为信息隐蔽(information hiding)。信息隐蔽还有利于数据安全,防止无关的人了解和修改数据。
⑶抽象
抽象的过程是将有关事物的共性归纳、集中的过程。
说明:
2、对象是具体存在的,在C++中,可以将对象抽象类型定义为“类(class)”。类是对象的抽象,而对象则是类的特例,或者说是类的具体表现形式。
⑷继承与重用
C++提供了继承机制,采用继承的方法可以很方便地利用一个已确的类建立一个新的类,这就可以重用已有软件中的一部分甚至大部分,大大节省了编程工作量。这就是常说的“软件重用(software reusability)的思想,不仅可以利用自己过去所建立的类、而且可以利用别人使用的类或存放在类库中的类,对这些类作适当加工即可使用,大大缩短了软件开发周期,对于大型软件的开发具有重要意义。
⑸多态性
多态性(polymorphism)是指由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。
说明:
多态性是面向对象程序设计的—个重要特征,能增加程序的灵活性。
2、面向对象程序设计的特点
图3
面向对象程序设计采取的是另外一种思路。它面对的是一个个对象。实际上,每一组数据都是有特定的用途的,是某种操作的对象。也就是说,一组操作调用一组数据。例如a,b,c是三角形的三边,只与计算三角形面积和输出三角形的操作有关,与其他操作无关。我们就把这3个数据和对三角形的操作代码放在一起,封装成一个对象,与外界相对分隔,正如一个家庭的人生活在一起,与外界相对独立一样。这是符合客观世界本来面目的。
程序设计者的任务包括两个方面:
1、设计所需的各种类和对象,即决定把哪些数据和操作封装在一起。
2、考虑怎样向有关对象发送消息,以完成所需的任务。
1、C++对C的改进,最重要的就是增加了“类”这样一种类型。所以C++开始时被称为“带类的c”。
2、C++支持面向过程的程序设计,也支持基于对象和面向对象的程序设计。
3、基于对象就是基于类。与面向过程的程序不同,基于对象的程序是以类和对象为基础的,程序的操作是围绕对象进行的。在此基础上利用了继承机制和多态性,就成为面向对象的程序设计。
4、基于对象程序设计所面对的是一个个对象。所有的数据分别属于不同的对象。人们设想把相关的数据和操作放在一起,形成—个整体,与外界相对分隔。这就是面向对象的程序设计中的对象。
面向过程的结构化程序设计中: 程序=算法+数据结构
说明:
算法和数据结构两者是互相独立、分开设计的,面向过程的程序设计是以算法为主体的。
基于对象和面向对象程序设计中:
“对象s”表示多个对象。消息的作用就是对对象的控制。程序设计的关键是设计好每一个对象,以及确定向这些对象发出的命令,使各对象完成相应的操作。
4、面向对象的软件开发
在以前软件开发所面临的问题比较简单,从任务分析到编写程序,再到程序的调试,难度都不太大,可以由一个人或一个小组来完成。随着软件规模的迅速增大,软件人员面临的问题十分复杂,需要考虑的因素很多,在—个软件中所产生的错误和隐藏的错误可能达到惊人的程度,这不是程序没计阶段所能解决的。需要规范整个软件开发过程,明确软件开发过程中每个阶段的任务,在保证前一个阶段工作的正确性的情况下,再进行下一阶段的工作。这就是软件工程学需要研究和解决的问题。 面向对象的软件工程包括以下几个部分:
⒈面向对象分析(object oriented analysis,OOA)
⒉面向对象设计(Object oriented design,OOD)
⒊面向对象编程(object oriented programming,OOP)
⒋面向对象测试(object oriented test,OOT)
⒌面向对象维护(Object oriented soft maintenance,OOSM)
二、类的声明和对象的定义
1、类的对象的关系(事物的抽象与抽象事物的实例)
对象(object)---每一个实体都可以作为对象。
类(class)---类代表了某一批对象的共性和特征。
1、类是对象的类型。
2、类是一批有共性和特征的对象
3、类是对象的抽象,而对象是类的实例。
4、类是对象的模板。
5、对象是类的一个变量。
2、声明类类型
类是用户自己指定的类型。如果程序中要用到类类型,必须自己根据需要进行声明,或者使用别人已设计好的类。C++标准本身并不提供现成的类的名称、结构和内容。
在C++中怎样声明一个类类型呢?其方法和声明一个结构体类型是相似的。
声明一个结构体类型的方法:
struct Student {char sex
};
Studentstudl,stud2; //定义了两个结构体变量studl和stud2
声明一个类类型的方法:
class Student char name[20];
void display() {cout <<"sex:" <
本文编号:1295690
本文链接:https://www.wllwen.com/wenshubaike/dxkc/1295690.html