这个问题在之前的文章中曾用其他方法解决,现在用类来处理,读者可以比较不同方法的特点。
编写程序:
运行结果:
程序分析:
程序看起来比较长,其实并不复杂,它包括以下3部分:
(1)声明一个类Array_max。
(2)在类外定义成员函数。
(3)主函数。
实际上,在类外定义成员函数是属于类声明的一部分,只是把本来在类中定义的成员函数拿到类外来定义而已。因此上面3部分实际上是两部分,即
(1)声明一个类Array_max。
(2)主函数。
在主函数中做的事是:(1)定义对象;(2)向各对象发出"消息",通知各对象完成有关任务,即调用有关对象的成员函数,去完成相应的操作。主函数很简单,语句很少,在大多数情况下,主函数中甚至不出现控制结构(判断结构和循环结构),而在成员函数中常会使用控制结构。在面向对象的程序设计中,最关键的工作是类的设计。所有的数据和对数据的操作都体现在类中。只要把类定义好,编写程序的工作就显得很简单了。
说明:
首先分析面向对象的程序和以前学过的面向过程的程序有什么不同。
(1)面向对象程序中,一般都是把需要处理的数据封装在对象中的(数据可以是私有的或公用的,但一般应把数据设定为私有的,否则没有意义)。
(2)在程序中必须要声明一个或多个类,即使是最简单的问题,也需要声明一个类。在类中包括数据和对数据操作的函数。至少要有一个公用的成员函数作为对外的接口。然后用该类来定义对象。
(3)对数据的访问一般是通过对象进行的,即指定访问的是哪个对象中的数据。
(4)程序的功能是由执行各个对象中的成员函数完成的。成员函数用来调用本对象的数据并进行运算处理。实际上,处理问题的算法是由各个成员函数实现的。
可以概括为一句话:一切通过对象。
讨论:
从前面的例子中,读者可以知道怎样建立类,怎样定义对象,怎样通过成员函数访问类中的私有数据。可能有的读者认为:这么简单的问题,若用C语言面向过程的方法编程,只需几行代码就行了,现在用类来处理反而这么复杂,是不是"杀鸡用牛刀"啊!
的确,面向对象的方法不是用来处理简单问题的,对于数据少、操作简单的问题,完全可以用面向过程的方法,用C语言编程。但是,如果面对的是一个大型的、复杂的问题,例如学校中的数据处理,学校中有不同的人群(如教师、职工、学生),有不同的行政组织(如学院、系),学生有不同的层次(本科生、硕士生、博士生),也有不同的年级……如果想找出信息学院三年级学生中曾选修机械学院张教授和李教授课程的学生,这个不算复杂的问题,用面向过程的方法处理是很麻烦的,各种数据量大,容易混淆,程序设计者需要清晰地处理每一个步骤,先后调出所需的数据并对其进行不同的处理,难度很大。这时用面向对象的方法来处理就方便多了,思路也清晰了。把不同的数据和对其的操作封装在一个类中,并定义若干对象,需要用哪个就调用哪个,十分方便。
本文介绍了使用类的最简单的例子,目的是为了使C++的初学者清晰地理解类的概念,初步学习使用类和对象,并不意味着提倡用面向对象的方法处理这样简单的问题。在学习阶段,对简单问题"小试牛刀",明白什么是"牛刀"以及如何使用,有了初步的基础之后,再逐步增加问题的复杂性,待深入掌握后,就可以学以致用了。