Introdução à Modelação com UML/Ghost in the Shell -- tick-tock: Difference between revisions

From Wiki**3

< Introdução à Modelação com UML
(Created page with "Este exercício saiu no teste de 2010/01/21. == Problema == Considere o seguinte programa em Java: <java5> public abstract class Ghost { public Ghost() { System.out.println(g...")
 
 
Line 1: Line 1:
Este exercício saiu no teste de 2010/01/21.
#REDIRECT [[ist:Introdução à Modelação com UML/Ghost in the Shell -- tick-tock]]
 
== Problema ==
 
Considere o seguinte programa em Java:
<java5>
public abstract class Ghost {
  public Ghost() { System.out.println(getClass().getName()); }
  public abstract void tick(Shell shell);
  public void tock(Shell shell) {}
}
 
public class A extends Ghost {
  public void tick(Shell shell) { shell.use(new C()); }
}
 
public class B extends Ghost {
  public void tick(Shell shell) { shell.use(new A()); }
  public void tock(Shell shell) { shell.use(new A()); }
}
 
public class C extends Ghost {
  public void tick(Shell shell) { shell.use(new B()); }
  public void tock(Shell shell) { shell.use(new A()); }
}
 
public class Shell {
  Ghost _ghost = new A();
  public void tick() { _ghost.tick(this); }
  public void tock() { _ghost.tock(this); }
  public void use(Ghost ghost) { _ghost = ghost; }
}
 
public class GhostInTheShell {
  public static void main(String args[]) {
    Shell shell = new Shell();
    shell.tick();
    //!DIAG
    shell.tick(); shell.tock(); shell.tick();
  }
}
</java5>
 
Desenhe o diagrama de sequência UML correspondente à execução do programa acima, incluindo as etapas de criação dos objectos (ignore as linhas do programa assinaladas com //!DIAG). 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).
 
== Solução ==
 
Note-se que alguns objectos não indicam variáveis associadas (os resultados da criação desses objectos são imediatamente passados como argumentos de outros métodos).
 
[[Image:PO-20100121-seq.png]]
 
[[category:Ensino]]
[[category:PO]]
[[category:PO Exemplos]]
[[category:Java]]
[[category:UML]]

Latest revision as of 16:58, 7 November 2018