◆→编程思想
写程序也这么长时间了,面向过程面向对象这类词也看多了,软件工程的书也看了,但始终有点模糊和纳闷。不得不仔细分析一下:我到底在做什么,我到底是怎么做的,到底什么是面向对象。下面都是我的作为,就省略掉“我”字。
目前所谓的面向对象编程主要是局部使用对象设计,全局使用过程设计。为什么?因为全局必须自己设计,表达的是自己的思想过程,摆脱不了面向过程的思维。为什么?因为人在设计时不自觉的会按照平时的办事习惯来进行,即要是这件事我来做,我应该怎么样一步一步的来做来完成,这就是过程的思想。那么为什么局部采用对象设计呢?因为很明显的如一些按钮之类的是一个一个的类,我们也不想深入到细节中,于是把它当成一个整体来看待,当成组成程序的小个体、小分子。又因为别人(如微软)已经封装了一些类,这些类就像函数库一样,我们不能不按照该“函数库”的使用方法学着用类的观点来看待它。还有一个原因就是到达局部以后,就要借助工具,工具很自然的就是要被操作的对象。很像下面的类比:
老板要你写一篇报告,你接到任务后,自然会先去收集资料,写摘要,写提纲,写草稿,打印正稿。这很明显是一个过程的思想。而每个细节,就如打印正稿,你就得利用计算机字处理软件,于是计算机就成了你的工具、你的对象,计算机的处理过程你不必去深究。所以局部自然而然有了对象这一思想。
虽然据说建模的时候面向对象更符合人们对自然界的认识,但是从上面看来好像不符合做事习惯,那么它是否科学呢?... 我想面向对象其实是这样的:老板把你看作工具和对象,他不管你办事的过程,反正任务是交给你了。你手下有几个人,你接到任务就开始分配工作,“张三,你去收集资料;李四,你来写提纲...”他们怎么完成的你不管,你只当张三像台计算机,像台资料搜集器... 你只要管他们完成的过程:“张三你收集完后交给李四,李四你把提纲交给老五...”这样正好反过来,整体是对象,局部是过程。那这又和模块划分的思想有何区别?面向对象的核心是抽象数据类型,那老板这件事怎么进行数据抽象呢?...
针对以上浅薄的理解和问题,还望各位给点批评意见、建议、想法,谢谢!