Difference between revisions of "Programação com Objectos/Aula Prática 13"

From Wiki**3

< Programação com Objectos
(Tópicos)
(Tópicos)
Line 2: Line 2:
  
 
* Diagramas de sequência UML
 
* Diagramas de sequência UML
* [[Programação com Objectos/Aula Prática 13/Exercício de C++|Exercício C++ (semana 13)]] -- '''entregar na recepção do INESC ID, ao cuidado de David Matos'''
+
* [[Programação com Objectos/Aula Prática 13/Exercício de C++|Exercício C++ (semana 13)]] -- '''entregar na recepção do INESC ID, ao cuidado de David Matos, até 2015/12/17 12:00'''
  
 
== Exercício 1 ==
 
== Exercício 1 ==

Revision as of 21:34, 2 December 2015

Tópicos

  • Diagramas de sequência UML
  • Exercício C++ (semana 13) -- entregar na recepção do INESC ID, ao cuidado de David Matos, até 2015/12/17 12:00

Exercício 1

Desenhe o diagrama de sequência UML correspondente à execução do programa abaixo, 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).

<java5> 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();
   page2.add(new Paragraph());
   page2.add(new Image());
   Book book = new Book();
   book.add(page1);
   book.add(page2);
   System.out.println(book.show()); 
 }

} </java5>

  • resolução (parcial) - procurar resolver antes de consultar

Exercício 2

Desenhe o diagrama de sequência UML correspondente à execução do programa abaixo, 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).

<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();
    shell.tick();
    shell.tock();
    shell.tick();
  }

} </java5>

  • resolução (parcial) - procurar resolver antes de consultar