关于java编程中的内聚性的探讨



您将如何定义以下代码?

a) 高内聚

b) 低内聚

我会说High,因为即使takeAndGlue()做了两件事,它们也用两个单独的方法调用,因此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();
    }
}

维基百科说。。

应用于面向对象编程时,如果给定的类在许多方面往往是相似的,那么该类就是据说具有高内聚性。

在您的示例中,这三种方法都在做与汇编相关的工作,并且这个类可以说具有很高的内聚性。

这个类显示出低内聚性,因为take()和glue()可以分别调用,但如果顺序不对,那就没有意义了。换句话说:take(),glue()应该而不是是公共的。

这是低内聚性的一个例子:

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
}

但高内聚性意味着类中的函数做它们应该做的事情(就像它们被命名一样)。而不是某个函数在做其他函数的工作。因此,以下可以是高内聚性的示例:

最新更新