2013-08-30 6 views
1

Как вы бы описали следующий код?Запрос о cohesion in java programming

а) высокая сплоченность

б) Низкий уровень сцепления

Я бы сказал высокий, как даже если 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(); 
    } 
} 
+0

Этот вопрос невозможно ответить для такого тривиального и вне контекста примера. – chrylis

+0

@chrylis Спасибо за ваш отзыв. Тем не менее, я готовлюсь к OCPJP7, и эти вопросы являются частью экзаменационных тем (присутствуют в макетных экзаменах) – Rollerball

+0

* бьет головой на стол * Этот пример все еще не имеет смысла для вопроса. * Может быть * если 'takeAndGlue' взял' Thing' в качестве параметра ... Я могу видеть аргумент в любом случае, но при принудительном выборе теста я бы, вероятно, пошел с высоким, потому что вы можете сделать хороший случай для последовательных сплоченность в обработке 'Thing' (хотя они не обрабатываются в этом API ...). – chrylis

ответ

0

Этот класс показывает низкий уровень сцепления, так как взятие() и клей() можно назвать по отдельности, но это не имеет никакого смысла, если не в правильном порядке. Другими словами: take(), glue() должен не быть общедоступным.

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 

} 

Но высокая сплоченность предполагает, что функции в классах делать то, что они должны do (как они называются). И не какая-то функция выполняет работу другой функции. Таким образом, следующий может быть примером высокой сплоченности:

1

Википедия говорит ..

Применительно к объектно-ориентированному программированию, если методы, которые служат данного класса, как правило, похожи во многих аспектах , то класс сказал, что имеет высокую степень сцепления.

В вашем примере все три метода выполняют работу, связанную с сборкой, и этот класс можно сказать, что он имеет высокую степень сцепления.