Difference between revisions of "Strategy Pattern (padrão de desenho)/Galinha com fome"

From Wiki**3

< Strategy Pattern (padrão de desenho)
(Created page with "Este exercício saiu no teste de 2012/01/30. == Problema == Considere o seguinte programa em Java: <java5> public class Chicken { private Stomach _stomach = new Hungry(); p...")
 
(Problema)
Line 41: Line 41:
 
</java5>  
 
</java5>  
  
'''1.5.1.''' (1.0 val.) Que resultado se obtém quando se executa o seguinte programa? (represente mudanças de linha com '''\n''')  
+
# Que resultado se obtém quando se executa o seguinte programa? (represente mudanças de linha com '''\n''')  
 +
# Que padrão de desenho é usado no programa?
 +
 
 +
== Solução ==
 +
 
 +
O resultado obtido é o seguinte (trivial):
  
 
  Hmmm...\nI'm hungry!!\nEating...\nHmmm...\nI'm sleepy!!\nZzZz...\nHmmm...\nI'm hungry!!\nI'm too hungry to sleep!!
 
  Hmmm...\nI'm hungry!!\nEating...\nHmmm...\nI'm sleepy!!\nZzZz...\nHmmm...\nI'm hungry!!\nI'm too hungry to sleep!!
  
'''1.5.2.''' (0.5 val.) Que padrão de desenho é usado no programa?
+
O pradrão usado é o ''Strategy'' (corresponde à delegação de comportamento no conceito '''Stomach''').
 
 
''Strategy''  
 
  
 
[[category:Ensino]]
 
[[category:Ensino]]

Revision as of 12:04, 18 November 2013

Este exercício saiu no teste de 2012/01/30.

Problema

Considere o seguinte programa em Java: <java5> public class Chicken {

 private Stomach _stomach = new Hungry();
 public void eat()   { _stomach.eat();   }
 public void sleep() { _stomach.sleep(); }
 public void setMood(Stomach stomach) { _stomach = stomach; }

}

public abstract class Stomach {

 protected Stomach() { System.out.println("Hmmm..."); }
 public void eat()   { System.out.println("..."); }
 public void sleep() { System.out.println("..."); }

}

public class Hungry extends Stomach {

 public Hungry()     { System.out.println("I'm hungry!!"); }
 public void eat()   { System.out.println("Eating..."); }
 public void sleep() { System.out.println("I'm too hungry to sleep!!"); }

}

public class Sated extends Stomach {

 public Sated()      { System.out.println("I'm sleepy!!"); }
 public void eat()   { System.out.println("I'm not hungry..."); }
 public void sleep() { System.out.println("ZzZz..."); }

}

public class Farm {

 public static void main(String args[]) {
   Chicken chicken = new Chicken();
   chicken.eat();
   chicken.setMood(new Sated());
   chicken.sleep();
   chicken.setMood(new Hungry());
   chicken.sleep();
 }

} </java5>

  1. Que resultado se obtém quando se executa o seguinte programa? (represente mudanças de linha com \n)
  2. Que padrão de desenho é usado no programa?

Solução

O resultado obtido é o seguinte (trivial):

Hmmm...\nI'm hungry!!\nEating...\nHmmm...\nI'm sleepy!!\nZzZz...\nHmmm...\nI'm hungry!!\nI'm too hungry to sleep!!

O pradrão usado é o Strategy (corresponde à delegação de comportamento no conceito Stomach).