Introdução à Modelação com UML/Animais, gatos, vacas, comida

From Wiki**3

< Introdução à Modelação com UML

Este exercício saiu no teste de 2013/01/17.

Problema

Considere o seguinte programa em Java:

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());
  }
}

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