(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: | ||
− | < | + | <source lang="java"> |
public class Chicken { | public class Chicken { | ||
private Stomach _stomach = new Hungry(); | private Stomach _stomach = new Hungry(); | ||
Line 41: | Line 41: | ||
} | } | ||
} | } | ||
− | </ | + | </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 == |
Este exercício saiu no teste de 2012/01/30.
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).
Note-se que alguns objectos (anotados) não definem as variáveis associadas no momento indicado.