(Created page with "Este exercício saiu no teste de 2013/01/17. == Problema == Considere o seguinte programa em Java: <java5> public abstract class Animal { private String _name; protected A...") |
(No difference)
|
Este exercício saiu no teste de 2013/01/17.
Considere o seguinte programa em Java:
<java5> public abstract class Animal {
private String _name; protected Animal(String name) { _name = name; } public final void processFood(Food food) { eat(food); digest(food); } public void eat(Food food) { System.out.println(_name + " ate " + food); } public abstract void digest(Food food);
}
public class Cow extends Animal {
public Cow(String name) { super(name); } public void digest(Food food) { System.out.println("Using chambers 1 and 2"); System.out.println("Using chambers 3 and 4"); }
}
public class Cat extends Animal {
public Cat(String name) { super(name); } public void eat(Food food) { super.eat(food); System.out.println("Ate some fur!"); } public void digest(Food food) { System.out.println("Using stomach on " + food); System.out.println("Expelling fur ball"); }
}
public class Food {
public String toString() { return "some food"; }
}
public class App {
public static void main(String args[]) { Animal cow = new Cow("Daisy"); Animal cat = new Cat("Puss"); cow.processFood(new Food()); cat.processFood(new Food()); }
} </java5>
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).