Introdução à Modelação com UML/Caixas, coisas e peças

From Wiki**3

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

Este exercício saiu no teste de 2013/02/04.

Problema

Considere o seguinte programa em Java:

abstract class Thing {
  public abstract String doIt();
  public String toString() { return doIt(); }
}

class Blob extends Thing {
  public String doIt() { return "a blob"; }
}

class Something {
  public String doSomething() { return "something"; }
}

class Piece extends Thing {
  Something _else;
  public Piece(Something something) { _else = something; }
  public String doIt() { return _else.doSomething(); }
}

class Box {
  private Thing _thing;
  public Box(Thing t) { _thing = t; }
  public void open() {
    System.out.println("The box contains " + this);
  }
  public String toString() { return _thing.toString(); }
}

public class App {
  public static void main(String args[]) {
    Box b1 = new Box(new Blob());
    Box b2 = new Box(new Piece(new Something()));
    b1.open();
          b2.open();
  }
}

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

File:Po12-umlseq20130204t2.png