Baixe o app para aproveitar ainda mais
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.
Compartilhar