无论是面向过程也好,面向对象也罢,首先说的都是类和对象。“这个世界是由什么组成的?”,对于这个问题如果,仁者见仁智者见智,不同文化背景,不同探索方向便会有不同的答案。我觉得分类学家的思考方式最为贴切,他们认为这个世界是由不同类型的物与事所构成的,与面向对象的思想有不谋而合,异曲同工之妙。站在分类学家角度来思考这个世界,那么,这个世界是由动物、植物等组成的,同样动物又分为单细胞动物、多细胞动物、哺乳动物等,哺乳动物又分为人、大象、老虎……
综上所推,“类”的概念,呼之欲出。那么什么是“类”呢?还是很抽象对吧,那好,我们先来讨论另一个问题,“什么是人类?”
首先让我们来探究一下人类所具有的一些特征,这个特征包括属性(一些参数,数值)以及方法(一些行为,就是人能干什么)。每个人都有身高、体重、年龄、血型等一些属性。人会思考、会劳动、能创造原自然界没有的东西等一些方法。人之所以能区别于其它类型的动物,是因为每个人都具有人这个群体的属性与方法。“人类”就是一个抽象的概念,它只能依附于所有的人的存在而存在。试想一下,如果没有了人,那么再来说“人类”这个概念似乎毫无意义。我们之所以提出“人类”的概念,是因为我们可以通过“人类”来了解每个人,每个人都是具有“人类”这个群体的所有属性与方法的对象,而这个对象“人”是实际存在的实体。理解了“人类”概念,我们来看一看老虎,老虎不具备人“人类”的属性与方法,老虎不会直立行走,不会使用工具等等,所以说老虎不是人。
究竟什么是“类”?现在想必大家都茅塞顿开、豁然开朗。对,没错,“类”就是描述了一组有相同特性(属性)和相同行为(方法)的集合。在程序中,类实际上就是数据类型。例如:整数,小数等等。整数也有一组特性和行为。面向过程与面相对象的区别就在于,面向过程不允许程序员自己定义数据类型,而只能使用程序中内置的数据类型。为了模拟真实世界,为了更好的解决问题,而我们往往需要创建解决问题所必需的数据类型,面向对象编程思想应运而生、蓬勃发展。
深入探究面向对象思想:
面向对象的编程思想最大的特色就是可以编写自己所需的数据类型,以更好的解决问题。我们必须要搞清楚“类,对象,属性,方法它们之间的关系”。就像前面我所说的,“人类”是什么也做不了的,它不实际存在,只依附于人的存在而存在。由此可知,“类”就是对对象的描述,是抽象概念。对象从类中产生出来,是实实在在存在的、具体的,因此,对象具有类所描述的所有的属性以及方法。
再举个例子,例如吃饭这个行为方式,怎么样实现“吃饭”呢,一般我们的思维模式就是,把饭煮熟,用碗盛饭,拿筷子,然后一口一口的吃饭。对,描述的还算详细,这是面向过程的思维模式,容易想到,却难以全面。无法实现更多可供选择功能,再次开发更改困难。面向对象的思维方式,首先,吃饭,需要一个主体来实施这个行为,因此我们需要一个“类”,这个类中有“吃饭”这个方法。我们要完成吃饭,就用“类”产生一个对象,通过对象来调用类中吃饭的方法,就可以完成吃饭。还可以添加多种功能,后期修改容易。这时候,虽然还是没实现吃饭这个方法,仅仅只是调用了原有类的方法,如果原本就没有这个类和类种方法,又该如何?这个问题大家想过,那些编程语言的创始人肯定也想到过,他们已经将大部分的方法写好并进行了封装,我们只需要通过上述的方式调用即可。现成没有的功能方法,我们也可以按照面向对象思维方式来创建一个类,再为这个类赋予我们需要的方法,以后我们就可以通过类产生对象来调用相应的方法。
本文部分摘自it985博客中的sunny的文章面向对象编程思想(一)