概述
面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,指的是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
面向过程到面向对象思想层面的转变:面向过程关注的是执行的过程,面向对象关注的是具备功能的对象。面向过程到面向对象,是程序员思想上从执行者到指挥者的转变。
例子
例1:
问:把大象装进冰箱,需要分几步?
面向过程回答:3步:1把冰箱门打开,2把大象装进去,3把冰箱门关闭。
面向对象回答:2步:1招一个能操作冰箱的工人(对象),2指挥工人装大象。
思考:如果问题改成:把100只大象依次关进冰箱,共分为几步?
面向过程的回答:此处需要省略N字。。。
面向对象的回答还是2步: 1招一个能操作冰箱的工人(对象),2指挥工人把大象依次装进去。
结论:从上述的栗子中,我们发现面向过程很死板 ,是很难适应变化的 。而面向对象更灵活,可复用性更高。
例2:
场景:当我们独自生活时,我们经常纠结一日三餐怎么吃。
面向过程:每天亲力亲为:买菜 - 做饭 - 吃饭 - 洗碗的过程。
面向对象:招聘一个保姆,每天等吃即可。
场景升级:假设你是一个富豪,拥有一座占地3000亩地的庄园 ,不再是只关注吃饭问题 ,还有花草树木修剪,泳池维护清洗,卫生打扫,洗衣做饭。。。。。。
面向过程: 此处省略看着就累的N字。
面向对象:招聘一个管家, 然后让管家招聘园丁、泳池维护工、保姆等等。
结论:从上述的栗子中,我们发现面向过程,我们需要关注很繁琐的过程 。而面向对象不用关注具体的细节,更关注的是统筹架构的问题。其实我们进行大型应用开发时,就如上述的例子一样,如果我们写程序只关注过程的话,代码量达到一定层次以后,就很难再编写下去了。如果采用面向对象的思想来设计编写程序 ,我们把这些对象设计出来,然后我们去使用这些对象,去指挥这些对象就可以了。