您将如何定义以下代码?
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
}
但高内聚性意味着类中的函数做它们应该做的事情(就像它们被命名一样)。而不是某个函数在做其他函数的工作。因此,以下可以是高内聚性的示例: