Difference between revisions of "Introdução à Modelação com UML/Livros, Imagens, etc."

From Wiki**3

< Introdução à Modelação com UML
(Created page with "Este exercício saiu no teste de 2009/01/24. == Problema == Considere o seguinte programa em Java: <java5> import java.util.ArrayList; abstract class Printable { public abstr...")
 
(Problema)
Line 4: Line 4:
  
 
Considere o seguinte programa em Java:
 
Considere o seguinte programa em Java:
<java5>
+
<text>
 
import java.util.ArrayList;
 
import java.util.ArrayList;
 
abstract class Printable {
 
abstract class Printable {
Line 47: Line 47:
 
   }
 
   }
 
}
 
}
</java5>
+
</text>
  
 
Desenhe o diagrama de sequência UML correspondente à execução do programa acima (excepto as linhas marcadas com '''//!DIAG'''), 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 correspondentes ao retorno).
 
Desenhe o diagrama de sequência UML correspondente à execução do programa acima (excepto as linhas marcadas com '''//!DIAG'''), 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 correspondentes ao retorno).

Revision as of 22:02, 4 November 2013

Este exercício saiu no teste de 2009/01/24.

Problema

Considere o seguinte programa em Java: <text> import java.util.ArrayList; abstract class Printable {

 public abstract String show();
 public void add(Printable p) { throw new UnsupportedOperationException(); }

}

class Paragraph extends Printable {

 public String show() { return "[paragraph]"; }

}

class Image extends Printable {

 public String show() { return "[image]"; }

}

class Album extends Printable {

 public ArrayList<Printable> _printables = new ArrayList<Printable>();
 public void add(Printable p) { _printables.add(p); }
 public String show() {
   String s = "[";
   for (Printable p: _printables) s += p.show();
   s += "]";
   return s;
 }

}

class Page extends Album {} class Book extends Album {}

public class App {

 public static void main(String args[]) {
   Page page1 = new Page();
   page1.add(new Paragraph());
   page1.add(new Image());
   Page page2 = new Page();              //!DIAG
   page2.add(new Paragraph());           //!DIAG
   page2.add(new Image());               //!DIAG
   Book book = new Book();
   book.add(page1);
   book.add(page2);                      //!DIAG
   System.out.println(book.show());
 }

} </text>

Desenhe o diagrama de sequência UML correspondente à execução do programa acima (excepto as linhas marcadas com //!DIAG), 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 correspondentes ao 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).

PO-Janeiro2009-seq.png