Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. Qual é propósito de estudar design patterns? Obter conhecimento necessário para identificar os aspectos-chave de uma estrutura de projeto comum e torná-lo útil para a criação de um projeto orientado a objetos reutilizável, ou seja, personalizar objetos e classes para resolver um problema geral de projeto de forma que esta solução possa ser usada incontáveis vezes. 2. Descreva os quatro elementos essenciais de um design pattern? São eles: Nome Padrão: Procura descrever o problema, a solução e as consequências em uma ou duas palavras. Problema: Descreve em que situação aplicar o padrão e em que condições. Explica o problema e seu contexto. Solução: Descreve os elementos do padrão, seus relacionamentos, responsabilidades e colaborações. Consequências: Apresenta os resultados e a análise das vantagens e desvantagens (trade-offs) da aplicação do padrão. Custos e benefícios de se aplicar o padrão. 3. O que são design patterns criacionais? Envolvem a criação de instancias de objetos, tornam um sistema independente de como seus objetos são criados, compostos e representados. Classe: Factory Method Objetos: Abstract Factory Builder Factory Method Prototype Singleton. 4. O que são designs patterns estruturais? Tratam de compor classes e objetos para formar estruturas grandes e complexas, associados à maneira como classes e objetos são organizados estruturalmente. Eles oferecem formas efetivas para usas conceitos de OO como herança, agregação e composição e focam na abstração da estrutura. Classe: Class Adapter. Objetos: Adapter Bridge Composite Decorator Facade Flyweight Proxy. 5. Oque são designs patterns comportamentais? Preocupam-se com a forma como as classes e objetos interagem e com a distribuição de responsabilidades e focam na abstração do comportamento. Classe: Interpreter Template Method. Objetos: Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor 2 6. Explique como os designs patterns podem ser utilizados especificamente para melhor projetar programas de aplicação. Os padrões de projetos que reduzem dependências podem aumentar a usabilidade interna, sendo assim ele garante que você não projete, nem implemente mais que necessita. 7. Explique como os designs patterns podem ser utilizados especificamente para melhor projetar toolkits. Como sabemos os toolkits são um conjunto de classes relacionadas e utilizáveis, projetadas para fornecer uma funcionalidade útil e de finalidade geral, sendo assim se empregarmos o designs patterns vamos estar fazendo que ao seguir um padrão, essa classe será reutilizada em diversos projetos pois a mesma vai estar entre o mesmo modo de conformidade com os demais. 8. O que são frameworks? É uma técnica da Orientação a Objetos, voltada para a reutilização que se beneficia de três características das linguagens de programação orientadas a objetos: abstração, polimorfismo e herança. Um framework descreve a arquitetura de um sistema orientado a objetos, os tipos de objetos e as interações entre os mesmos. Ele pode ser vislumbrado como o esqueleto – template – de uma aplicação que pode ser customizado pelo programador e aplicado a um conjunto de aplicações de um mesmo domínio. Com frameworks não se busca apenas reutilizar simples componentes de software, mas subsistemas, aumentando assim o grau de reutilização e contribuindo para uma melhor qualidade do produto – software. 9. Explique como os designs patterns podem ser utilizados especificamente para melhor projetar frameworks. Pelo framework ser um conjunto de classes cooperantes que constroem um projeto reutilizável para uma determinada categoria de software; ele dita a arquitetura da aplicação sendo assim ele define a estrutura geral, sua divisão em classes e objetos e em consequência as responsabilidades chaves das classes de objetos, como estas colaboram, e o fluxo de controle assim eles enfatizam a reutilização de projetos em relação à reutilização de código. Um framework que trato através do uso de padrões de projeto tem muito maior probabilidade de atingir altos níveis de reusabilidade de projeto e código, comparado com um que não usa. 10. Descreva várias formas de selecionar design patterns apropriados. Considere como padrões de projeto solucionam problemas de projeto. Examine as seções Intenção. Estude como os padrões se inter-relacionam. Estude padrões de finalidade semelhante. Examine uma causa de reformulação de projeto. Considere o que deveria ser variável no seu projeto. 11. Qual é a intenção básica do design pattern Composite? Compor objetos em estruturas de árvore para representar hierarquias todo-parte. Composite permite que clientes tratem objetos individuais e composições de objetos de maneira uniforme. 3 12. Repetir a pergunta anterior para os padrões Strategy, Decorator, Abstract Factory, Bridge, Command, Iterator, Visitor, Factory Method, Observer, Template Method. Strategy – Definir uma família de algoritmos, encapsular cada uma delas e torna-las intercambiáveis. Permite que o algoritmo varie independentemente dos clientes que o utilizam. Decorator – Dinamicamente, agregar responsabilidades adicionais a um objeto. Fornecem uma alternativa flexível ao uso de subclasses para extensão de funcionalidades. Abstract Factory – Fornece uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Bridge – Desacoplar uma aplicação da sua implementação, de modo que as duas possam variar independentemente. Command – Encapsular uma solicitação como um objeto, desta forma permitindo parametrizar clientes com diferentes solicitações, enfileirar ou fazer o registro (log) de solicitações e suportar operações que podem ser desfeitas. Interator – Fornecer um meio de acessar, sequencialmente, os elementos de um objeto agregado sem expor a sua representação subjacente. Visitor – Representar uma operação a ser executada nos elementos de uma estrutura de objetos. Visitor permite definir uma nova operação sem mudar as classes dos elementos sobre os quais opera. Factory Method – Definir uma interface para criar um objeto, mas deixar as subclasses decidirem que classes instanciar. O Factory Method permite adiar a instanciação para subclasses. Observer – Definir uma dependência um-para-muitos entre objetos, de maneira que quando um objeto muda de estado todos os seus dependentes são notificados e atualizados automaticamente. Template Method – Definir o esqueleto de um algoritmo em uma operação, postergando alguns passos para as subclasses. Permite que subclasses redefinam certos passos de algoritmo sem mudar a estrutura do mesmo. 13. Quais são as consequências positivas do uso do design pattern Composite? Composite – define hierarquias de classes onde objetos primitivos pode compor objetos mais complexos, torna o cliente simples, torna mais fácil acrescentar novas espécies de componentes. 14. Repetir a pergunta anterior para os padrões Strategy, Decorator, Abstract Factory, Bridge, Command, Iterator, Visitor, Factory Method, Observer, Template Method. Strategy – famílias de algoritmos relacionados , alternativa ao uso de subclasses. Decorator – Maior aplicabilidade do que a herança estática, evita classes sobrecarregadas de características no nível mais alto da hierarquia. Abstract Factory – sistema deve ser independente de como seus produtos são criados, compostos ou representados.4 Bridge – desejar evitar um vinculo permanente entre uma abstração e sua implementação. Command – desacopla o objeto que invoca a operação daquele que sabe como executá- la. Iterator – suporta variações no percurso de um agregado, simplificam a interface do agregado. Visitor – uma estrutura de objetos contém muitas classes de objetos com interfaces que diferem e você deseja executar operações sobre esses objetos que dependem das suas classes. Factory – Fornece ganchos para subclasses, conecta hierarquias de classes paralelas. Observer – acoplamento abstrato entre subject e observer, suporte para comunicação do tipo broadcast. Template Method – operações concretas e primitivas. 15. Quais são as consequências negativas do uso do design pattern Composite? O código deve tratar objetos primitivos e objetos recipientes de modo diferente, mesmo se na maior parte do tempo o usuário os tratar de forma idêntica. Ter que distinguir entre esses objetos torna a aplicação mais complexa. Com o Composite, não se pode confiar no sistema de tipos para garantir a obediência de restrições dos componentes. 16. Repetir a pergunta anterior para os padrões Strategy, Decorator, Abstract Factory, Bridge, Command, Iterator, Visitor, Factory Method, Observer, Template Method. Strategy – O cliente deve compreender como Strategies diferem, antes que ele possa selecionar o mais apropriado de forma que, os clientes podem ser expostos a detalhes e aspectos de implementação. Há também que considerar situações em que o contexto criará e iniciará parâmetros que nunca serão usados. E por último, o aumento do número de objetos numa aplicação, custo este que as vezes pode ser reduzido pela implementação de estratégias como objetos sem estados, que os contextos possam compartilhar. Decorator – O decorador não é idêntico ao seu componente, fazendo com que não seja possível depender da identidade de objetos ao se usar decoradores. Outro ponto negativo é a grande quantidade de pequenos objetos parecidos, diferentes apenas na forma como são interconectados, e não nas suas classes ou no valor de suas variáveis. Esses sistemas podem ser difíceis para aprender e depurar. Abstract Factory – É difícil suportar novos tipos de produtos. A interface AbstractFactory fixa o conjunto de produtos que podem ser criados. Suportar novos tipos de produto exige estender a interface da fábrica, o que envolve mudar a classe Abstractctory e todas as suas subclasses. Bridge – Não se pode implementar um autêntico padrão bridge com herança múltipla em C++, pois esta abordagem usa herança estática (liga uma implementação permanentemente à sua interface) Command – Acúmulo de erros no processo de desfazer (Histerese) Iterator – Como consequências negativas podemos considerar que o iterator não pode agir sobre estruturas de objetos com distintos tipos de elementos. Também podemos considerar que mais de um percurso pode estar em andamento ao mesmo tempo, portanto o iterator deve ser robusto o suficiente para garantir que inserções ou remoções não interfiram com o percurso. 5 Visitor – Rompimento do encapsulamento; a abordagem do padrão Visitor assume que a interface de ConcretElement é poderosa o suficiente para permitir aos visitantes executarem o seu trabalho. Como resultado, o padrão frequentemente força operações públicas que acessam o estado interno de um elemento, o que pode comprometer seu encapsulamento. Factory Method – Variantes e tópicos específicos em diferentes linguagens; métodos- fábrica podem ser forçados a introduzir subclasses somente para criar os objetos- produto apropriados. Observer - o custo de uma mudança ao estado de um Source pode ser grande se houver muitos Listeners 17. Compare os designs patterns Composite e Decorator. De que forma são semelhantes? Diferentes? O Composite permite que construa uma estrutura hierárquica de uma forma que permite que o código externo visualiza toda a estrutura como uma única entidade enquanto que o Decorator permite que uma entidade para conter completamente outra entidade. 18. Demonstre como vários designs patterns são usados para encapsular variações. O padrão Strategy serve para definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam Em outras palavras, Strategy nos permite configurar uma classe com um de vários comportamentos, utilizando o conceito de OO chamado de composição. 19. Comente a afirmação: “Design patterns criam um vocabulário comum de projeto”. Ele cria esse vocabulário pelo fato que uma vez que se define um padrão o mesmo vai ser mantido igual, criando assim a semelhança ou um vocabulário comum. 20. Comente a afirmação: “Design patterns ajudam a documentar do projeto”. Do mesmo modo que utilizamos o design patterns para podermos utilizar um modelo de como programar ele também pode ser compreendido para ajudar a documentar o projeto sim. 21. O padrão Modelo-Visão-Controlador (MVC) considera três tipos de classes. A visão refere-se à entrada e à exibição de informações na Interface com o Usuário. O controlador refere-se às classes responsáveis pelo tratamento das requisições vindas da interface e seu envio para o Componente de Domínio do Problema, funcionando como objetos controladores de casos de uso. Por fim, o modelo refere-se aos objetos de domínio, sendo responsáveis pela sua persistência. Marque se afirmação é (V/F) ou Não sei. (A) Verdadeiro (B) Falso (Resposta correta: B) (C) Não sei. 6 22. Em uma aplicação web desenvolvida com Java em três camadas utilizando o padrão MVC, as classes Servlet é representada em qual componente? (A) Controller (Resposta correta: A). (B) View e model. (C) Controller e model. (D) model. (E) View. 23. Em uma aplicação web desenvolvida com Java em três camadas utilizando o padrão MVC, as classes no padrão DAO é representada em qual componente? (A) Controller (B) View e model (C) Controller e model (D) Model (Resposta correta: D) (E) View 24. Zavaleta está desenvolvendo uma aplicação web com Java que utiliza o padrão MVC. Nessa aplicação, criou as páginas HTML, arquivos CSS e validadores JavaScript do componente View e, em seguida passou à criação do componente Controller. Nesse componente do MVC, o tipo de classe apropriada que Zavaleta deve criar é (A) BOAbstract - Business Object (B) Servlet (Resposta correta: B) (C) JSP (D) DAO - Data Access Object (E) VO – Value Object 25. Com relação à arquitetura MVC, considere: I. O MODEL representa os dados da empresa e as regras de negócio que governam o acesso e atualização destes dados. (correto) II. O VIEW acessa os dados da empresa através do MODEL e especifica como esses dados devem ser apresentados. É de responsabilidade do VIEW manter a consistência em sua apresentação, quando o MODEL é alterado. (correto) III. O CONTROLLER traduz as interações do VIEW em ações a serem executadas pelo MODEL. Com base na interação do usuário e no resultado das ações do MODEL, o CONTROLLER responde selecionando uma VIEW adequada. (correto) IV. Permite uma única VIEW para compartilhar o mesmo modelo de dados corporativos em um fluxo de comunicação sequencial. Está correto o que se afirma em (A) I, II, III e IV. (B) I, II e III, apenas.(Resposta correta: B) (C) II e III, apenas. (D) II, III e IV, apenas. (E) I e II, apenas. 26. O componente Controller do MVC: (A) Define o comportamento da aplicação, as ações do usuário para atualizar os componentes de dados e seleciona os componentes para exibir respostas de requisições. Resposta correta: A (B) Enviarequisições do usuário para o controlador e recebe dados atualizados dos componentes de acesso a dados. (C) Responde às solicitações de queries e encapsula o estado da aplicação. (D) Notifica os componentes de apresentação das mudanças efetuadas nos dados e expõe a funcionalidade da aplicação. 7 (E) É onde são concentradas todas as regras de negócio da aplicação e o acesso aos dados. 27. Em uma aplicação web desenvolvida com Java em três camadas utilizando o padrão MVC, as servlets e as classes no padrão DAO são representadas, respectivamente, nos componentes? (A) Controller e View (B) View e model (C) Controller e model (Resposta correta: C) (D) Model e Controller (E) View e Controller 28. Considere que a equipe de TI contratada pelo Sr. Hiroshito adotou o MVC como padrão de projeto no desenvolvimento do software. Nesse padrão, as classes da aplicação que acessam o banco de dados são representadas no componente? (A) Controller. (B) View. (C) Model (resposta correta: C). (D) Access (E) Business 29. Os padrões de projeto GoF são classificados, como: (A) Situacional, Complementar, Estrutural (B) Criacional, Evolutivos, Contingentes (C) Compartimental, Criacional, Situacional (D) Criacional, Comportamental, Estrutural (Resposta correta letra D) (E) Estrutural, Criacional, Compartimental 30. Os padrões de projeto (design patterns): (A) são projetos de arquitetura para um domínio específico de aplicação e sempre trazem componentes predefinidos que envolvem código de programação. (B) consistem em conjuntos de classes que um usuário instancia para utilizar seus métodos. Após a chamada ao método, o controle do fluxo da aplicação retorna para o usuário. (C) podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar padrões de projeto representando-os como colaborações (Resposta correta C). (D) são de uso exclusivo em processos de desenvolvimento de soluções orientado a objetos, já que os objetos são a mais adequada abstração para o reuso. 31. São padrões de projeto GoF, exceto: (a) Strategy (b) Observer (c) DAO (resposta letra c) (d) Adpater (e) Façade 32. Um objeto “A” precisa executar um método quando o estado do objeto “B” for alterada. Qual o padrão GOF deve ser usado? Qual o papel do objeto “B” e do objeto “A” nesse padrão? 8 O padrão é o ‘Observer’, quando um objeto muda de estado os seus dependentes são notificados e atualizados automaticamente, O papel do B é um subject (assunto) e do A observer (obeservador). Esse tipo de interação também é conhecido como publish-subscribe. 33. Designs patterns não se aplicam, exclusivamente, ao Java, podendo ser empregados em projetos que utilizam linguagem C#. (A) CERTO (Resposta correta: A) (B) ERRADO 34. O(s) padrão(ões) de projeto que se encontram no diagrama (Figura 1) são (A) Singleton (Resposta correta: A) (B) Strategy e Adapter. (C) Adapter e Singleton. (D) Strategy. 35. Existe um erro de projeto no diagrama da Figura 1. Ele está (A) no construtor da classe A, que é privado, não permitindo que outras classes criem instâncias de A. Padrões de Projetos de Software Jorge Zavaleta (B) em B e C, que são subclasses de A, porém eles não implementam o método abstrato getA(). (C) no trecho de código do método getA(), em que a instrução return a já é suficiente; (D) na associação ca, pois C pode ter mais de uma instância de A, porém A não permite. (Resposta correta: D) Figura 1: Diagrama de Padrão 36. Em relação ao padrão Adapter, é correto afirmar: (A) a classe Adapter do padrão pode ser implementada através de herança múltipla (em linguagens que suportam esse mecanismo). (Resposta correta: A) (B) ele adapta duas classes diferentes, de forma que tenham o mesmo conjunto de métodos de chamada. (C) é útil utilizá-lo quando se precisa adaptar o comportamento de uma classe em tempo de execução. (D) não há mecanismos de polimorfismo no padrão. Ele possui apenas agregações como forma de adaptação. 37. Em relação ao padrão FactoryMethod, é correto afirmar que este 9 (A) define um método para criação de interfaces sem especificar suas subclasses. (B) define uma interface para criação de famílias de objetos sem especificar suas classes concretas. (C) define uma interface para criação de objetos, mas deixa subclasses decidirem qual classe instanciar. (Resposta correta: C) (D) define um método para criação de interfaces e especifica quais classes precisam ser instanciadas. 38. 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.(Resposta correta: A) (B) para que componentes do sistema com interfaces incompatíveis possam interagir. Padrões de Projetos de Software Jorge Zavaleta 39. 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 Façade. (Resposta correta: D) 40. O conjunto que representa padrões de projeto comportamentais é: A) Mediator, Adapter e Iterator. B) Proxy, Composite e Bridge. C) Observer, ChainOfResponsibility e Strategy. (Resposta correta: C ) D) Visitor, AbstractFactory e State 41. O padrão de projeto singleton é usado para restringir: A) a instanciação de uma classe para objetos simples. B) a instanciação de uma classe para apenas um objeto. (Resposta correta: B) C) a quantidade de classes D) as relações entre classes e objetos. E) classes de atributos complexos. 42. O padrão de projeto Factory provê uma classe de decisão que retorna: A) um objeto de uma de suas subclasses, sem fixação de parâmetros. B) um atributo de uma de suas classes conexas, com base em um parâmetro reservado. C) um objeto de uma de suas subclasses, com base em um parâmetro recebido. (Resposta correta:C) D) um atributo de uma de suas classes conexas, sem fixação de parâmetros. E) um objeto de uma de suas subclasses, com parâmetros fatorados. 43. Os padrões de projeto são classificados nas categorias: (A) Situacional. Estrutural. Complementar. (B) Criacional. Evolutiva. Contingencial. (C) Compartimental. Vinculada. Comportamental. (D) Criacional. Step-by-step. Orientada a requisitos. (E) Criacional. Estrutural. Comportamental. (Resposta correta letra E) 44. Os designs patterns 10 A) são projetos de arquitetura para um domínio específico de aplicação e sempre trazem componentes predefinidos que envolvem código de programação. Padrões de Projetos de Software Jorge Zavaleta B) consistem em conjuntos de classes que um usuário instancia para utilizar seus métodos. Após a chamada ao método, o controle do fluxo da aplicação retorna para o usuário. C) são de uso exclusivo em processos de desenvolvimento de soluções orientado a objetos, já que os objetos são a mais adequada abstração para o reuso. D) são aplicações propriamente ditas, normalmente construídas pela integração de diversos frameworks. E) podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar padrões de projeto representando-os como colaborações. (Resposta correta letra E) 45. O padrão de projeto conhecido como façade é indicado para a definição de uma interface de nível mais alto que torne mais fácil a comunicação entre os subsistemas de um sistema complexo. A) Certo (Resposta correta letra A) B) Errado 46. São padrões de projeto GoF, EXCETO: (A) Strategy. (B) Workfow. (Resposta correta letra b) (C) Adapter. (D) Facade. 47. Descrição de conhecimento e experiência acumulados, uma solução bem-sucedidapara um problema. Capta a experiência de uma maneira possível de ser reusada por outros. Qual opção abaixo corresponde à descrição anterior? (A) Framework (B) Linha de produto de software (C) Gerador de programa (D) Desenvolvimento baseado em componentes (E) Padrão de projeto (Resposta correta) 48. Segundo a classificação de Design Patterns apresentada pela GoF, identifique com V os padrões comportamentais e com F, os demais. ( V ) Observer ( V ) Iterator ( F ) Façade. ( F ) Composite ( V ) Visitor. A alternativa que contém a sequência correta, é a: (A) F V V V F (B) F F V V V (C) V F F V F (D) V V F F V (Resposta correta letra d) (E) V V V V V 11 Sobre padrões de projeto não é correto afirmar: – a) Garantia de aderência a padrões e arquitetura, aumentando a qualidade do produto gerado. – b) Portabilidade: aumentando o reuso de componentes e modelos; – c) Interoperabilidade: garantindo que padrões baseados em múltiplas tecnologias implementem funções de negócio cooperativas; – d) Foco da equipe de desenvolvimento de aplicações em aspectos de negócio ao invés de aspectos técnicos; – e) Aumento de prazos e custos, decorrente da perda de produtividade proporcionada pela elevada geração de código decorrente; Sobre padrões de projeto não é correto afirmar: – a) Padrões são comuns em várias áreas da engenharia; – b) Cada padrão descreve um problema que ocorre repetidamente de novo e de novo em nosso ambiente, e então descreve a parte central da solução para aquele problema de uma forma que você pode usar novamente esta solução – c) Não é um código final, é uma descrição ou modelo de como resolver o problema do qual trata – d) Tem-se um vocabulário comum para conversar sobre projetos de software – e) Dificultam o reuso, uma vez que não implica em um código final. Que padrão de design pode ser usado para permitir que uma implementação específica e uma hierarquia de abstrações possa variar independentemente? – a) Adapter – b) Proxy – c) Façade – d) Bridge – e) Flyweight O acesso a um objeto concreto será através da interface conhecida através de sua superclasse e o cliente não precisa ou não pode saber qual implementação concreta está usando. De que padrão estamos falando? – a) Builder – b) Prototype – c) Abstract Factory – d) Factory Method – e) State Qual o padrão de design que permite encapsularinstruções em objetos para que um cliente possa executar uma ação usando o mesmo método sem precisar saber exatamente qual ação está sendo executada? – a) Strategy – b) State – c) Command – d) Factory Method – e) Template Method Que padrão de design abaixo pode ser utilizado quando existe a necessidade de lidar com uma grande quantidade de objetos e a possibilidade de se reutilizar instâncias para tornar mais eficiente a utilização de recursos (por exemplo, na implementação de um cache)? – a) Adapter – b) Proxy 12 – c) Façade – d) Bridge – e) Flyweight Qual das situações abaixo é o cenário típico onde poderia ser utilizado um Façade? – a) Um cliente precisa de uma interface que é diferente da interface fornecida pela classe existente – b) Um cliente precisa de uma interface idêntica à da classe existente mas não tem acesso direto a ela – c) Um cliente precisa de uma interface que simplifique o acesso a uma hierarquia de classes – d) Um cliente precisa de uma interface que retorne uma única instância de uma classe existente – e) Um cliente precisa ser notificado sobre alterações no estado de objetos Qual das situações abaixo é o cenário típico onde poderia ser utilizado um Singleton? – a) Um cliente precisa de uma interface que é diferente da interface fornecida pela classe existente – b) Um cliente precisa de uma interface idêntica à da classe existente mas não tem acesso direto a ela – c) Um cliente precisa de uma interface que simplifique o acesso a uma hierarquia de classes – d) Um cliente precisa de uma interface que retorne a única instância de uma classe existente – e) Um cliente precisa ser notificado sobre alterações no estado de objetos Qual das situações abaixo é o cenário típico onde poderia ser utilizado um Adapter? – a) Um cliente precisa de uma interface que é diferente da fornecida pela classe existente – b) Um cliente precisa de uma interface idêntica à da classe existente mas não tem acesso direto a ela – c) Um cliente precisa de uma interface que simplifique o acesso a uma hierarquia de classes – d) Um cliente precisa de uma interface que retorne a única instância de uma classe existente – e) Um cliente precisa ser notificado sobre alterações no estado de objetos Qual das situações abaixo é o cenário típico onde poderia ser utilizado um Proxy? – a) Um cliente precisa de uma interface que é diferente da interface fornecida pela classe existente – b) Um cliente precisa de uma interface idêntica à da classe existente mas não tem acesso direto a ela – c) Um cliente precisa de uma interface que simplifique o acesso a uma hierarquia de classes – d) Um cliente precisa de uma interface que retorne a única instância de uma classe existente – e) Um cliente precisa ser notificado sobre alterações no estado de objetos Que padrão de design pode ser usado para garantir que um objeto só tenha uma única instância? – a) Façade – b) Abstract Factory – c) Factory Method – d) Iterator – e) Singleton Que padrão de design é implementado pelas classes da API Java java.io: FileInputStream, ObjectInputStream e GZIPInputStream que permitem ler bytes de um arquivo e transformar os dados durante a leitura para obtê-los já descomprimidos e instanciados como objetos? – a) Decorator – b) Memento – c) Visitor – d) Prototype – e) Singleton 13 Utilizar um objeto já instanciado e pré-configurado para criar novos objetos podendo aproveitar o estado existente naquele objeto. De que padrão estamos falando? – a) Builder – b) State – c) Prototype – d) Abstract Factory – e) Template Method 14 15 16 17 18 19 20 21 1) (FCC-2011) Os design patterns podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar pa- drões de projeto representando-os como colaborações. 2) (CESGRANRIO - 2009) Ao consultar informações a respeito dos padrões de projeto Adapter e Bridge, um Analista de Sistemas identificou uma afirmativa INCORRETA. Assinale-a. O Adapter é inferior ao Bridge porque não evita a replicação de código. 22 3) (FCC-2011) Para modelar sistemas que utilizam componentes reutilizáveis podem ser utilizados dois tipos de padrões de interesse - os design patterns e os frameworks. Com relação ao tema, considere as asserções a seguir. Nas aplicações Java EE, o design pattern JavaServer Faces utiliza o framework MVC para representar o fluxo sequencial de comunicação entre as camadas. O MVC permite representar e entender a comunicação existente entre os componentes da aplicação PORQUE quando se utiliza o MVC em aplicações web desenvolvidas com Java, a requisição do cliente é normalmente interceptada por uma servlet de controle (Controller). Essa servlet manipula o processamento inicial da requisição, acessa os componentes do modelo (Model) e geralmente determina qual será a página (View) que irá mostrar o conteúdo de resposta da requisição. A primeira asserção é uma proposição falsa, e a segunda, uma proposição verdadeira. 4) O principal objetivo do Padrão Visitor é:Permitir que sejam adicionadas novas funcionalidades a classes previamente concebidas, sem que haja necessidade de alterar sua implementação. 5) O projeto Orientado a objetos pressupõe a criação de modelos de domínio a partir dos requisitos identificados para entendimento do negócio e apresentação de uma solução. A esses modelos são acrescidas os aspectos físicos, como os métodos e a troca de mensagens entre eles. A questão é decidir a melhor forma de interação entre os métodos, ou seja, a atribuição da responsabilidade estabelecida para que se possa gerar um melhor resultado. Visando facilitar a construção de soluções são apresentados os padrões de projeto. Assinale dentre as alternativas a seguir a que NÃO define uma característica atribuída ao uso dos padrões. São definidos por especialistas de problemas e servem para aplicação direta em qualquer contexto. 6) Iterator :Fornecer uma maneira de acessar seqüencialmente os elementos de um objeto agregado sem expor sua implementação. (Gamma et al., 2000). Sobre este padrão de projetos podemos afirma com certeza: Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação. 7) Marque a alternativa que está relacionada com o padrão GRASP utilizado para conectar a camada de interface com o usuário e a camada de negócios da aplicação? Controlador 23 8) Entre as vantagens do padrão Interpreter podem-se citar: I - facilidade para mudar e estender a gramática, pois, o padrão utiliza classes para representar as regras gramaticais. I i - Pode-se usar herança para mudar ou estender a gramática, assim como expressões existentes podem ser modificadas incrementalmente e novas expressões podem ser criadas a partir das existentes; Iii - a implementação da gramática é mais fácil, pois, classes que definem os nós folhas da árvore tem implementações similares. Por outro lado, uma das desvantagens é que o padrão Interpreter define, ao menos, uma classe para cada regra da gramática, logo,gramáticas com muitas regras são difíceis de manter e administrar. As afirmativas estão todas corretas 9) sobre o padrão Bridge pode- se a firma r: I ¿ pode-se adaptar dinâmica mente a diferentes plataforma s . Ii--quando se pretende desenvolver uma determina da solução para duas plataformas diferentes é utilizar herança , implementando uma classe deriva da para cada situação é a solução ótima que permite flexibilidade para mudanças e reutilização da das abstrações e implementações de forma independente I ii - . deve-se separar completa mente a interface da classe da sua implementação, de tal modo que uma dada implementação pode ser definida em tempo de execução, até mesmo mudar de implementação em tempo de execução As afirmativas I , II I, estão corretas e II errada 10) Podemos Afirmar que os Padrões Estruturais da família GoF: Definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mútua. 11) considere a definição: Visitor: Representar uma operação a ser realizada nos elementos de uma estrutura de objetos. Visitor permite que você defina uma nova operação sem alterar as classes dos elementos nos quais a operação atua (Gamma et al., 2000). Qual das alternativas é completamente verdadeira? O principal objetivo do padrão acima é permitir que sejam adicionadas novas funcionalidades a classes previamente concebidas, sem que haja necessidade de alterar sua implementação. 12) sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Define-se um método abstrato, em uma classe abstrata. Cada classe que herda a classe abstrata implementa o método físico. Dependendo da classe instanciada é executado o método correspondente. Isto é polimorfismo. 13) O padrão Indireção tem como característica: 24 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. 14) Marque a alternativa que está relacionada ao padrão de projeto que é auxiliar a reduzir o impacto de modificações em uma aplicação. Acoplamento fraco 15) Considere as afirmativa abaixo sobre o padrão Builder: I ) É utilizado na instanciação de objetos complexos. II)É visto como um construtor especializado, que irá executar e avaliar diferentes regras de negócio e demais particularidades relacionadas com a criação de um novo objeto. III )A idéia é atribuir a responsabilidade de criação do objeto complexo a outra classe, esta classe irá armazenar todas as configurações e regras necessárias para a instanciação do novo objeto. As afirmativas estão todas corretas. 16) 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ódigo e 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. As afirmativas I, II, estão corretas e a afirmativa III está errada. 17) Marque a alternativa que apresenta apenas padrões GRASP? Coesão alta, controlador e polimorfismo 18) Marque a alternativa que representa o padrão GRASP que está relacionada com a seguinte questão: A quem atribuir responsabilidades para evitar acoplamento direto entre objetos? Indireção 19) Assinale a afirmativa correta sobre o padrão Builder: 25 Um dos principais objetivos do padrão Builder é separar o algoritmo de criação de um objeto complexo tanto da especificação, quanto das partes que o compõem. 20) Conhecido como padrões da gangue dos quatro, por terem sido desenvolvidos por quatro autores, os Padrões GoF (Group of Four) estão divididos pelos seguintes famílias de padrões: Padrões de Criação ou de Construção, Padrões Estruturais e Padrões Comportamentais. Considerando os padrões de Criação ou de Construção, analise o modelo abaixo e em seguida marque a alternativa que define a representação. (no desenho dentro dos quadrado tem escrito a palavra Factory Method) Factory Method. 21) O padrão de projeto Intepreter descreve como projetar um conjunto de classes para representar e interpretar uma gramática para linguagens simples.: I - Sua aplicação é recomenda naquelas situações em que há necessidade de interpretar uma linguagem qualquer e, ao mesmo tempo, quando se quer representar sentenças da linguagem, como árvores abstratas sintáticas. Ii - É importante destacar que o termo ¿linguagem¿, na definição desse padrão, é bastante ampla, não estando restrita apenas a linguagens de programação Iii - . A estrutura do padrão Interpreter sugere uma modelagem realizada através de uma gramática mapeada em uma arvore hierárquica em que cada cada regra gramatical é um nível na arvore, e pode ser usada para interpretar as sentenças varrendo toda a árvore e finalização do problema. As afirmativas I, II, estão corretas e a afirmativa III está errada. 22) Command : Encapsula uma solicitação como um objeto,permitindo a parametrização de clientes com diferentes solicitações, o enfileiramento e o registro de solicitações e o suporte a operações que possam ser desfeitas. (Gamma et al., 2000). Sobre ele podemos afirmar com toda a certeza: O objetivo do padrão de projeto Command é encapsular chamadas de métodos. 23) qual das afirmativas abaixo não é verdadeira. O ideal que dois artefatos tenham alta dependência. Isto garante um bom desempenho e facilita a manutenção dos artefatos. 24) Marque a alternativa que representa o padrão GRASP que está relacionada com a seguinte questão: Como distribuir responsabilidades buscando alcançar Coesão Alta ou Acoplamento Baixo? Invenção Pura 25) Marque a alternativa que está relacionada ao padrão GRASP que está relacionada com a seguinte questão: como tratar alternativas com base no tipo? 26 Polimorfismo 26) A definição ? Captar e externalizar um estado interno de um objeto, de maneira que esse estado seja restaurado ao objetivo em outro momento, sem violar seu escapsulamento (Gamma et AL., 2000).? Refere-se a que padrão de projeto: Memento 27) Considerando as afirmativas abaixo sobre o padrão protype I – Declara um método chamado clone na superclasse abstrata do modelo (Prototype). Em função desta declaração, cada classe concreta derivada deve ser capaz de gerar uma nova instancia de si próprio. II -, Entre as aplicações para este padrão de projeto esta a facilidade de instanciar classes em tempo de execução. III Quando as instancias de uma classe apresentam poucas combinações de estados, pode ser mais conveniente definir previamente um conjunto de protótipos e clona-los, sempre que foi necessário. As afirmativas estão todas corretas 28) Conhecido como padrões da gangue dos quatro, por terem sido desenvolvidos por quatro autores, os Padrões GoF (Group of Four ) estão divididos pelos seguintes famílias de padrões : Padrões de Criação ou de Construção, Padrões Estruturais e Padrões Comportamentais. Considerando os padrões de Criação ou de Construção, analise o moledo abaixo e em seguida marque a alternativa que define a representação. (desenho com varias descrições) Prototype. 29) Analise as sentenças abaixo sobre os grupos de padrões da família GoF e, em seguida, assinale a alternativa correta: I. Os Padrões Comportamentais são projetados para organizar, gerenciar e combinar diferentes comportamentos. Podemos citar os seguintes padrões pertencentes a esse grupo: Chain of Responsibilityu, Command e Interpreter. II. Os Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões estáticas para escolher, por exemplo , quais obejtivos instanciar ou a quais classes delegar responsabilidade. São doze os padrões de criação: adapter, bridge, composite, decorator, Façade, Flyweight, Proxy, abstract Factory, Builder, Factory Method, Prototype e Singleton. III. Os padrões Estruturais definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mutua. Apenas as sentenças I e III estão corretas 30) Os padrões de projetos,quando aplicados ao desenvolvimento de aplicações, fornecem meios de descrever soluções comuns para problemas comuns ,resultando em redução de tempo gasto com desenvolvimento e melhoria da qualidade da aplicação. 27 (FCC-2009) Analise: I. É o responsável pela especificação dos tipos de objetos a serem criados usando uma "instância" prototípica e pela criação de novos objetos copiando este protótipo. II. Define uma interface de nível mais alto que torna o subsistema mais fácil de usar fornece uma interface única para um subsistema com diversas interfaces; compõe o grupo de padrões estruturais. III. Integrante do grupo de padrões comportamentais , ele provê uma forma de acessar sequencialmente os elementos e um agregado de objetos, sem expor a representação interna desse agregado. IV. As consequências do uso deste padrão é que o encapsulamento é mantido, já que objetos usam sua própria informação para cumprir responsabilidades; leva ao fraco acoplamento entre objetos e à alta coesão, uma vez que objetos fazem tud oque é relacionado à sua própria informação. Prototype, Façade ,Iterator e Expert. 31) Uma das categoria que tradicionalmente se classificam os padrões de projeto : Padrões Estruturais cuja objetivo é: Define a forma de organização dos objetos e sua colaboração mutua 32) Sobre o Padrão Command: I – E ideal para acessar elementos de coleção, matrizes ou estruturas de dados encadeados II – A vantagem desta abordagem e que o objetivo que esta realizando a chamada do método não precisa saber nada sobre seu funcionamento. III- Este padrão de projeto oferece uma maior flexibilidade na arquitetura so sistema, uma vez que permite a adição de novas funcionalidade (comandos ) sem a necessidade de mudar a arquitetura. Podemos afirmar: As Afirmativas II,III estão corretas e a afirmativa I esta errada. 33) considerando a classe de projetos GoF assinale a opção cujos padrões de projeto estão todos classificados como criação: Abstractly factory ; Builder ; Factory Method ; Protype - Singleton 34) (FCC - 2011) No contexto dos padrões de projeto: I. Oferecer uma interface simples para uma coleção de classes. II. Desacoplar uma abstração de sua implementação para que ambas possam variar independentemente. Correspondem respectivamente a Façade e Bridge. 28 35) Um dos princípios do padrão de arquitetura MVC é a separação da lógica da apresentação do modelo. PORQUE É, muitas vezes, mais prático manter a visão e o controlador unificados, inclusive, por demandas da tecnologia. Analisando-se as afirmações acima, conclui-se que ... as duas afirmações são verdadeiras, e a segunda não justifica a primeira. 36) Dentre as alternativas abaixo identifique a que NÃO define uma situação em que deve ser utilizado o padrão Factory Method? Quando o algoritmo de criação de um objeto deve ser independente das suas partes constituintes e da maneira como ele é "montado". 37) Marque a alternativa que está relacionada ao padrão GRASP responsável manter os objetos focados, com funcionalidades específicas, intelegíveis e gerenciáveis? Coesão alta 38) Podemos afirmar que padrões de projeto de software: permitem descrever fragmentos de projeto e reusar idéias de projeto, ajudando desenvolvedores a se nivelar com a experiência de outros. 39) (FUNIVERSA - 2009) Considerando os padrões de projetos (design patterns) da engenharia de software que utilizam as melhores práticas em orientação a objetos para atingir os resultados desejados, é correto afirmar que o padrão bridge é utilizado para desacoplar uma abstração de sua implementação para que os dois possam variar independentemente. 40) (CONSULPLAN - 2012) O desenvolvimento de software é uma atividade que apresenta dificuldades, ligada ao entendimento do problema. Design Patterns surgiram na busca de soluções para as dificuldades, tornando-se um mecanismo eficiente no compartilhamento de conhecimento entre os desenvolvedores. Gamma propõe um modo de categorização dos DESIGN PATTERNS, definindo famílias de padrões relacionados, descritos a seguir. 29 I. Abrange a configuração e inicialização de objetos e classes. II. Lida com as interfaces e a implementação das classes e dos objetos. III. Lida com as interações dinâmicas entre grupos de classes e objetos. Essas famílias são denominadas, respectivamente, Creational Patterns, StructuralPatterns e Behavioral Patterns. 41) Marque a alternativa que está relacionada com o padrão de projeto que pode ser utilizado para configurar uma classe com um dentre muitos comportamentos disponíveis. Strategy. 42) Uma das categoria que tradicionalmente se classificam os padrões de projeto: Padrões Comportamentais cuja objetivo e : Padroes de projetos são descrições de objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto num contexto particular Define formas de gerencia e combinar diferentes comportamentos REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com PADRÕES GOF - REVISÃO - zavaleta.jorge@gmail.com REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 6. Analise as seguintes afirmações: I. O padrão Builder separa a construção de um objeto complexo de sua representação, de modo a que o mesmo processo de construção possa criar diferentes representações. II. O padrão FactoryMethod fornece uma interface para a criação de uma família de objetos relacionados ou dependentes sem especificar suas classes completas. III. O padrão Builder define uma interface para criar um objeto, mas deixa as subclasses decidirem que classe será instanciada. IV. O padrão State usa compartilhamento para suportar grandes quantidades de objetos e 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. Indique a opção que contenha todas as afirmações verdadeiras. A[ ] I e III. B[ ] Somente II. C[ ] III e IV. D[ ] Somente I. E[ ] II e IV. REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 7. Considerando padrões de projetos assinale a alternativa incorreta. A[ ] Os primeiros padrões de projeto surgiram da verificação da repetição de soluções de projeto em sistemas orientados a objetos. B[ ] O padrão de projeto Proxy oferece um filtro para acesso a um único objeto. C[ ] Um padrão de projeto pode ser definido como um conjunto de classes, cada uma com um conjunto de atributos e métodos, com responsabilidades alocadas a cada classe e com um protocolo de comunicação entre elas. D[ ] A diferença básica entre o padrão de projeto Proxy e o padrão de projeto Decorator é que, além da intermediação da comunicação entre dois objetos implementada por ambos, o primeiro inclui ou modifica funcionalidades em relação àquelas do objeto agregado, o que não ocorre com o segundo. REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 8. Analise a estrutura abaixo e assinale a alternativa incorreta. A[ ] A estrutura representa o padrão FactoryMethod. B[ ] ‘Figura’ é elemento participante do padrão Prototype que oferece a interface para se autoclonar. C[ ] A interface Figura transfere a instanciação para Circulo, Quadrado e TrEquilatero. D[ ] O padrão representado pela estrutura é usado quando o Cliente não pode antecipar qual tipo de classe que um objeto deve criar. REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 9. Em uma Aplicação Web desenvolvida utilizando o design pattern MVC, as páginas HTML e as classes com métodos que acessam o banco de dados e executam instruções SQL são representadas, respectivamente, nos componentes? A[ ] Presentation e Business. B[ ] View e Model. C[ ] Controller e Model D[ ] Model e Business E[ ] View e Business REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 10. Em relação aos padrões de projeto, o modelo MVC, apresenta um modelo em três camadas. São elas: A[ ] Client (Cliente), Controler (Controle) e View (Visão/Interface);. B[ ] Model (Modelo de dados), Controler (Controle) e Data (Negócio/Dados); C[ ] Model (Modelo de dados), View (Visão/Interface) e Controler (Controle);. D[ ] .Client (Clien te), View (Visão/Interface) e Data (Interface/Dados); E[ ] Model (Modelo de dados), Business Interface (Interface/negócios) e Data (dados) REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 11. Sobre as camadas do modelo de arquitetura MVC usado no desenvolvimento web é correto afirmar: A[ ] Todos os dados e a lógica do negócio para processá- los devem ser representados na camada Controller. B[ ] A camada Model pode interagir com a camada View para converter as ações do cliente em ações que são compreendidas e executadas na camada Controller. C[ ] A camada View é a camada responsável pela manutenção do estado da aplicação. D[ ] A camada Controller geralmente possui um componente controlador padrão criado para atender a todas as requisições do cliente. E[ ] Em aplicações web desenvolvidas com Java as servlets são representadas na camada Model REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 12. O padrão de projeto de software que permite a criação de famílias de objetos relacionados ou dependentes, através de uma única interface, sem a necessidade de especificar a classe concreta, é denominado de: A[ ] Observer. B[ ] Command. C[ ] Builder. D[ ] Abstract Factory. E[ ] Prototype REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 13. Assinale a alternativa que apresenta corretamente um padrão de projeto de software comportamental. A[ ] Proxy B[ ] Façade C[ ] Visitor D[ ] Decorator E[ ] Composite REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 14. Em relação ao padrão Adapter, é correto afirmar: A[ ] a classe Adapter do padrão pode ser implementada através de herança múltipla (em linguagens que suportam esse mecanismo). B[ ] ele adapta duas classes diferentes, de forma que tenham o mesmo conjunto de métodos de chamada. C[ ] é útil utilizá-lo quando se precisa adaptar o comportamento de uma classe em tempo de execução. D[ ] não há mecanismos de polimorfismo no padrão. Ele possui apenas agregações como forma de adaptação. REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 15. Em relação ao padrão FactoryMethod, é correto afirmar que este: A[ ] define um método para criação de interfaces sem especificar suas subclasses. B[ ] define uma interface para criação de famílias de objetos sem especificar suas classes concretas. C[ ] define uma interface para criação de objetos, mas deixa subclasses decidirem qual classe instanciar. D[ ] defineum método para criação de interfaces e especifica quais classes precisam ser instanciadas. REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 16. 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. REVISÃO PADRÕES DE PROJETO DE SOFTWARE JORGE ZAVALETA - zavaleta.jorge@gmail.com 17. 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 Façade. 18. 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 1. Analise as sentenças sobre padrões de projeto de software e, em seguida, assinale a alternativa correta: I. Permitem descrever fragmentos de projeto e reusar ideias de projeto; II. Dão nome e forma a procedimentos abstratos, regras e melhores práticas relativas às técnicas orientadas a objetos; III. Ajudam a escolher alternativas de projeto que tornam um sistema reutilizável. Quest. : 1 Apenas a sentença II está correta Todas as sentenças estão corretas Apenas as sentenças I e III estão corretas Apenas as sentenças II e III estão corretas Apenas as sentenças I e II estão corretas 2. Analise as sentenças abaixo sobre os grupos de padrões da família GoF e, em seguida, assinale a alternativa correta: I. Os Padrões Comportamentais são projetados para organizar, gerenciar e combinar diferentes comportamentos. Podemos citar os seguintes padrões pertencentes a esse grupo: Chain of Responsibility, Command e Interpreter. II. Os Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões estáticas para escolher, por exemplo, quais objetos instanciar ou a quais classes delegar responsabilidade. São doze os padrões de criação: Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy, Abstract Factory, Builder, Factory Method, Prototype e Singleton. III. Os Padrões Estruturais definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mútua. Quest. : 2 Apenas as sentenças II e III estão corretas Apenas as sentenças I e III estão corretas Apenas a sentença II está correta Todas as sentenças estão corretas Apenas as sentenças I e II estão corretas 3. considere a afirmativa de Gamma e Al. citada abaixo e escolha a opção correta: ¿ Em geral, todas as arquiteturas orientadas a objeto bem-estruturadas estão cheias de padrões. Uma das maneiras de medir a qualidade de um sistema orientado a objetos é avaliar se os colaboradores tomaram bastante cuidado com as colaborações comuns entre seus objetos. Focalizar em tais mecanismos durante o desenvolvimento de um sistema pode levar a uma arquitetura menor, mais simples, muito mais compreensível do que aquelas produzidas quanto padrões são ignorados.¿ Quest. : 3 Padrões são boas práticas e proporcionam garantia de qualidade na elaboração do código. Padrões causam falta de criatividade nos desenvolvedores e esta perda compromete a qualidade. Padrões sempre levam a uma arquitetura menor principalmente quando se usa tecnologia de objetos Padrões é uma forma obrigatória de programar com objetos Padrões são de uso obrigatório e eliminam os erros cometidos na fase programação. 4. Uma das categoria que tradicionalmente se classificam os padrões de projeto: Padrões de criação cujo objetivo é: Quest. : 4 Define a forma de organização dos objetos e sua colaboração mutua Define formas de gerencia e combinar diferentes comportamentos. Define como implantar o mecanismo de herança em um grupo de objetos Define como implantar um novo método em uma classe. Define formas de instanciar objetos delegando responsabilidades 5. (FCC-2011) Os design patterns Quest. : 5 são projetos de arquitetura para um domínio específico de aplicação e sempre trazem componentes predefinidos que envolvem código de programação. consistem em conjuntos de classes que um usuário instancia para utilizar seus métodos. Após a chamada ao método, o controle do fluxo da aplicação retorna para o usuário. são aplicações propriamente ditas, normalmente construídas pela integração de diversos frameworks. são de uso exclusivo em processos de desenvolvimento de soluções orientado a objetos, já que os objetos são a mais adequada abstração para o reúso. podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar pa- drões de projeto representando-os como colaborações. 6. A família de padrões GoF é dividida em três grupos principais de padrões, a saber: Quest. : 6 Padrões de Criação; Padrões Metodológicos; Padrões de Ponte Padrões Estruturais; Padrões de Processo; Padrões de Responsabilidade Padrões de Proxy; Padrões de Criação; Padrões de Encadeamento Padrões Comportamentais; Padrões de Criação; Padrões Estruturais Padrões de Processo; Padrões de Singularidade; Padrões de Prototipação Aula 02 1. Um dos princípios do padrão de arquitetura MVC é a separação da lógica da apresentação do modelo. PORQUE É, muitas vezes, mais prático manter a visão e o controlador unificados, inclusive, por demandas da tecnologia. Analisando-se as afirmações acima, conclui-se que ... . Quest. : 1 a primeira afirmação é verdadeira, e a segunda é falsa. as duas afirmações são verdadeiras, e a segunda justifica a primeira. as duas afirmações são verdadeiras, e a segunda não justifica a primeira. As duas afirmações são falsas a primeira afirmação é falsa, e a segunda é verdadeira. 2. considerando a classe de projetos GoF assinalem a opção cujos padrões de projeto estão todos classificados como Comportamentais Quest. : 2 Command,- Interpreter, - Iterator, - Mediator, - Observer, State, Strategy Command,- bridge, - Iterator, - Mediator, - composite - State, Strategy Command,- bridge, - Iterator, - Mediator, - Observer, State, Strategy Command,- bridge, - Iterator, - Mediator, bridge, State, Strategy Command,- Interpreter, - Iterator, - Mediator, - composite , State, Strategy 3. considerando a classe de projetos GoF assinale a opção cujos padrões de projeto estão todos classificados como criação: Quest. : 3 Abstractly factory ; Builder ; Factory Method ; Protype - Singleton Abstractly factory ; Bridge ; Factory Method ; Protype ; Singleton Abstractly factory ; Builder ; Factory Method ; Decorator - Singleton Command ; Builder ; Factory Method ; Protype - Singleton Abstractly factory ; Builder ; Composite ; Protype - Singleton 4. Consideram as afirmativa abaixo sobreo padrão protype I - Declara um método chamado clone na superclasse abstrata do modelo (Prototype). Em função desta declaração, cada classe concreta derivada deve ser capaz de gerar uma nova instância de si próprio. II - , Entre as aplicações para este padrão de projeto está a facilidade de instanciar classes em tempo de execução. III Quando as instancias de uma classe apresentam poucas combinações de estados, pode ser mais conveniente definir previamente um conjunto de protótipos e cloná-los, sempre que foi necessário. Quest. : 4 As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas estão todas corretas As afirmativas I, III, estão corretas e II errada As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas I, II, III estão incorretas 5. considerando a classe de projetos GoF assinale a opção cujos padrões de projeto estão todos classificados como Estruturais: Quest. : 5 adapter ; bridge ; composite ; decorator ; faça de ; flyweight ; singleton singleton; bridge ; protype; decorator ; faça de ; flyweight ; Proxy adapter ; bridge ; composite ; decorator ; faça de ; flyweight ; Proxy adapter ; bridge ; protype ¿ decorator ; faça de ; flyweight ; singleton singleton; bridge ; composite; decorator ; faça de ; flyweight;¿ Proxy 6. Assinale a afirmativa correta sobre o padrão Builder: Quest. : 6 Um dos principais objetivos do padrão Builder é separar o algoritmo de criação de um objeto complexo tanto da especificação, quanto das partes que o compõem. Deve-se é embutir no construtor da própria classe a lógica para criação de um objeto ou ainda distribuir a lógica de criação em vários métodos adicionais. é uma abordagem que não facilita a criação de objetos com diferentes configurações e representações, tornando o código dependente a complexidade das classes relacionadas A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida Deve-se é separar no construtor da própria classe a lógica para criação de um objeto e concentrar a lógica de criação em uma hierarquia de herança. 1. Para fazer a modelagem de um padrão de projeto (design pattern) utilizando a UML é DESNECESSÁRIO. Quest. : 1 fazer a modelagem do mecanismo como uma colaboração, fornecendo seus aspectos estruturais, assim como os aspectos comportamentais. identificar as soluções específicas e particulares para o problema básico e reificá-la como um mecanismo. identificar os elementos do padrão de projeto que devem ser vinculados aos elementos em um contexto específico e representá-los como parâmetros para colaboração. entender o padrão de projeto como uma colaboração representada com suas partes estruturais e comportamentais. identificar as soluções comuns para o problema básico. 2. O padrão de projeto Singleton é um dos padrões mais conhecidos e extensivamente utilizados em programação orientada a objetos. Sobre ele podemos afirmar I - Está direcionado para as situações onde precisamos manter uma única instancia de uma classe durante toda a execução da aplicação. II - A sua estrutura é bastante simples, existe apenas uma classe chamada Singleton, que define um método chamado Instance, responsável poder retornar aos clientes à única instancia da classe. III ¿ Na linguagem Java os modificadores states e private devem garantir uma mesma instância para todos os objetos criados e evitar acesso público; Quest. : 2 As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, III, estão corretas e II errada As afirmativas estão todas corretas As afirmativas I, II, III estão incorretas As afirmativas I, II, estão corretas e a afirmativa III está errada. 3. (FGV - 2008) Considere as seguintes assertivas sobre as vantagens do uso de padrões de software (software patterns): I. Padrões de projeto proporcionam um vocabulário comum de projeto, facilitando comunicação, documentação e aprendizado dos sistemas de software. II. Padrões de projeto auxiliam no desenvolvimento de software por meio da reutilização do projeto de soluções computacionais já testadas e aprovadas. III. Uma biblioteca de padrões pode ajudar a melhorar e padronizar o desenvolvimento de software. As assertivas corretas são: Quest. : 3 somente II e III. I, II e III. somente II. somente I e III. somente I e II. 4. O projeto Orientado a objetos pressupõe a criação de modelos de domínio a partir dos requisitos identificados para entendimento do negócio e apresentação de uma solução. A esses modelos são acrescidas os aspectos físicos, como os métodos e a troca de mensagens entre eles. A questão é decidir a melhor forma de interação entre os métodos, ou seja, a atribuição da responsabilidade estabelecida para que se possa gerar um melhor resultado. Visando facilitar a construção de soluções são apresentados os padrões de projeto. Assinale dentre as alternativas a seguir a que NÃO define uma característica atribuída ao uso dos padrões. Quest. : 4 São definidos por especialistas de problemas e servem para aplicação direta em qualquer contexto. Fornece orientação de aplicação em circunstâncias variáveis. É apresentado através de uma descrição contendo informações de identificação e registro, como: Nome, Problema, Sumário, Solução, Conseqüências e Padrões Relacionados. O nome do padrão é utilizado para agrupar ideias em um conceito. É uma descrição nomeada de um problema e solução que pode ser aplicado em novos contextos. 5. (CONSULPLAN - 2012) O desenvolvimento de software é uma atividade que apresenta dificuldades, ligada ao entendimento do problema. Design Patterns surgiram na busca de soluções para as dificuldades, tornando-se um mecanismo eficiente no compartilhamento de conhecimento entre os desenvolvedores. Gamma propõe um modo de categorização dos DESIGN PATTERNS, definindo famílias de padrões relacionados, descritos a seguir. I. Abrange a configuração e inicialização de objetos e classes. II. Lida com as interfaces e a implementação das classes e dos objetos. III. Lida com as interações dinâmicas entre grupos de classes e objetos. Essas famílias são denominadas, respectivamente, Quest. : 5 Standard Patterns, Structural Patterns e Behavioral Patterns. Structural Patterns, Standard Patterns e Creational Patterns. Behavioral Patterns, Structural Patterns e Standard Patterns. Standard Patterns, Creational Patterns e Structural Patterns. Creational Patterns, Structural Patterns e Behavioral Patterns. 6. Programadores se deparam muitas vezes com a situação onde é preciso acrescentar responsabilidades a objetos e não a classe. Uma alternativa é atribuir dinamicamente a um dado objeto. Este padrão é chamado de: Quest. : 6 Singleton Bridge protype Instance Decorator. Aula 04 1. Conhecido como padrões da gangue dos quatro, por terem sido desenvolvidos por quatro autores, os Padrões GoF (Group of Four) estão divididos pelos seguintes famílias de padrões: Padrões de Criação ou de Construção, Padrões Estruturaise Padrões Comportamentais. Considerando os padrões de Criação ou de Construção, analise o modelo abaixo e em seguida marque a alternativa que define a representação. Quest. : 1 Factory Method. Facade. Singleton. Builder. Mediator. 2. 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. Quest. : 2 Facade. Mediator Builder. Singleton. Factory Method. 3. 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ódigo e 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. Quest. : 3 As afirmativas I, III, estão corretas e II errada As afirmativas estão todas corretas As afirmativas I, II, III estão incorretas As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas II, III estão corretas e a afirmativa I está errada. 4. sobre o padrão Composite podemos afirmar: I ¿ É utilizado quando se pretende representar hierarquias partes-todo (ou todo-parte) de objetos, ou ainda, quando se pretende modelar relacionamento de agregação. Ii - o cliente poderá acessar objetos compostos ou não de maneira uniforme, pois irá se relacionar com a classe abstrata III ¿ Um processamento pode- ser realizado diretamente por uma superclasse Componente, quando se trata de uma composição, e o processamento parcial é feito pela classe filha, montando todas as partes que compõem o objeto. Quest. : 4 As afirmativas estão todas corretas As afirmativas I, II, III estão incorretas As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, III, estão corretas e II errada 5. Segundo Metsker, 2004, o padrão de projeto ______________ tem como solução mover a lógica de construção de uma classe para um objeto externo, a fim de reduzir a complexidade da mesma e permitir a construção gradual de objetos-alvo a partir dessa classe. Escolha uma das alternativas abaixo que preenche corretamente a lacuna apresentada na descrição acima. Quest. : 5 FACTORY METHOD. FACADE. SINGLETON. BUILDER. MEDIATOR. 6. Podemos afirmar que os Padrões Comportamentais da família GoF: Quest. : 6 Diminuem a responsabilidade do desenvolvedor em modelar o sistema e adequar as rotinas necessárias à documentação dos processos São projetados para organizar, gerenciar e combinar diferentes comportamentos Definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mútua Fornecem um guia de como instanciar objetos, que normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar ou a quais objetos delegar responsabilidade Subutilizam as rotinas de tratamento de erros, em virtude da depuração de código fonte na fase de levantamento das necessidades junto aos usuários Aula 05 1. Conhecido como padrões da gangue dos quatro, por terem sido desenvolvidos por quatro autores, os Padrões GoF (Group of Four) estão divididos pelos seguintes famílias de padrões: Padrões de Criação ou de Construção, Padrões Estruturais e Padrões Comportamentais. Considerando os padrões de Criação ou de Construção, analise o modelo abaixo e em seguida marque a alternativa que define a representação. Que st.: 1 SINGLETON. BUILDER. PROTOTYPE. MEDIATOR. FACTORY METHOD. 2. Entre as vantagens do padrão Interpreter podem-se citar: I - facilidade para mudar e estender a gramática, pois, o padrão utiliza classes para representar as regras gramaticais. I i - Pode-se usar herança para mudar ou estender a gramática, assim como expressões existentes podem ser modificadas incrementalmente e novas expressões podem ser criadas a partir das existentes; Iii - a implementação da gramática é mais fácil, pois, classes que definem os nós folhas da árvore tem implementações similares. Por outro lado, uma das desvantagens é que o padrão Interpreter define, ao menos, uma classe para cada regra da gramática, logo, gramáticas com muitas regras são difíceis de manter e administrar. Quest.: 2 As afirmativas I, III, estão corretas e II errada As afirmativas I, II, III estão incorretas As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas estão todas corretas As afirmativas II, III estão corretas e a afirmativa I está errada. 3. Baseando-se nas necessidades apresentadas do lado direito do quadro abaixo, relacione-as ao padrão adequado a utilização e, em seguida marque a alternativa que corresponde a sequencia numerada correspondente. Quest.: 3 4 - 3 - 1 - 2 3 - 4 - 1 - 2 4 - 2 - 1 - 3 2 - 3 - 4 - 1 4 - 1 - 2 - 3 4. Na UML, o padrão Singleton (GoF) pode ser visto como na classe abaixo: Sobre o padrão de projeto Singleton, Quest.: 4 I - o número 1 no canto superior da classe pode ser utilizado opcionalmente para indicar que esta classe terá apenas uma única instância. II - para se implementar o padrão Singleton na classe acima, esta deverá possuir um método construtor ServicesFactory() privado. III - caso uma subclasse estenda a classe ServicesFactory através de herança, o método getInstance() deverá ser sobrescrito (override) para construir a subclasse. IV - o método getInstance() deverá ser obrigatoriamente declarado como um método estático (static). Assinale a alternativa que indica assertivas CORRETAS: II - III - IV I - II - III I - II - III - IV I - III - IV I - II - IV 5. (CESGRANRIO - 2010) Em um sistema de software para controlar pedidos para entrega em domicílio, deve haver uma funcionalidade que permita que o atendente solicite a repetição de um pedido anteriormente feito por um cliente. O gerente do restaurante informou que essa funcionalidade aumentaria a agilidade no atendimento aos clientes, visto que muitos deles tendem a fazer pedidos similares aos que já fizeram anteriormente. Ao usar essa funcionalidade, o atendente do restaurante seleciona um pedido cuja composição corresponde a produtos normalmente requisitados pelos clientes e solicita
Compartilhar