关于java编程中的凝聚力的探究

时间:2013-08-30 07:57:48

标签: java cohesion ocpjp

您如何定义以下代码?

a)高凝聚力

b)低凝聚力

即使takeAndGlue()使用2个单独的方法调用2个内容,我也会说高,因此stackTrace是可追踪的。

public class Assembler()
{
    public void take()
    {
        System.out.println("Take the thing");
    }
    public void glue()
    {
        System.out.println("Glueing the thing");
    }
    public void takeAndGlue()
    {
        take();
        glue();
    }
}

3 个答案:

答案 0 :(得分:1)

维基百科说..

  

应用于面向对象的编程,如果服务的方法   给定的类在许多方面往往相似,然后类是   据说有很高的凝聚力。

在你的例子中,所有这三种方法都在进行与汇编相关的工作,这个类可以说具有很高的凝聚力。

答案 1 :(得分:0)

此类显示低内聚,因为可以单独调用take()和glue(),但如果顺序不正确则没有意义。换句话说:take(),glue()应该是公开的。

答案 2 :(得分:0)

这是低凝聚力的一个例子:

class Cal
{


     public static void main(String args[])
     {

          //calculating sum here
          result = a + b;
          //calculating difference here
          result = a - b;
          //same for multiplication and division
     }
}

这是高凝聚力的一个例子:

class Cal
{

     public static void main(String args[])
     {

          Cal myObj = new Calculator();
          System.out.println(myObj.SumOfTwoNumbers(5,7));
      }


     public int SumOfTwoNumbers(int a, int b)
     {

          return (a+b);
     }

     //similarly for other operations

}

但高内聚意味着类中的函数执行它们应该执行的操作(就像它们被命名一样)。而不是某些功能完成其他功能的工作。因此,以下可以是高凝聚力的一个例子: