各位大佬:
        程序开发过程中,如何培养面向对象的设计思想?
比如将所有的查询看成一个对象,模块看成对象??但如何进行这样的设计思想的针对性培养

解决方案 »

  1.   

    我觉得面向对象应该人人都会,和计算机都不怎么搭嘎的,日常生活中就是这么接触的,计算机里不过是用计算机语言描述出了这种情况而已。平时说的人,有手有脚,身高体重,就是属性,又吃又说,就是方法,所谓封装。
    看见一只虫子,小孩子说快看,一直虫子,大人说,是一只甲壳虫哦,专家说是一只犀角金龟,所谓继承(这个名字取得不好,应该叫泛化,继承让你理解为儿子继承父亲,其实不是这样的,儿子是父亲产出,但儿子不是一种父亲)。
    “把房间东西收拾干净”,小时候经常听父母这样说,这儿房间里有各种东西,玩具,书,大人不会说“把玩具收拾干净,把书收拾干净,把...收拾干净”这样,用一个抽象的“东西”(object)来表示就可以了,这就是所谓多态。
      

  2.   

    查询是一个动词,动词一般是类的一个方法,类一般是名词如果你要做一个查询的类,相当于把查询作为一个名词来处理,动名词吧,这也是可以的,关键还是看你的查询的需求了,.net里提供的都是把查询作为集合类的一个方法的。那些linq的扩展方法倒是本身作为一个类,不过这个类并没有普通类的那些说法,只是方便作为一个程序集提供吧,最终还是体现在集合的方法上的
      

  3.   

    拿你所说的查询来说吧。
    你如果查询user表,那么 users就是一个对象,你表里面的每一列就是这个对象的属性。
      

  4.   

    面向对象分析眼中只有“存在”,而不是什么“所有”。所谓“所有x都做了a这件事”,是指你用实际行动真正否定了“存在一个x它没有做a这件事”。面向对象是对个体建模,然后将个体的类型展现出来。比如我们要建立狗的模型,想表达狗是一种动物,同时也是一种宠物,那么我们就从两个类型来研究狗。当你研究了许多具体的个体,才能将类型确定下来,并为同一类型的对象(的各个方面)写出文档。如果不仔细研究个体,空洞地从抽象出发,往往滥用概念。面向对象是从实际应用领域出发,为真实的对象建模。而不是简单地把真实对象用一些计算机领域的数据(什么整数、数组、字符串之类的术语)来代替。避免脱离实际的术语,避免使用计算机领域的术语,而应该用自然而然的应用领域的术语来描述对象、对象类、属性、继承、行为、用例、状态、事件、规则等等。而使用计算机领域的术语进行系统设计、(与硬件等的)接口设计,则是在清晰完整对业务建模之后的事。
      

  5.   

    OOP是不是OOAD,实际上我们可以举出许多OOP不符合OOAD的需要的。既然你关心“思想”,那么就不要用OOP来代替OOAD。OOAD既可以给机器使用,更可以给人使用,甚至给完全不知道计算机知识的人使用。
      

  6.   


    你这儿说每个模块的查询都调用一个查询窗口,既然是调用一个,那么哪儿来的类的概念呢?这只是一个方法而已,提供给各个模块用的一个共享方法,放到一个静态类倒是也可以,不过静态类是没有什么面向对象的思想的。面向对象的设计不是为了简化代码的,不然肯定会滥用继承了,你这儿销售单、采购单、发料单、工单都是集合类,在他们上面定义查询更符合面向对象的思想,事实上,linq的where扩展方法已经为你的这些集合类实现了查询方法了,你都不用自己写了