Difference between revisions of "Introdução à Modelação com UML/Galinha com fome"

From Wiki**3

< Introdução à Modelação com UML
(Created page with "Este exercício saiu no teste de 2012/01/30. == Problema == Considere o seguinte programa em Java: <java5> public class Chicken { private Stomach _stomach = new Hungry(); ...")
 
(Problema)
 
Line 5: Line 5:
 
Considere o seguinte programa em Java:
 
Considere o seguinte programa em Java:
  
<java5>
+
<source lang="java">
 
public class Chicken {
 
public class Chicken {
 
   private Stomach _stomach = new Hungry();
 
   private Stomach _stomach = new Hungry();
Line 41: Line 41:
 
   }
 
   }
 
}
 
}
</java5>  
+
</source>  
  
Desenhe o diagrama de sequência UML correspondente à execução do programa, incluindo as etapas de criação dos objectos. O diagrama de sequência deve conter os nomes das mensagens trocadas (não é necessário representar os argumentos dessas mensagens nem as de retorno; represente todas as chamadas ao método '''println''').  
+
Desenhe o diagrama de sequência UML correspondente à execução do programa, incluindo as etapas de criação dos objectos. O diagrama de sequência deve conter os nomes das mensagens trocadas (não é necessário representar os argumentos dessas mensagens nem as de retorno; represente todas as chamadas ao método '''println''').
  
 
== Solução ==
 
== Solução ==

Latest revision as of 20:33, 3 December 2018

Este exercício saiu no teste de 2012/01/30.

Problema

Considere o seguinte programa em Java:

public class Chicken {
  private Stomach _stomach = new Hungry();
  public void eat()   { _stomach.eat();   }
  public void sleep() { _stomach.sleep(); }
  public void setMood(Stomach stomach) { _stomach = stomach; }
}

public abstract class Stomach {
  protected Stomach() { System.out.println("Hmmm..."); }
  public void eat()   { System.out.println("..."); }
  public void sleep() { System.out.println("..."); }
}

public class Hungry extends Stomach {
  public Hungry()     { System.out.println("I'm hungry!!"); }
  public void eat()   { System.out.println("Eating..."); }
  public void sleep() { System.out.println("I'm too hungry to sleep!!"); }
}

public class Sated extends Stomach {
  public Sated()      { System.out.println("I'm sleepy!!"); }
  public void eat()   { System.out.println("I'm not hungry..."); }
  public void sleep() { System.out.println("ZzZz..."); }
}

public class Farm {
  public static void main(String args[]) {
    Chicken chicken = new Chicken();
    chicken.eat();
    chicken.setMood(new Sated());
    chicken.sleep();
    chicken.setMood(new Hungry());
    chicken.sleep();
  }
}

Desenhe o diagrama de sequência UML correspondente à execução do programa, incluindo as etapas de criação dos objectos. O diagrama de sequência deve conter os nomes das mensagens trocadas (não é necessário representar os argumentos dessas mensagens nem as de retorno; represente todas as chamadas ao método println).

Solução

Note-se que alguns objectos (anotados) não definem as variáveis associadas no momento indicado.

PO-20120130-seq.png