(POSCOMP, 2016) Assinale a alternativa correta em relação ao padrão de projeto Singleton, cuja intenção é garantir que uma classe tenha somente uma instância, fornecendo um ponto global de acesso à mesma.
a. possui apenas 2 (duas) classes.
b. é instanciado através da chamada de um método público e estático.
c. possui um membro privado não estático da própria classe.
d. tem que ter o construtor público para funcionar.
e. não é um padrão de criação.
(Brizeno, 2011) O padrão de projeto Composite visa compor objetos numa estrutura de árvore para representar hierarquias do tipo partes-todo, permitindo que os clientes tratem objetos individuais e composições de objetos de maneira uniforme. O padrão de projeto Interpreter define uma representação para a gramática de uma dada linguagem, juntamente com um interpretador que usa tal representação para interpretar sentenças nesta linguagem. Analise as assertivas a seguir, a respeito das semelhanças e diferenças entre os padrões de projeto Composite e Interpreter.
Quais das assertivas apresentadas estão corretas?
a. apenas a assertiva I.
b. apenas a assertiva II.
c. apenas as assertivas I e II.
d. apenas as assertivas I e III.
e. apenas as assertivas II e III.
(IF-PE, 2016) Observe as assertivas a seguir:
As assertivas acima descrevem, respectivamente, os seguintes padrões de projeto:
a. Adapter, Facade, Template Method, Chain of Responsibility e Proxy.
b. Facade, Adapter, Template Method, Chain of Responsibility e Decorator.
c. Adapter, Facade, Decorator, Command e Proxy.
d. Adapter, Facade, Template Method, Command e Interpreter.
e. Memento, Strategy, Chain of Responsibility, Template Method e Proxy.
(Brizeno, 2011) Uma aplicação de e-commerce precisa se comunicar com vários bancos diferentes para prover aos seus clientes mais possibilidades de pagamento, atingindo assim um número maior de clientes e facilitando suas vidas. Ao modelar uma forma de execução do pagamento, dado que precisamos selecionar um entre vários bancos disponíveis, a primeira ideia que surge é utilizar uma estrutura de decisão para verificar, dado um parâmetro, qual o banco correto deve ser utilizado. Poderíamos utilizar os padrões de projeto Abstract Factory ou Factory Method para gerar o objeto correto para ser utilizado pela aplicação, mas continuaríamos utilizando uma estrutura de decisão. Qual dos padrões de projeto apresentados a seguir poderia ser utilizado na solução do problema proposto, eliminando a necessidade de uma estrutura de decisão para decidir qual banco deve ser utilizado.
a. Bridge - separa uma abstração da sua implementação, de modo que as duas possam variar independentemente.
b. Chain of Responsibility - evita o acoplamento do remetente de uma solicitação ao seu destinatário, dando a mais de um objeto a chance de tratar a solicitação.
c. Mediator - define um objeto que encapsula como um conjunto de objetos interage, promovendo o acoplamento fraco ao evitar que os objetos se refiram explicitamente uns aos outros.
d. Strategy - define uma família de algoritmos, encapsular cada um deles e fazê-los intercambiáveis, permitindo que o algoritmo varie independentemente dos clientes que o utilizam.
e. Template Method - define o esqueleto de um algoritmo em uma operação, postergando a definição de alguns passos para subclasses, permitindo que as subclasses redefinem certos passos de um algoritmo sem mudar sua estrutura.
(UFAL, 2016) A adoção de padrões de projeto proporciona uma reutilização estratégica durante o desenvolvimento de software, uma vez que promove o reuso de soluções previamente validadas e notadamente bem conhecidas. A figura apresenta um diagrama de classes que modela o controlador responsável por controlar o nível de dificuldade de um jogo eletrônico. Vale salientar que o nível de dificuldade pode ser ajustado em tempo de execução, a partir do perfil de cada jogador.
Assinale a alternativa que representa o padrão de projeto que foi utilizado no exemplo apresentado na figura.
a. Observer, uma vez que o controlador precisa monitorar os níveis de dificuldade.
b. State, uma vez que este padrão possui o propósito de facilitar mudanças dinâmicas na execução dos métodos.
c. Composite, pois os diversos níveis de dificuldade estão representados através de uma hierarquia bem definida.
d. Chain of Responsability, uma vez que não se sabe a priori qual o nível de dificuldade que será utilizado, variando no decorrer da execução.
e. Command, uma vez que cada nível de dificuldade representa um comando complementar do jogo, representando, assim, diferentes formas de acionar o jogo.
Um sistema é composto por uma estação meteorológica (EstacaoMeteorologica
), responsável por fornecer dados de temperatura, umidade e pressão, e por três entidades de visualização (DadosDisplay
, MinimoDisplay
e MaximoDisplay
), que necessitam dos dados atualizados dessa estação, ou seja, a cada nova atualização na estação essas entidades precisam ser informadas. O código existente do sistema é apresentado a seguir.
public class EstacaoMeteorologica
{
private float temperatura, umidade, pressao;
public void setMedicoes(float temperatura, float umidade, float pressao)
{
this.temperatura = temperatura;
this.umidade = umidade;
this.pressao = pressao;
}
}
public class DadosDisplay
{
private float temperatura, umidade, pressao;
public void display()
{
System.out.println("Temperatura atual: " + temperatura);
System.out.println("Umidade atual: " + umidade);
System.out.println("Pressão atual: " + pressao);
}
}
public class MinimoDisplay
{
private float temperatura, umidade, pressao;
public void display()
{
System.out.println("Temperatura mínima: " + temperatura);
System.out.println("Umidade mínima: " + umidade);
System.out.println("Pressão mínima: " + pressao);
}
}
public class MaximoDisplay
{
private float temperatura, umidade, pressao;
public void display()
{
System.out.println("Temperatura máxima: " + temperatura);
System.out.println("Umidade máxima: " + umidade);
System.out.println("Pressão máxima: " + pressao);
}
}
E agora, como informamos as entidades de display sobre as atualizações em EstacaoMeteorologica
. Uma solução possível seria colocar dentro de EstacaoMeteorologica
variáveis de instância de cada um dos tipos de display, mas nesse caso, toda vez que fosse criado e/ou removido um novo display, a EstacaoMeteorologica
deveria ser modificada, dificultando a atualização do sistema como um todo.
Qual padrão de projeto deveria ser utilizado para solucionar este problema, de modo que a solução proposta permita a inclusão e/ou exclusão de displays de forma fácil e transparente para a EstacaoMeteorologica
?
a. Abstract Factory - fornece uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
b. Factory Method - define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada.
c. Mediator - define um objeto que encapsula como um conjunto de objetos interage.
d. Observer - define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes são automaticamente notificados e atualizados.
e. Visitor - representa uma operação a ser executada sobre os elementos da estrutura de um objeto.
Apresente o diagrama UML da solução proposta, considerando o padrão de projeto selecionado na questão 06.
Apresente a implementação da classe EstacaoMeteorologica
, adotando o padrão de projeto selecionado na questão 06.
public class EstacaoMeteorologica
{
private float temperatura, umidade, pressao;
public float getTemperature()
{
return temperature;
}
public float getUmidadee()
{
return umidade;
}
public float getPressao()
{
return pressao;
}
public void setMedicoes(float temperatura, float umidade, float pressao)
{
this.temperatura = temperatura;
this.umidade = umidade;
this.pressao = pressao;
notify();
}
}