Difference between revisions of "Introdução à Modelação com UML/Animais, gatos, vacas, comida"

From Wiki**3

< Introdução à Modelação com UML
(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)

Revision as of 21:48, 4 November 2013

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 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).

Solução

Po12-umlseq20130117.png