Buscar

Exercício Padrão GOF

Prévia do material em texto

1- O que são padrões de projeto? Quais as vantagens e desvantagens de sua utilização? 
 
2. Em que tipos de softwares os padrões GoF são mais utilizados? 
 
3. Você foi contratado por uma empresa que desenvolve aplicações para edição e manipulação de 
imagens. Seu chefe apresentou para você as seguintes classes: 
public class Visualizador{ 
public void Visualizar(){ 
Imagem img = nem Imagem(); 
img.carregar(); 
img.exibir(); 
img.fechar(); 
} 
} 
public class Imagem{ 
public void carregar() { 
System.out.println("Imagem BMP:"); 
System.out.println("Carregando imagem BMP..."); 
} 
public void exibir() { 
System.out.println("Exibindo imagem por 20 segundos."); 
} 
public void fechar() { 
System.out.println("Fechando imagem."); 
} 
} 
Essas classes são responsáveis por carregar imagens do tipo BMP. Seu chefe mandou que você 
alterasse o código de forma que a criação de novos visualizadores de imagem ficasse mais flexível. Crie 
as seguintes classes: VisualizadorJPG – que visualiza imagens do tipo JPG e ImagemJPG – que trata de 
imagens JPG. O código deve ser desenvolvido de forma que a criação de qualquer outro visualizador seja 
rápida e flexível. Para resolver esse problema altere o código acima usando o padrão Factory Method. 
 
 
4. Em relação ao padrão Façade, é correto afirmar ser ele útil 
a) quando se faz necessário criar uma única interface para um conjunto de componentes do sistema. 
b) para que componentes do sistema com interfaces incompatíveis possam interagir. 
c) para simplificar a maneira pela qual duas classes interagem. 
d) quando há pouca dependência entre um componente do sistema e seus clientes. 
 
5. O conjunto que representa padrões de projeto estruturais é: 
a) Builder, AbstractFactory e Singleton. 
b) Observer, Proxy e Decorator. 
c) State, Adapter e Iterator. 
d) Bridge, Composite e Facade. 
 
6. O conjunto que representa padrões de projeto comportamentais é: 
a) Mediator, Adapter e Iterator. 
b) Proxy, Composite e Bridge. 
c) Observer, ChainOfResponsibility e Strategy. 
d) Visitor, AbstractFactory e State 
 
 
7. Identifique o padrão de projeto que caracteriza cada uma das afirmativas a seguir: 
 caracterizado por retornar uma instância dentre muitas possíveis classes, dependendo dos 
dados providos a ele. 
 
 Separa a construção de um objeto complexo de sua representação para criar representações 
diferentes com o mesmo processo. Constroi o objeto passo a passo. 
 
 Define uma interface para criar um objeto, mas deixar que subclasses decidam que classe 
instanciar. 
 
 Permite criar novos objetos a partir de copia de um prototipo. 
 
 Garante que uma classe tenha apenas uma única instância e fornecer um ponto de acesso 
centralizado a ela. 
 
 Converte a interface de uma classe em uma outra interface esperada pelos clientes. 
 
 Desacoplar uma abstração de sua implementação para que os dois possam variar 
independentemente. 
 
 Permite o tratamento de objetos individuais e composição desses objetos de maneira uniforme. 
 
 Permite anexar responsabilidades adicionais a um objeto dinamicamente. 
 
 Oferece uma interface única de nível mais elevado para um conjunto de interfaces de um 
subsistema. 
 
 Usa compartilhamento para suportar eficientemente grandes quantidades de objetos complexos. 
 
 Fornece um substituto ou ponto através do qual um objeto possa controlar o acesso a outro. 
 
 Compor objetos em cascata para, através dela, delegar uma requisição até que um objeto a 
sirva. 
 
 Encapsula requisição como objeto para clientes parametrizarem diferentes requisições, filas e 
suportar operações reversíveis. 
 
 Dada uma linguagem, define uma representação para a sua gramática junto com um 
interpretador. 
 
 Fornece uma maneira de acessar elementos de um objeto agregado seqüencialmente, sem 
expor sua representação interna. 
 
 Define um objeto que encapsula a forma como um conjunto de objetos interage. 
 
 Exteriorizar o estado interno de um objeto para que este objeto possa ter esse estado restaurado 
posteriormente. 
 
 Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de 
estado, os seus dependentes sejam notificados e atualizados automaticamente. 
 
 Permitir a um objeto alterar o seu comportamento quando seu estado alterar. 
 
 Definir uma família de algoritmos, encapsular cada um e fazê-los intercambiáveis. 
 
 Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem 
preenchidos pelas subclasses. 
 
 Representar uma operação a ser realizada sobre os elementos de uma estrutura de objetos. 
 
 
8. O padrão Indireção tem como característica: 
A Sugere atribuir um conjunto de responsabilidades altamente coesa a uma classe artificial ou de 
conveniência que não represente o domínio do problema, algo inventado, para apoiar coesão alta, 
acoplamento baixo e reuso. 
B O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre 
outros componentes ou serviços, para que eles não sejam diretamente acoplados. 
C É um principio básico para fornecer flexibilidade e proteção contra diversos tipos de variações em um 
projeto orientado a objetos, tais como: variações nos dados, comportamento, hardware, componentes 
de software, sistemas operacionais, entre outros. 
D implica que um componente ou classe encapsule somente os atributos e operações muito relacionadas 
a si e com a classe do componente ou classe propriamente dito. 
E é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar 
uma mensagem de operação do sistema. 
 
9. Memento:Captar e externalizar um estado interno de um objeto, de maneira que esse estado seja 
restaurado ao objeto em outro momento, sem violar seu encapsulamento (Gamma et al., 2000). Sobre 
este padrão de projetos podemos afirma com certeza: 
A É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais 
objetos 
B É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais 
objetos, mas não deve ser usado quando associado a percorrer arrays ou tabelas. 
C Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de 
Implementação 
D Considerando objetos que implementam arrays, pode ser visto como uma classe intermediária de 
comunicação e gerenciamento, evitando que os objetos se comuniquem de forma direta 
E tem como objetivo criar um meio de armazenar informações sobre um objeto, permitindo acessar essas 
informações tanto para salvar o estado de um objeto específico, como para recuperar, sempre que for 
necessário. 
 
 
10 Uma das categoria que tradicionalmente se classificam os padrões de projeto: Padrões de criação cujo 
objetivo é: 
 
A Define a forma de organização dos objetos e sua colaboração mutua 
B Define formas de instanciar objetos delegando responsabilidades 
C Define formas de gerencia e combinar diferentes comportamentos. 
D Define como implantar um novo método em uma classe. 
E Define como implantar o mecanismo de herança em um grupo de objetos 
 
11 O padrão Adpater é bastante utilizado para compatibilizar classes implementas por programadores 
diferentes, ou desenvolvidas em momentos diferentes, ou ainda para unir classes com interfaces 
diferentes em uma estrututura hierarquica única, sem precisar implementar novamente todas as 
funcionalidades e interfaces da classe já existente, considere as afirmativas: 
 I – A idéia é criar uma nova classe (Adapter) com a interface padrão que se deseja para fazer a conexão 
com a classe já existente (Adaptee) com interface diferente da estrutura de classes que se pretende 
utilizar no sistema. 
 Ii - Além de reaproveitar totalmente a classe antiga sem precisar alterar o códigoe entender a complexa 
implementação realizada, mantém a uniformidade do seu projeto original. 
 Iii cria uma hierarquia de classes diferentes categorias de objetos sem relação de herança. 
A As afirmativas estão todas corretas 
B As afirmativas I, III, estão corretas e II errada 
C As afirmativas II, III estão corretas e a afirmativa I está errada. 
D X As afirmativas I, II, estão corretas e a afirmativa III está errada. 
E As afirmativas I, II, III estão incorretas 
 
 
12 Em padrão de projeto existe uma situação onde uma classe chama um método abstrato especificado 
em alguma classe abstrata (ou interface) e a subclasse concreta vai decidir que tipo exato de objeto criar 
e retornar. Baseado nessa descrição marque a alternativa que aponta o padrão relacionado. 
A Builder. 
B Mediator 
C Factory Method. 
D Facade. 
E Singleton. 
 
13 Considerando um sistema de vendas onde possuímos o pedido e os itens de pedido. A cada pedido de 
cliente lhe é atribuído um número de pedido e em seguida solicitado os itens correspondentes a ele. Na 
finalização do pedido são criadas instâncias do pedido e dos itens. 
No diagrama de classe de domínio possuímos 2 classes: uma de pedido e outra de itens de pedido. Você 
é o projetista do sistema e deverá decidir a classe que deverá ser responsável por criar as instâncias de 
itens de pedido baseando-se no padrão CRIADOR. Justifique sua resposta. 
 
14. Questão 
Baixo acoplamento é um princípio-chave na Orientação objetos. O que deve ser feito para garantir o baixo 
acoplamento na definição das classes. Cite exemplos.

Continue navegando