前言
一提到面向对象,那可是令我等小白闻之色变。不过,面向对象确实是现今我们程序员必须要了解并且能够熟练运用的思想,从C++语言开始,以及后面出现的C#、Java等主流编程语言都包含了面向对象这个重要的特性,现如今出现的新兴语言要是没有面向对象这个特性都不好意思说自己是语言了。
所以无论有多怕也要有直面深渊的勇气,奥里给!!!
废话不多说,让我们一起走进动物世界,哦不对,走进面向对象(~ ̄▽ ̄)~
计算机语言
无论学习什么,我们总要了解一下它的由来,它的发展历程。正如柏拉图提出的这个千古哲学命题“我是谁?我从哪里来?我要到哪里去?”。
了解面向对象之前总要先对计算机语言的发展有个大致的了解。计算机语言(Computer Language)指用于人与计算机之间通讯的语言,是人与计算机之间传递信息的媒介。其种类非常的多,总的来说目前可以分成机器语言,汇编语言,高级语言三大类。
第一代语言:机器语言,机器语言就是 0/1二进制 代码。因为计算机只能识别 0 和 1,所以无论是音乐还是文字都是以数字的形式存在于计算机中的。
第二代语言:汇编语言,天天面对0,1这样的数字进行编程对人来说是非常痛苦的,计算机的发展总是要越来越容易被人使用的,因此诞生了汇编语言。简单来说汇编语言就是将一串很枯燥无味的机器语言转化成一个英文单词,这方便了我们对程序的编写。
第三代语言:高级语言,高级语言的发展分为两个阶段,以 1980 年为分界线,前一阶段属于结构化语言或者称为面向过程的语言,后一阶段属于面向对象的语言。(关于面向对象语言发展史,这篇文章讲的比较详细,感兴趣的同学可以阅读——面向对象发展史。
计算机语言发展关系如下图:
了解了计算机语言的发展,我们再来揭开面向对象的真面纱
面向对象是神马?
要想了解这个问题我们要先了解面向过程(Procedure Oriented),毕竟没有对比没有伤害(╯▔皿▔)╯。
面向过程
上世纪70年代的编程大都是是面向过程的,大名鼎鼎的C语言和Fortran语言就是面向过程的编程语言。
面向过程POP(Procedure Oriented Programming)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。 ——百度百科
面向过程按我的理解来说就好比你想拥有一辆五菱神车去秋名山,可又没钱,所以只能自己造。你需要先了解发动机是怎么工作的,方向盘是如何操控汽车转动的,然后自己来制造发动机、轮胎,等并给车喷漆、打光。
它是具体化的,流程化的,解决一个问题,你需要运用线性思维要一步一步的分析,一步一步的实现。解决简单的问题没有问题,若所思考的事需要很多人协作一起完成的话,用面向过程的思维思考很难完成。
正是因为面向过程线性思维的解决方法,它并不易于维护、复用、扩展 。所以
面向过程的思想随着程序规模