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)
 
(2 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
== Problema ==
 
== Problema ==
  
Considere o seguinte programa em Java: <java5>
+
Considere o seguinte programa em Java: <source lang="java">
 
public class Chicken {
 
public class Chicken {
 
   private Stomach _stomach = new Hungry();
 
   private Stomach _stomach = new Hungry();
Line 39: Line 39:
 
   }
 
   }
 
}
 
}
</java5>  
+
</source>  
  
'''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]]
 
[[category:PO]]
 
[[category:PO]]
 
[[category:PO Exemplos]]
 
[[category:PO Exemplos]]
[[category:PO Java]]
+
[[category:Java]]

Latest revision as of 16:40, 15 November 2018

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

Problema

Considere o seguinte programa em Java:
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();
  }
}
  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).