可能是小学开始语文就学得不是很好,对于“内聚”和“偶合”这两个词一直都是懵懵懂懂,处于一知半解的情况,还望DX们用比较通俗的语言或例子来帮小弟解释一下,重谢!顺便也可以聊一下: 在准备要写一个类的时候大家最关心的是什么问题?

解决方案 »

  1.   

    class a,b首先a,b对象的划分要准确,a 完成b,c,d,x 之类的工作,b完成1,2,3,4,5类的工作如果a,b没有任何交互,那样就谈不上内聚和耦合,如果有交互,并且还有其他对象,例如a要调用b,还要调用c,在抽象类的时候就应该
    设计好让a只去掉用b,然后在b中去掉用c具体细致的解释你要去看看面向对象的设计类书籍
    设计类的时候,
    类不是单独存在的,一定要先抽象好
    类之间的关系,是继承还是聚合
    是否有灵活性、可扩展性等等
      

  2.   

    谢谢 vipfenghuang(张伟) & Samen168(卖女孩的小火柴) 基本上对它的概念可以理解了,关注OO也有一段时间,也看过小部分设计模式的资料,不自学地也深深爱上这种编程思想,只是真正等到写代码的时候就很少会再去想到这些了,更多的注意力被放在功能的实现上了
      

  3.   

    我认为一个好的oo设计,不应该在一开始的时候就去考虑实现上的问题,应该先定义问题域的问题,也就是你要解决的问题,然后根据需要解决的问题,设计你的解决方案,而此时的方案应该只是包含接口定义。当然如果有必要的话,可以写一些测试例程测试一下你的想法。至于具体的实现,不同的开发工具,不同的语言可能会有不同实现方法和要求的。
    “只做需要做的”,oo方法可以产生非常复杂的设计,但它并不要求必须复杂。设计时,我们必须找到一个平衡点:在封装性、扩展性、粒度和简单性、性能、易于理解之间的平衡点。
    对于不同规模的系统类的职责划分粒度是不一样的,但不管怎么划分,对职责划分的描述一定要清楚,在这个基础上才有可能进一步调整设计达到高内聚,低耦合一类的目标。
      

  4.   

    谢谢大家的关注,真是受益匪浅。接触编程到现在已经快三年了,从一开始的C、C++、JAVA到现在的.NET,C/C++被当成入门语言来学,只了解了“什么是编程语言”,看到编程语言到底长着什么样的一副鬼脸,JAVA一直学不会,现在回想起来主要原因不是因为JAVA复杂难学,而是因为当时缺乏对OO思想的认识,以面向过程的思想来学一门面向对象的语言,结果是可想而知的,学校虽然有相应的课程,但老师对我们这种思想的培养显然不够重视,也希望今后CSDN能有更多关于编程思想方面的讨论