(New page: As classes abaixo são parte da implementação de um domínio onde génios saem de lâmpadas mágicas e concedem desejos. Os génios não são todos iguais e alguns nem parecem génios......) |
|||
Line 1: | Line 1: | ||
As classes abaixo são parte da implementação de um domÃnio onde génios saem de lâmpadas mágicas e concedem desejos. Os génios não são todos iguais e alguns nem parecem génios... | As classes abaixo são parte da implementação de um domÃnio onde génios saem de lâmpadas mágicas e concedem desejos. Os génios não são todos iguais e alguns nem parecem génios... | ||
+ | |||
+ | == O DomÃnio == | ||
Uma lâmpada mágica (classe <span style="color: #cc0000"> <tt>MagicLamp</tt></span>) liberta génios quando esfregada (método <span style="color: #cc0000"><tt>rub</tt></span>). Os génios podem ser bem ou mal-humorados. O humor dos génios é determinado pelas condições da lâmpada: sempre que a lâmpada tiver sido esfregada um número par de vezes (sem contar a actual), o génio sai mal-humorado. A quantidade de génios disponÃveis é determinada no momento de encantamento da lâmpada (criação). Depois de esgotados os génios disponÃveis, já não adianta esfregar a lâmpada para obter um génio, bem ou mal-humorado: nestas condições, a lâmpada cria um pequeno demónio que responde a pedidos de forma literal mas perversa. Devido a requisitos de sustentabilidade ambiental, as normas de produção exigem que as lâmpadas sejam recarregáveis. Assim, é possÃvel voltar a obter génios quando se esfrega a lâmpada (em número igual ao inicial). O processo de recarregamento exige apenas que um demónio seja alimentado à lâmpada (método <tt><span style="color: #cc0000">feedDemon</span></tt>). | Uma lâmpada mágica (classe <span style="color: #cc0000"> <tt>MagicLamp</tt></span>) liberta génios quando esfregada (método <span style="color: #cc0000"><tt>rub</tt></span>). Os génios podem ser bem ou mal-humorados. O humor dos génios é determinado pelas condições da lâmpada: sempre que a lâmpada tiver sido esfregada um número par de vezes (sem contar a actual), o génio sai mal-humorado. A quantidade de génios disponÃveis é determinada no momento de encantamento da lâmpada (criação). Depois de esgotados os génios disponÃveis, já não adianta esfregar a lâmpada para obter um génio, bem ou mal-humorado: nestas condições, a lâmpada cria um pequeno demónio que responde a pedidos de forma literal mas perversa. Devido a requisitos de sustentabilidade ambiental, as normas de produção exigem que as lâmpadas sejam recarregáveis. Assim, é possÃvel voltar a obter génios quando se esfrega a lâmpada (em número igual ao inicial). O processo de recarregamento exige apenas que um demónio seja alimentado à lâmpada (método <tt><span style="color: #cc0000">feedDemon</span></tt>). | ||
Line 8: | Line 10: | ||
Nota: a lâmpada liberta apenas um génio de cada vez. | Nota: a lâmpada liberta apenas um génio de cada vez. | ||
+ | |||
+ | === Génios === | ||
Um génio bem-humorado (classe <tt><span style="color: #cc0000">FriendlyGenie</span></tt>) concede todos os desejos que lhe forem colocados (método <tt><span style="color: #cc0000">grantWish</span></tt> e retorno <tt><span style="color: #cc0000">true</span></tt>), até ao limite com que foi chamado da lâmpada. Depois do limite já não são concedidos desejos (retorno <tt><span style="color: #cc0000">false</span></tt>). É possÃvel saber quantos desejos já foram concedidos (método <tt><span style="color: #cc0000">getGrantedWishes</span></tt>) e quantos ainda existem disponÃveis (método <tt><span style="color: #cc0000">getRemainingWishes</span></tt>). | Um génio bem-humorado (classe <tt><span style="color: #cc0000">FriendlyGenie</span></tt>) concede todos os desejos que lhe forem colocados (método <tt><span style="color: #cc0000">grantWish</span></tt> e retorno <tt><span style="color: #cc0000">true</span></tt>), até ao limite com que foi chamado da lâmpada. Depois do limite já não são concedidos desejos (retorno <tt><span style="color: #cc0000">false</span></tt>). É possÃvel saber quantos desejos já foram concedidos (método <tt><span style="color: #cc0000">getGrantedWishes</span></tt>) e quantos ainda existem disponÃveis (método <tt><span style="color: #cc0000">getRemainingWishes</span></tt>). | ||
Line 19: | Line 23: | ||
Nota: o demónio concede apenas um desejo de cada vez.</li> | Nota: o demónio concede apenas um desejo de cada vez.</li> | ||
− | O método <tt><span style="color: #cc0000">toString</span></tt>, aplicado aos génios e ao demónio, deve devolver uma das | + | === Strings === |
− | * <span style="color: #cc0000"><tt>Friendly genie has granted</tt></span> <tt>#</tt> <span style="color: #cc0000"><tt>wishes and still has</tt></span> <tt>#</tt> <span style="color: #cc0000"> <tt>to grant.</tt></span | + | |
+ | O método <tt><span style="color: #cc0000">toString</span></tt>, aplicado aos génios e ao demónio, deve devolver uma das cadeias de caracteres abaixo. Os sÃmbolos # representam contadores apropriados a cada caso. | ||
+ | * <span style="color: #cc0000"><tt>Friendly genie has granted</tt></span> <tt>#</tt> <span style="color: #cc0000"><tt>wishes and still has</tt></span> <tt>#</tt> <span style="color: #cc0000"> <tt>to grant.</tt></span> | ||
* <span style="color: #cc0000"><tt>Grumpy genie has granted a wish.</tt></span> / <span style="color: #cc0000"><tt>Grumpy genie has a wish to grant.</tt></span> (consoante já concedeu ou não o pedido) | * <span style="color: #cc0000"><tt>Grumpy genie has granted a wish.</tt></span> / <span style="color: #cc0000"><tt>Grumpy genie has a wish to grant.</tt></span> (consoante já concedeu ou não o pedido) | ||
* <span style="color: #cc0000"><tt>Recyclable demon has granted</tt></span> <tt>#</tt> <span style="color: #cc0000"> <tt>wishes.</tt></span> / <span style="color: #cc0000"><tt>Demon has been recycled.</tt></span> (antes e depois de recarregar uma lâmpada) | * <span style="color: #cc0000"><tt>Recyclable demon has granted</tt></span> <tt>#</tt> <span style="color: #cc0000"> <tt>wishes.</tt></span> / <span style="color: #cc0000"><tt>Demon has been recycled.</tt></span> (antes e depois de recarregar uma lâmpada) | ||
+ | |||
+ | == Definição dos Génios == | ||
+ | |||
+ | |||
+ | |||
+ | [[category:OOP]] | ||
+ | [[category:Teaching]] |
As classes abaixo são parte da implementação de um domÃnio onde génios saem de lâmpadas mágicas e concedem desejos. Os génios não são todos iguais e alguns nem parecem génios...
Uma lâmpada mágica (classe MagicLamp) liberta génios quando esfregada (método rub). Os génios podem ser bem ou mal-humorados. O humor dos génios é determinado pelas condições da lâmpada: sempre que a lâmpada tiver sido esfregada um número par de vezes (sem contar a actual), o génio sai mal-humorado. A quantidade de génios disponÃveis é determinada no momento de encantamento da lâmpada (criação). Depois de esgotados os génios disponÃveis, já não adianta esfregar a lâmpada para obter um génio, bem ou mal-humorado: nestas condições, a lâmpada cria um pequeno demónio que responde a pedidos de forma literal mas perversa. Devido a requisitos de sustentabilidade ambiental, as normas de produção exigem que as lâmpadas sejam recarregáveis. Assim, é possÃvel voltar a obter génios quando se esfrega a lâmpada (em número igual ao inicial). O processo de recarregamento exige apenas que um demónio seja alimentado à lâmpada (método feedDemon).
Quando se cria uma nova lâmpada é necessário indicar a quantidade inicial de génios que é possÃvel invocar. É possÃvel saber quantos génios ainda estão disponÃveis na lâmpada (método getGenies). É ainda possÃvel saber quantas vezes a lâmpada já foi recarregada (método getDemons). Quando se esfrega a lâmpada, deve-se indicar quantos desejos se espera que o génio realize (independentemente de o génio os poder negar).
A classe MagicLamp deve saber comparar as suas instâncias (através do método equals). Considera-se que duas lâmpadas são iguais se tiverem a mesma capacidade e se os valores retornados pelos métodos getGenies e getDemons forem iguais.
Nota: a lâmpada liberta apenas um génio de cada vez.
Um génio bem-humorado (classe FriendlyGenie) concede todos os desejos que lhe forem colocados (método grantWish e retorno true), até ao limite com que foi chamado da lâmpada. Depois do limite já não são concedidos desejos (retorno false). É possÃvel saber quantos desejos já foram concedidos (método getGrantedWishes) e quantos ainda existem disponÃveis (método getRemainingWishes).
Nota: o génio concede apenas um desejo de cada vez.
Um génio mal-humorado (classe GrumpyGenie) concede apenas o primeiro desejo que lhe for colocado (método grantWish e retorno true), independentemente do limite com que foi chamado da lâmpada (retorno false após o primeiro). É possÃvel saber se o desejo já foi realizado (método getGrantedWishes retorna 1).
Um demónio (classe RecyclableDemon) concede todos os desejos que lhe forem colocados (método grantWish e retorno true), independentemente do limite com que foi chamado da lâmpada. Se o demónio for recolocado na lâmpada (para a recarregar), já não pode realizar mais desejos (retorno false). É possÃvel saber quantos desejos já foram concedidos (método getGrantedWishes).
Nota: o demónio concede apenas um desejo de cada vez.</li>
O método toString, aplicado aos génios e ao demónio, deve devolver uma das cadeias de caracteres abaixo. Os sÃmbolos # representam contadores apropriados a cada caso.