有一道算法题:请用写出程序对下列数组进行排序(从小到大),输出将结果。数组如下:[1,100,22,33,41,3,0]。
面向过程是这么做的:1.选择一种编程语言。2.选择一种排序算法。3.打开电脑。 4.打开编辑器。 5.开始码代码。 6.编译运行,输出结果。(即:问题 -> 步骤-> 结果)
面向对象是这么做的:1.找个一个程序员。 2.让程序员去编程。 (即:问题–> 调用对象的方法–> 结果)
以上面向过程的做法是倾向于一个员工思考问题的方式,即将自己的工作分隔为若干执行步骤,然后一个个去解决。该方式的特点是所有的执行步骤和实现细节(过程)都是你的关注点。同时该特点也是该方式的缺点,例如,除了要你写简单的算法外,还要让你去设计网站的界面,网站前端的开发,网站后端的开发,软件的测试等等工作时,你所要关注的点就很多很多了,这时,你该怎么划分步骤,然后逐个实现?
而面向对象的做法则像是一个管理者思考问题的方式,即找一些有能力解决该问题的人(对象),让他们去使用的他们能力(属性和方法)去解决问题。该方式的特点是你不需要关心问题的解决步骤和具体实现,你的关注点就只是找到能解决问题的人(对象),并管理他们,使其为你工作。而同样在面对设计网站的界面,网站前端的开发,网站后端的开发,软件的测试等等工作时,面向对象的做法就是招一些美工,web前端,后端等人,管理他们,让他们去发挥他们的专业特长就好。然而,面向对象也有缺点。举个栗子:当你要吃香蕉时,你却招来了一只猴子。