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 solicitaao sistema a construção de um novo pedido igual ao selecionado. Esse novo pedido pode, então, ser alterado pelo atendente se o cliente solicitar a adição de novos produtos do cardápio, por exemplo. Portanto, a parte principal dessa funcionalidade corresponde a criar uma cópia de um pedido a partir de pedido preexistente. Na implementação dessa funcionalidade, seu desenvolvedor deve utilizar qual padrão de projeto do catálogo GoF (Gang of Four), dentre os listados abaixo? Quest.: 5 Builder. Prototype. Abstract Factory. Command. Factory Method. 6. (CESGRANRIO - 2009) Por motivo de segurança, deseja-se adicionar registro (log) das operações efetuadas no sistema de contabilidade de uma empresa. O arquiteto do sistema decide que deve existir somente uma instância de uma classe de registro (log) e que esta será o ponto de acesso global para os demais componentes do sistema. Que padrão de projeto pode ser utilizado nesse caso? Quest.: 6 Visitor. Iterator. Bridge. Memento. Singleton. Aula 06 1. 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: Quest. : 1 É 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. É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais objetos 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 tem uma grande facilidade de mudança de comportamento, pode-se alterar seu funcionamento sem que seja necessário nenhuma mudança nas demais classes envolvidas, desde que envolvam coleções e matrizes. Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação. 2. 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: Quest. : 2 esta abordagem é que o objeto que está realizando a chamada do método precisa conhecer com detalhes sobre seu funcionamento. Este padrão de projeto oferece pouca flexibilidade na arquitetura do sistema, uma vez que não permite adição de novas funcionalidades Os métodos, nesta abordagem devem ser padronizados e hierarquizados de forma que a implementação trabalhe novos objetos. O objetivo do padrão de projeto Command é encapsular chamadas de métodos. Nesta abordagem o objeto que está realizando a chamada do método precisa conhecer com detalhes a implementação em relação asparente ao local, tempo e ao objeto que vai realizar uma determinada tarefa 3. (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. Quest. : 3 Ambos são padrões estruturais que possuem alguns atributos em comum. O Adapter é inferior ao Bridge porque não evita a replicação de código. O Bridge estabelece uma ponte entre uma abstração e suas possíveis implementações. Ambos promovem a flexibilidade ao fornecer um nível de endereçamento indireto para outro objeto. O foco do Adapter é a solução de incompatibilidades entre duas interfaces existentes. 4. A definição ¿ 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).¿ Refre-se a que padrão de projeto: Quest. : 4 Memento Mediator Iterator Command Builder. 5. 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: Quest. : 5 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 É 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. Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais objetos 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. 6. Mediator: Define um objeto que encapsula a forma como um conjunto de objetos interage. Mediator promove o acoplamento fraco ao evitar que os objetos se refiram explicitamente uns aos outros, permitindo que você varie suas interações independentemente. (Gamma et al., 2000). Sobre este padrão de projetos podemos afirma com certeza: Quest. : 6 Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais objetos É 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. Considerando objetos que implementem arrays, pode ser visto como uma classe intermediária de comunicação e gerenciamento, evitando que os objetos se comuniquem de forma direta tem uma grande facilidade de mudança de comportamento, pode-se alterar seu funcionamento sem que seja necessário nenhuma mudança nas demais classes envolvidas, desde que envolvam coleções e matrizes. 1. O principal objetivo do Padrão Visitor é: Quest.: 1 Permitir que sejam adicionadas novas funcionalidades a classes previamente concebidas, sem que haja necessidade de alterar sua implementação. Quando uma abstração tem dois aspectos, um independente do outro, de impedir o encapsulamento de tais aspectos em objetos separados. Fornecer um guia de como instanciar objetos e classes. Criar uma maneira de separar um algoritmo genérico da estrutura de um objeto. Criar um acoplamento forte entre os objetos, tendo em vista que um objeto deve ser capaz de avisar outros fazendo suposições sobre quem são os objetos. 2. considere a definição: O padrão Strategy define uma família de algoritmos , encapsula cada um deles , e torna-os intercambiáveis, permitindo assim que os algoritmos variem independentemente dos clientes que os utilizam (Gamma et al., 2000). Qual das alternativas é completamente verdadeira? Quest.: 2 O principal objetivo do padrão acima é conservar as funcionalidades em não se permitaadicionar novas, E obriga que haja necessidade de alterar sua implementação 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. A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; 3. considere a definição: Observer: Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente. (Gamma et al., 2000). Qual das alternativas é completamente verdadeira? Quest.: 3 A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementação 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. O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. 4. 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? Quest.: 4 O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; 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. O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementação A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. 5. ( CESGRANRIO - 2008) "Classes devem estar abertas para extensão e fechadas para modificação" é um princípio de projeto de modelos orientados a objetos. Tal princípio pode ser aplicado através do padrão de projeto Quest.: 5 singleton. prototype. flyweight. decorator. builder. 6. (CESGRANRIO - 2009) O presidente de uma empresa determinou que fosse disponibilizado um sistema de vendas na Internet. No entanto, o software de controle de estoque que deve ser acessado pela aplicação de vendas é muito antigo e provê uma API (Application Programming Interface) de uso muito complicado. Para que os desenvolvedores possam acessar uma interface mais simples, o arquiteto do sistema pode determinar o uso do padrão de projeto Quest.: 6 Observer. Decorator. Façade. Flyweight. Prototype. Aula 08 1. Marque a alternativa que está relacionada ao padrão de projeto que é responsável por selecionar quais responsabilidades devem estar em quais classes. Quest.: 1 Criador Acoplamento fraco State Especialista da informação Observador 2. Marque a alternativa que está relacionada ao padrão de projeto que é auxiliar a reduzir o impacto de modificações em uma aplicação. Quest.: 2 State Especialista da informação Criador Observador Acoplamento fraco 3. (ESAF - 2005) Analise as seguintes afirmações relacionadas a padrões de projetos: 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 método Abstract Factory fornece uma interface para a criação de uma família de objetos relacionados ou dependentes sem especifi car suas classes completas. III. O padrão Bridge defi ne uma interface para criar um objeto, mas deixa as subclasses decidirem que classe será instanciada. O Bridge permite a uma classe postergar a instanciação das subclasses. IV. O Chain of responsability 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. Quest.: 3 II e III III e IV I e II II e IV I e III 4. O autor Larman (2007) afirma que as responsabilidades estão relacionadas com as obrigações de um objeto, sendo divididas em dois tipos. Escolha dos dois tipos corretos nas afirmativas abaixo: I) Fazer: fazer algo propriamente dito, como criar um objeto ou realizar um cálculo. Iniciar uma ação em outros objetos. Controlar e coordenar atividades em outros objetos. II) Saber: ter conhecimento sobre dados privados encapsulados. Conhecer objetos relacionados. Ter conhecimento sobre funções que ele pode derivar ou calcular. III) Calcular: Fazer um cálculo especifico ao criar um objeto desde que envolva métodos que necessitem de cálculo. Quest.: 4 As afirmativas II e III são responsabilidades definidas pelo autor. e a afirmativa I não foi definida. Todas as afirmativas são responsabilidades definidas pelo autor. Todas as afirmativas não são responsabilidades definidas pelo auto As afirmativas I e III são responsabilidades definidas pelo autor. e a afirmativa II não foi definida. As afirmativas I e II são responsabilidades definidas pelo autor. e a afirmativa III não foi definida. 5. Marque a alternativa que apresenta apenas padrões GRASP? Quest.: 5 Coesão alta, controlador, strategyCoesão alta, controlador e polimorfismo Observer, visitor, strategy Coesão alta, polimorfismo, visitor Controlador, polimorfismo e Memento 6. Sobre o padrão Command: I - É ideal para acessar elementos de coleções, matrizes ou estruturas de dados encadeados II - A vantagem desta abordagem é que o objeto que está 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 do sistema, uma vez que permite a adição de novas funcionalidades (comandos) sem a necessidade de mudar a arquitetura. podemos afirmar: Quest.: 6 As afirmativas I, II, estão corretas e a afirmativa III está errada As afirmativas I, II, III e IV estão corretas. As afirmativas I, III, estão corretas e II errada As afirmativas I, II, III estão incorretas As afirmativas II, III estão corretas e a afirmativa I está errada. Aula 09 1. sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Quest.: 1 Define-se vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. Define-se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. Define-se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método na nova classe. Isto é polimorfismo. 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 correpondente. Isto é polimorfismo. 2. 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? Quest.: 2 Coesão alta Controlador Especialista da informação Polimorfismo Baixo acoplamento 3. Considere a figura abaixo E escolha a opção correta sobre a gravura: Quest.: 3 A Classe instanciada assinalada como :???? Deveria estar incorporada na classe emprestar para evitar criar uma serie de novas classes. Isto facilita o projeto. A Classe instanciada assinala como :???? É de baixo acoplamento e baixa coesão pela natureza de sua criação. A classe instanciada assinalada como :???? Permite desacoplar as classes e métodos de apresentação. E isto aumenta a reutilização das classes de negocio. A Classe instanciada assinalada como :???? Não pode ser decomposta em outros controladores. Assim temos que trabalhar com o tipo de coesão resultante (temporal, funcional...) uma classe de controle exige que sempre se tem há uma classe de apresentação. Desta forma não podemos ter mais de uma classe de controle por sistema 4. 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? Quest.: 4 Especialista da informação Baixo acoplamento Controlador Coesão alta Criador 5. (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 Quest.: 5 aggregator é utilizado para compor objetos em estruturas de árvore, para representar hierarquias. decorator é utilizado para prover uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna. bridge é utilizado para desacoplar uma abstração de sua implementação para que os dois possam variar independentemente. composite é utilizado para oferecer uma interface única para um conjunto de interfaces de um subsistema, definindo uma interface de nível mais elevado que torna o subsistema mais fácil de usar. memento permite definir uma nova operação, sem mudar as classes dos elementos nos quais opera. 6. (COPEVE-UFAL - 2011) O diagrama de classes apresentado na figura não representa fielmente um buffer que passa por estados sucessivos de transformação. Em outras palavras, um buffer, que está inicialmente vazio, depois pode ficar parcialmente cheio e, possivelmente, pode ficar cheio. Dentre as opções apresentadas a seguir, qual o padrão de projetos que melhor se adequaria para modelar essa característica dinâmica do buffer? Quest.: 6 Dynamic behavior. Mediator. Composite. State. Singleton. 1. 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? Quest.: 1 variações protegidas Invenção Pura controlador Indireção polimorfismo 2. O padrão Invenção Pura tem como característica: Quest.: 2 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. É 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. é 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. 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. 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. 3. (CESPE 0 2007) Considerando a figura, que apresenta um diagrama de relacionamento entre os padrões de projeto descritos no livro GoF Book, julgue os próximos itens acerca dos conceitos de programação orientada a objetos e padrões de projetos orientados a objetos. Que st.: 3 I A implementação de padrões de projeto criacionais em linguagens como C#, Delphi e Java sempre envolverá a alocação de memória para a criação de objetos. II A implementação de montadores de árvores sintáticas apóia-se mais no uso do padrão Singleton que no uso do padrão Composite. III A implementação de tratadores de eventos de interface gráfica apóia-se mais no uso do padrão Observer que no uso do padrão Visitor. IV A implementação de famílias portáveis de componentes de interface gráfica depende mais do emprego do padrão Chain of Responsibility que do padrão AbstractFactory. V O padrão TemplateMethod é mais simples queo padrão Memento. Estão certos apenas os itens II, III e V. II, III e IV. I, III e V. I, IV e V. I, II e IV. 4. Selecione a opção totalmente correta da responsabilidade correta para o do padrão GRASP Criador: Quest.: 4 A responsabilidade é definida pelo programador baseado nos métodos solicitados pela classe que está sendo criada. O padrão de projeto está interessado no algoritmo de criação, e a determinar qual classe dever ser responsável pelo uso de um novo método referente a classe inicial. Tem a responsabilidade de como primeira atividade procura-se objetos de software existentes que satisfaçam os métodos necessários para a criação do objeto. Uma criação fica definida pela definida pela própria classe alocando-se o método. Tem a seguinte responsabilidade de responder de maneira intuitiva por um programador ou analista de sistema, baseado nas interação e nos métodos menos utilizados, desta forma otimizando a criação. Tem a seguinte responsabilidade de fazer, pois sua funcionalidade está relacionado com a resposta a seguinte pergunta: quem deve criar um objeto A. 5. Considere a seguinte definição: "Define um objeto que encapsula o modo como um conjunto de objetos interage. Promove um acoplamento fraco entre objetos, evitando que referenciem diretamente um ao outro e permitindo que se possa variar a interação entre eles de modo independente.(Gamma et al., 2000)" Marque a alternativa que indica o nome do padrão relacionado: Quest.: 5 Strategy Mediator Prototype Observer Singleton 6. 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 Quest.: entre objetos? 6 Polimorfismo Controlador Invenção Pura Variações Protegidas Indireção Proposições certas em negrito. Pegadinhas e observações em itálico e sublinhado. Q: Os design patterns ...: 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. 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 padrões de projeto representando‐os como colaborações. 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. Q: Considere as afirmativas abaixo sobre o padrão prototype: 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 for necessário. Q: Considere as afirmativas 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. Q: 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. II ‐ 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. Q: Sobre padrões de projeto escolha a opção incorreta. Cada padrão descreve um problema que ocorrem repetidas vezes em nosso ambiente e fornece o núcleo da solução para aquele problema, de tal maneira que se pode usar essa solução milhões de vezes sem nunca fazê‐la da mesma forma Um padrão de projeto define uma estrutura que obrigatoriamente não poderá ser alterada pelo desenvolvedor A diversidade de padrões disponíveis é bastante grande, pode‐se ter, por exemplo, padrões arquiteturais, padrões de análise, padrões de projeto e padrões de código. Os padrões de projeto são descrições de objetos que se comunicam e classes que são customizadas para resolver um problema genérico de design em um contexto específico. Padrões de projeto estão relacionados a diferentes níveis de abstração no desenvolvimento de aplicações orientadas a objetos, podendo aparecer ao longo de todo ciclo de análise e projeto de um sistema Q: Além dos benefícios tradicionais relacionados com produtividade, redução do tempo de desenvolvimento e reaproveitamento de soluções passadas, a utilização de padrões de projeto pode contribuir ainda nos seguintes aspectos I ‐ É uma abordagem complementar, auxiliam os analistas e desenvolvedores a melhor utilizar as práticas tradicionais de análise e projeto orientado a objetos, tais como abstração, encapsulamento, herança, polimorfismo, entre outros. II ‐ Cada padrão descreve um conjunto de problemas e a solução é única não podendo ser alterado III ‐ Auxiliam programadores inexperientes a desenvolverem soluções mais elegantes, melhor documentadas, padronizadas e reutilizáveis. IV ‐ Muitos dos padrões de projeto desenvolvidos auxiliam no refatoramento da aplicação. Q: Baixo acoplamento é um princípio‐chave na Orientação objetos. O que deve ser feito para garantir o baixo acoplamento na definição dos objetos/classe/subsistema/sistema. Gabarito: Deve‐se manter os objetos/classe/subsistema/sistema o mais independente possível, ou seja, não possui conhecimento sobre o outro ou confia em outro. [Pode‐se falar também da coesão. Classes coesas tendem a ser menos acopladas] Q: Os métodos polimórficos utilizam os conceitos de overloading e overrinding. Apresente a diferença entre os dois conceitos. Gabarito: O conceito OVERLOADING é a sobrecarga dos métodos: define vários métodos de mesmo nome com assinaturas diferentes. O conceito OVERRIDING altera o comportamento do método na subclasse, mantendo a mesma assinatura, com funcionalidade diferente. Q: 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. A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes,onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, e obriga que haja necessidade de alterar sua implementação O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; Q: Sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: [Não precisa de figura, respostas idiotas e, de certa forma, erradas] Define‐se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Define‐se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. 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 correpondente. Isto é polimorfismo. [Também é polimorfismo quando o método da classe pai está implementado e a classe que herda o método o sobrescreve (override), portanto esta definição é pífia] Define‐se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método na nova classe. Isto é polimorfismo. Define‐se vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. Q: O padrão Indireção tem como característica: 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. é 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. 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. 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. É 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. Q: 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: 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 tem uma grande facilidade de mudança de comportamento, pode‐se alterar seu funcionamento sem que seja necessário nenhuma mudança nas demais classes envolvidas, desde que envolvam coleções e matrizes. É 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. É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais objetos Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação. Q: Marque a alternativa que está relacionada ao padrão de projeto que é auxiliar a reduzir o impacto de modificações em uma aplicação. State Acoplamento fraco Observador Especialista da informação Criador Q: 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. Q: Seguindo os princípios Especialista da Informação qual o critério deve ser adotado na escolha de uma classe para receber uma nova responsabilidade? Gabarito: Deve‐se buscar a classe que conhece do contexto da nova responsabilidade através de seus atributos e métodos já definidos. Q: 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 Invenção Pura Controlador Variações Protegidas Polimorfismo Q: 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? Baixo acoplamento Esp. da informação Controlador Polimorfismo Coesão alta Q: 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: [Resposta da questão no próprio enunciado =D] Este padrão de projeto oferece pouca flexibilidade na arquitetura do sistema, uma vez que não permite adição de novas funcionalidades O objetivo do padrão de projeto Command é encapsular chamadas de métodos. esta abordagem é que o objeto que está realizando a chamada do método precisa conhecer com detalhes sobre seu funcionamento. Os métodos, nesta abordagem devem ser padronizados e hierarquizados de forma que a implementação trabalhe novos objetos. Nesta abordagem o objeto que está realizando a chamada do método precisa conhecer com detalhes a implementação em relação asparente ao local, tempo e ao objeto que vai realizar uma determinada tarefa Q: 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? [Questão idiota. Sempre se busca esses princípios, com todos os padrões] Controlador Indireção polimorfismo variações protegidas Invenção Pura Q: 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? Especialista da informação Polimorfismo Acoplamento fraco Observador State Q: Considerando a classe de projetos GoF assinale a opção cujos padrões de projeto estão todos classificados como Estruturais: singleton; bridge ; protype; decorator ; façade ; flyweight ; Proxy; adapter; bridge; composite; decorator ; façade ; flyweight; Proxy; adapter; bridge ; composite ; decorator ; façade ; flyweight ; singleton; singleton; bridge ; composite; decorator ; façade ; flyweight; Proxy; adapter; bridge ; protype; decorator ; façade ; flyweight ; singleton [Revisando] Padrões de Criação [5]: Abstract Factory, Builder, Factory Method, Prototype e Singleton.Padrões Estruturais [7 / ABCDFFP]: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy Padrões Comportamentais [11]: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. Q: Segundo a classificação de Design Patterns apresentada pela GoF, identifique com V os padrões comportamentais e com F, os demais. Observer. Iterator. Façade. Composite. Visitor. Q: O autor Larman (2007) afirma que as responsabilidades estão relacionadas com as obrigações de um objeto, sendo divididas em dois tipos. Escolha dos dois tipos corretos nas afirmativas abaixo: I ‐ Fazer: fazer algo propriamente dito, como criar um objeto ou realizar um cálculo. Iniciar uma ação em outros objetos. Controlar e coordenar atividades em outros objetos. II ‐ Saber: ter conhecimento sobre dados privados encapsulados. Conhecer objetos relacionados. Ter conhecimento sobre funções que ele pode derivar ou calcular. III ‐ Calcular: Fazer um cálculo especifico ao criar um objeto desde que envolva métodos que necessitem de cálculo. Q: 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 falsas as duas afirmações são verdadeiras, e a segunda não justifica a primeira. as duas afirmações são verdadeiras, e a segunda justifica a primeira. a primeira afirmação é verdadeira, e a segunda é falsa. a primeira afirmação é falsa, e a segunda é verdadeira. Q: 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 [Atenção para o modificador static que está escrito errado porém a proposição é considerada correta!] 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; Q: 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. É 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. Fornece orientação de aplicação em circunstâncias variáveis. 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. São definidos por especialistas de problemas e servem para aplicação direta em qualquer contexto. Q: 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, Behavioral Patterns, Structural Patterns e Standard Patterns. Structural Patterns, Standard Patterns e Creational Patterns. Standard Patterns, Creational Patterns e Structural Patterns. Creational Patterns, Structural Patterns e Behavioral Patterns. Standard Patterns, Structural Patterns e Behavioral Patterns. Q: 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. FACADE. BUILDER. SINGLETON. FACTORY METHOD. MEDIATOR. Q: 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". [Nesta situação, utiliza‐se o Builder] Quando classes delegam responsabilidade para uma entre várias subclasses de apoio. Quando se quer localizar num ponto único a conhecimento de qual subclasse está sendo usada. Quando uma classe quer que suas subclasses especifiquem os objetos criados. Quando uma classe (o criador) não pode antecipar a classe dos objetos que deve criar. Segundo Metsker, o padrão de projeto GoF _________________ é aplicado para substituir a geração de instâncias não‐inicializadas de uma classe, fornecendo novos objetos a partir de uma classe‐exemplo. BUILDER. SINGLETON. FACTORY METHOD. MEDIATOR. PROTOTYPE. Q: 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. 4 ‐ 3 ‐ 1 – 2 Q: Na UML, o padrão Singleton (GoF) pode ser visto como na classe abaixo: Sobre o padrão de projeto Singleton, 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. [Não pois não se sobrescreve método estático] IV ‐ o método getInstance() deverá ser obrigatoriamente declarado como um método estático (static). Q: 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 foco do Adapter é a solução de incompatibilidades entre duas interfaces existentes. O Bridge estabelece uma ponte entre uma abstração e suas possíveis implementações. O Adapter é inferior ao Bridge porque não evita a replicação de código. Ambos são padrões estruturais que possuem alguns atributos em comum. Ambos promovem a flexibilidade ao fornecer um nível de endereçamento indireto para outro objeto. Q: Relacione os padrões de projeto às suas indicações de uso. I ‐ Ponte II ‐ Observador III ‐ Decorador P ‐ Mostra como adicionar responsabilidades aos objetos dinamicamente. Q ‐ Separa a abstração de um objeto de sua implementação. R ‐ Define e mantém dependência entre objetos. S ‐ Define um objeto que encapsula como um conjunto de objetos que interagem. Gabarito: I‐Q, II‐R, III‐P Q: "Classes devem estar abertas para extensãoe fechadas para modificação" é um princípio de projeto de modelos orientados a objetos. Tal princípio pode ser aplicado através do padrão de projeto decorator. builder. singleton. flyweight. prototype. Q: O presidente de uma empresa determinou que fosse disponibilizado um sistema de vendas na Internet. No entanto, o software de controle de estoque que deve ser acessado pela aplicação de vendas é muito antigo e provê uma API (Application Programming Interface) de uso muito complicado. Para que os desenvolvedores possam acessar uma interface mais simples, o arquiteto do sistema pode determinar o uso do padrão de projeto Decorator. Observer. Prototype. Flyweight. Façade. Q: considere a definição: Observer: Definir uma dependência um‐para‐muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente. (Gamma et al., 2000). Qual das alternativas é completamente verdadeira? [A assertiva correta parece mais com a definição de Visitor (Double Dispatch) do que de Observer, ou até mesmo com Bridge, no qual abstração e implementação variam de forma independente; mas...] O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementação A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. 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. Q: As principais aplicabilidades do padrão command de projeto são: I) permitir fácil inclusão de novos comandos; II) permitir tratamento de requisições concorrentes, manter histórico de execução de comandos; III) suportar operações para desfazer comandos e; IV) evitar o acoplamento direto entre classes e serviços. Q: Marque a alternativa que está relacionada ao padrão de projeto que é responsável por selecionar quais responsabilidades devem estar em quais classes. Observador Acoplamento fraco Criador State Especialista da informação Q: Considere a definição: State: Permitir a um objeto alterar o seu comportamento quando o seu estado interno mudar. O objeto parecerá ter mudado de classe (Gamma et al., 2000). Qual das alternativas é completamente verdadeira? A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. 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. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementação Q: (ESAF ‐ 2005) Analise as seguintes afirmações relacionadas a padrões de projetos: 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 método Abstract Factory 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 Bridge define uma interface para criar um objeto, mas deixa as subclasses decidirem que classe será instanciada. O Bridge permite a uma classe postergar a instanciação das subclasses. IV. O Chain of responsability 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. Q: 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. [Note que o Visitor também adiciona funcionalidades, porém em tempo de execução; o State também o faz, porém de acordo com o estado interno] Visitor Strategy Memento Observer State Q: 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 o desenvolvimento e melhoria da qualidade da aplicação. 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 e 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 de 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 tudo que é relacionado à sua própria informação. As afirmações correspondem, respectivamente, aos padrões I‐Protoype, II‐Facade, III‐Iterator, IV‐Expert (Especialista da Informação) Q: O padrão Invenção Pura tem como característica: 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. [Indireção] é 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. [Controller] 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. [Expert] É 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. [Variações protegidas] 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. Q: Selecione a opção totalmente correta da responsabilidade correta para o do padrão GRASP Criador: Tem a seguinte responsabilidade de fazer, pois sua funcionalidade está relacionado com a resposta a seguinte pergunta: quem deve criar um objeto A. O padrão de projeto está interessado no algoritmo de criação, e a determinar qual classe dever ser responsável pelo usode um novo método referente a classe inicial. [Atenção para a pegadinha desta assertiva!] A responsabilidade é definida pelo programador baseado nos métodos solicitados pela classe que está sendo criada. Tem a seguinte responsabilidade de responder de maneira intuitiva por um programador ou analista de sistema, baseado nas interação e nos métodos menos utilizados, desta forma otimizando a criação. Tem a responsabilidade de como primeira atividade procura‐se objetos de software existentes que satisfaçam os métodos necessários para a criação do objeto. Uma criação fica definida pela definida pela própria classe alocando‐se o método. PADRÕES DE PROJETO DE SOFTWARE Simulado: CCT0152_SM_201102137715 V.2 VOLTAR Aluno(a): SUMMERSON DE SOUZA GONCALVES Matrícula: 201102137715 Desempenho: 7,0 de 8,0 Data: 28/09/2013 12:18:37 (Finalizada) 1a Questão (Ref.: 200624630323) Pontos: 0,0 / 1,0 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. As afirmativas I, III, estão corretas e II errada As afirmativas estão todas corretas 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, II, III estão incorretas 2a Questão (Ref.: 200624630324) Pontos: 1,0 / 1,0 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: Instance protype Singleton Bridge Decorator. 3a Questão (Ref.: 200624630773) Pontos: 1,0 / 1,0 Segundo Metsker, o padrão de projeto GoF _________________ é aplicado para substituir a geração de instâncias não-inicializadas de uma classe, fornecendo novos objetos a partir de uma classe-exemplo. BUILDER. FACTORY METHOD. SINGLETON. MEDIATOR. PROTOTYPE. 4a Questão (Ref.: 200624630345) Pontos: 1,0 / 1,0 Uma das categoria que tradicionalmente se classificam os padrões de projeto: Padrões de criação cujo objetivo é: Define formas de gerencia e combinar diferentes comportamentos. Define a forma de organização dos objetos e sua colaboração mutua Define como implantar um novo método em uma classe. Define como implantar o mecanismo de herança em um grupo de objetos Define formas de instanciar objetos delegando responsabilidades 5a Questão (Ref.: 200624660336) Pontos: 1,0 / 1,0 BDQ Prova http://simulado.estacio.br/bdq_simulados_prova_preview.asp?hist=93... 1 de 3 28/09/2013 12:26 Para fazer a modelagem de um padrão de projeto (design pattern) utilizando a UML é DESNECESSÁRIO. identificar as soluções comuns para o problema básico. fazer a modelagem do mecanismo como uma colaboração, fornecendo seus aspectos estruturais, assim como os aspectos comportamentais. 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 específicas e particulares para o problema básico e reificá-la como um mecanismo. 6a Questão (Ref.: 200624630796) Pontos: 1,0 / 1,0 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. Facade. Builder. Factory Method. Singleton. Mediator 7a Questão (Ref.: 200624630797) Pontos: 1,0 / 1,0 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. Builder. Factory Method. Mediator. Singleton. Facade. 8a Questão (Ref.: 200624630330) Pontos: 1,0 / 1,0 Assinale a afirmativa correta sobre o padrão Builder: é 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 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. 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. BDQ Prova http://simulado.estacio.br/bdq_simulados_prova_preview.asp?hist=93... 2 de 3 28/09/2013 12:26 A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida 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. 9a Questão (Ref.: 200624535535) O uso de classes "statics" garante que somente uma instãncia estará em memória e que a destruição pelo "garbage collection" será mais rápida do que o uso do padrão singleton. Por que então devemos usar o padrão singleton? Sua Resposta: Compare com a sua resposta: Porque uma classe ¿static¿ SEMPRE é carregada na memória quando a aplicação é executada e a classe singleton não, sendo carregada na memória quando solicitada a primeira instância. 10a Questão (Ref.: 200624535532) Decorator tem como principal objetivo a decoração de classes em tempo de execução, isto é, adicionar novos produtos e/ou novas responsabilidades à objetos dinamicamente sem alterar o código das classes existentes. Descreva um exemplo que represente esse padrão. Sua Resposta: Compare com a sua resposta: Em uma janela pode-se adicionar objetos como barras de rolagem, caixas de texto, labels, etc. Pode-se criar uma classe JanelaDecorador que será estendida pelos decoradores que irão inserir propriedades na janela. Podendo incluir barra vertical, horizontal e para cada criar outra classe decorador, inserindo características novas. VOLTAR Período de não visualização da prova: desde até . BDQ Prova http://simulado.estacio.br/bdq_simulados_prova_preview.asp?hist=93... 3 de 3 28/09/2013 12:26 22/06/2015 BDQ Prova data:text/html;charset=utf8,%3Cbody%20bgcolor%3D%22%23FFFFFF%22%20link%3D%22%23333333%22%20vlink%3D%22%23333333%22%20alin… 1/2 PADRÕES DE PROJETO DE SOFTWARE Simulado: CCT0075_SM_201201233887 V.1 Fechar Aluno(a): MICHEL PEREIRA DA NOBREGA MARINHO Matrícula: 201201233887 Desempenho: 0,5 de 0,5 Data: 08/06/2015 19:44:40 (Finalizada) 1a Questão (Ref.: 201201839167) Pontos: 0,1 / 0,1 O General Responsability Assignment Software Pattener que define a responsabilidade: De se criar camadas que forem necessárias para melhor organizar o projeto. Se denomina? Information Expert Controller Pure Fabrication Indirection Variation 2a Questão (Ref.: 201201850892) Pontos: 0,1 / 0,1 Especificar os tipos de objetos a serem criados usando uma instância como protótipo e criar novos objetos ao copier este protótipo. Para qual padrão de projeto a afirmação se relaciona?Abstract Factory Adapter Observer Nra Memento 3a Questão (Ref.: 201201376243) Pontos: 0,1 / 0,1 (FCC2011) 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. Acerca dessas asserções, é correto afirmar: A primeira asserção é uma proposição falsa, e a segunda, uma proposição verdadeira. A primeira asserção é uma proposição verdadeira, e a segunda, uma proposição falsa. As duas asserções são proposições verdadeiras, mas a segunda não é a justificativa correta da primeira. As duas asserções são proposições verdadeiras, e a segunda é a justificativa correta da primeira. Tanto a primeira quanto a segunda asserções são proposições falsas. 22/06/2015 BDQ Prova data:text/html;charset=utf8,%3Cbody%20bgcolor%3D%22%23FFFFFF%22%20link%3D%22%23333333%22%20vlink%3D%22%23333333%22%20alin… 2/2 4a Questão (Ref.: 201201335055) Pontos: 0,1 / 0,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. Analisandose as afirmações acima, concluise que ... . As duas afirmações são falsas as duas afirmações são verdadeiras, e a segunda justifica a primeira. a primeira afirmação é falsa, e a segunda é verdadeira. a primeira afirmação é verdadeira, e a segunda é falsa. as duas afirmações são verdadeiras, e a segunda não justifica a primeira. 5a Questão (Ref.: 201201839174) Pontos: 0,1 / 0,1 O Paradigma Orientado a Objetos com os padrões de responsabilidades GRASP definem que a melhor técnica de programação POO é: Desenvolver as classes sem coesão e com acoplamento. Desenvolver as classes com a maior coesão e menor acoplamento possível. Desenvolver as classes com a maior coesão e maior acoplamento possível. Desenvolver as classes com a menor coesão e maior acoplamento possível. Desenvolver as classes com a menor coesão e menor acoplamento possível. 1a Questão (Cód.: 125498) Pontos: 1,5 / 1,5 Baixo acoplamento é um princípio-chave na Orientação objetos. O que deve ser feito para garantir o baixo acoplamento na definição dos objetos/classe/subsistema/sistema. Resposta: E necessário que os objetos tenha alta coesão e que cada objeto seja responsável por uma determinada função, auxiliando assim o impacto de modificações em uma aplicação. Gabarito: Deve-se manter os objetos/classe/subsistema/sistema o mais independente possível, ou seja, não possui conhecimento sobre o outro ou confia em outro. 2a Questão (Cód.: 125529) Pontos: 0,0 / 1,5 Os métodos polimórficos utilizam os conceitos de overloading e overrinding. Apresente a diferença entre os dois conceitos. Resposta: Gabarito: O conceito OVERLOADING é a sobrecarga dos métodos: define vários métodos de mesmo nome com assinaturas diferentes. O conceito OVERRIDING altera o comportamento do método na subclasse, mantendo a mesma assinatura, com funcionalidade diferente. 3a Questão (Cód.: 116737) Pontos: 1,0 / 1,0 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. A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementação O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; 4a Questão (Cód.: 116815) Pontos: 0,0 / 0,5 sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Define-se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. 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 correpondente. Isto é polimorfismo. Define-se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método na nova classe. Isto é polimorfismo. Define-se vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. 5a Questão (Cód.: 116936) Pontos: 0,5 / 0,5 O padrão Indireção tem como característica: 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. é 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. 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. 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. É 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. 6a Questão (Cód.: 115668) Pontos: 0,0 / 1,0 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: 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 tem uma grande facilidade de mudança de comportamento, pode-se alterar seu funcionamentosem que seja necessário nenhuma mudança nas demais classes envolvidas, desde que envolvam coleções e matrizes. É 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. É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais objetos Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação. 7a Questão (Cód.: 116752) Pontos: 0,5 / 0,5 Marque a alternativa que está relacionada ao padrão de projeto que é auxiliar a reduzir o impacto de modificações em uma aplicação. State Acoplamento fraco Observador Especialista da informação Criador 8a Questão (Cód.: 107796) Pontos: 0,5 / 0,5 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 I, II, III estão incorretas 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 I, II, estão corretas e a afirmativa III está errada. As afirmativas estão todas corretas 9a Questão (Cód.: 107782) Pontos: 0,0 / 0,5 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 I, III, estão corretas e II errada As afirmativas estão todas corretas As afirmativas I, II, III estão incorretas As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, II, estão corretas e a afirmativa III está errada. 10a Questão (Cód.: 107793) Pontos: 0,5 / 0,5 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 II, III estão corretas e a afirmativa I está errada. As afirmativas I, II, III estão incorretas As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas I, III, estão corretas e II errada As afirmativas estão todas corretas 19/10/2015 BDQ Prova http://simulado.estacio.br/bdq_simulados_ead_ens_preview.asp?cript_hist=5140694530 1/2 PADRÕES DE PROJETO DE SOFTWARE Simulado: CCT0075_SM_201301481181 V.1 Fechar Aluno(a): LEONARDO TERRA GOMES RESENDE Matrícula: 201301481181 Desempenho: 0,1 de 0,5 Data: 09/09/2015 10:38:24 (Finalizada) 1a Questão (Ref.: 201302111191) Pontos: 0,0 / 0,1 O General Responsability Assignment Software Pattener que define a responsabilidade: De se criar camadas que forem necessárias para melhor organizar o projeto. Se denomina? Information Expert Indirection Controller Variation Pure Fabrication 2a Questão (Ref.: 201302112591) Pontos: 0,0 / 0,1 Os Padrões de Projeto dependem de: Paradigma Sistemas Operacionais Plataforma Linguagem Arquitetura 3a Questão (Ref.: 201302111190) Pontos: 0,0 / 0,1 O General Responsability Assignment Software Pattener que define a responsabilidade: Comportamentos com o mesmo nome mas que fazem operações deferentes. Tratase de? Indirection Polymorphis Pure Fabrication High Coesion Information Expert 4a Questão (Ref.: 201301636606) Pontos: 0,1 / 0,1 Com relação a abordagem MVC (Modelo/Visão/Controlador), analise as sentenças a seguir: I) Define a lógica da implementação em camadas, composta por três tipos de objetos: Modelo, Visão e Controlador. II) Permite acoplamento alto entre as camadas; III) Reutilização de objetos; IV) Distribui a carga de processamento do sistema; 19/10/2015 BDQ Prova http://simulado.estacio.br/bdq_simulados_ead_ens_preview.asp?cript_hist=5140694530 2/2 Analise as alternativas e escolha a que aponta as sentenças verdadeiras. I II IV I III IV I III I II III II III IV 5a Questão (Ref.: 201302221725) Pontos: 0,0 / 0,1 Construtores em Java definem uma maneira padrão de construir objetos. No entanto, depender de construtores para instanciar objetos pode nos levar a alguns problemas dos quais podemos citar, exceto: Cliente pode não ter ou não saber todos os dados necessários para instanciar um objeto através de construtores Não é preciso saber a classe concreta do objeto para criálo A aplicação cliente fica acoplada diretamente a uma implementação concreta para poder usar diretamente o construtor Objeto complexo pode necessitar da criação de objetos menores previamente, com certo controle difícil de implementar com construtores Usando diretamente os métodos construtores não há como limitar o número de instâncias criadas 1a Questão (Cód.: 101702) Pontos: 0,5 / 0,5 Podemos afirmar que padrões de projeto de software: dificultam de alguma foram a escolha de alternativas de projeto que tornam um sistema reutilizável, aumentando as alternativas que a comprometam. não influenciam nos procedimentos, regras e práticas relativas às técnicas orientadas a objetos. invariavelmente pioram a documentação e a manutenção dos sistemas. permitem descrever fragmentos de projeto e reusar idéias de projeto, ajudando desenvolvedores a se nivelar com a experiência de outros. difcultam a reutilização de projetos e arquiteturas bem sucedidas. 2a Questão (Cód.: 77779) Pontos: 0,0 / 1,0 Para fazer a modelagem de um padrão de projeto (design pattern) utilizando a UML é DESNECESSÁRIO. identificar as soluções específicas e particulares para o problema básico e reificá-la como um mecanismo. entender o padrão de projeto como uma colaboração representada com suas partes estruturais e comportamentais. 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. fazer a modelagem do mecanismo como uma colaboração, fornecendo seus aspectos estruturais, assim como os aspectoscomportamentais. identificar as soluções comuns para o problema básico. 3a Questão (Cód.: 107342) Pontos: 0,0 / 0,5 Segundo Metsker, o padrão de projeto GoF _________________ é aplicado para substituir a geração de instâncias não-inicializadas de uma classe, fornecendo novos objetos a partir de uma classe-exemplo. PROTOTYPE. SINGLETON. MEDIATOR. BUILDER. FACTORY METHOD. 4a Questão (Cód.: 101704) Pontos: 1,0 / 1,0 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. 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 Apenas as sentenças II e III estão corretas 5a Questão (Cód.: 107346) Pontos: 0,5 / 0,5 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". Quando classes delegam responsabilidade para uma entre várias subclasses de apoio. Quando uma classe (o criador) não pode antecipar a classe dos objetos que deve criar. Quando uma classe quer que suas subclasses especifiquem os objetos criados. Quando se quer localizar num ponto único a conhecimento de qual subclasse está sendo usada. 6a Questão (Cód.: 107318) Pontos: 1,0 / 1,0 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. Facade. Singleton. Factory Method. Builder. Mediator. 7a Questão (Cód.: 107781) Pontos: 0,5 / 0,5 considerando a classe de projetos GoF assinalem a opção cujos padrões de projeto estão todos classificados como Comportamentais Command,- bridge, - Iterator, - Mediator, - composite - State, Strategy Command,- bridge, - Iterator, - Mediator, bridge, State, Strategy Command,- Interpreter, - Iterator, - Mediator, - composite , State, Strategy Command,- bridge, - Iterator, - Mediator, - Observer, State, Strategy Command,- Interpreter, - Iterator, - Mediator, - Observer, State, Strategy 8a Questão (Cód.: 107319) Pontos: 1,0 / 1,0 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. Factory Method. Mediator Facade. Builder. Singleton. 9a Questão (Cód.: 107336) Pontos: 0,0 / 1,0 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. BUILDER. MEDIATOR. SINGLETON. FACADE. FACTORY METHOD. 10a Questão (Cód.: 107788) Pontos: 1,0 / 1,0 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; As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas I, II, III estão incorretas As afirmativas estão todas corretas As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, III, estão corretas e II errada 1a Questão (Ref.: 201401501107) Pontos: 0,1 / 0,1 Coesão 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. Os tipos de coesão podem ser: I - Funcional: ocorre quando um módulo executa um e somente um cálculo, e então retorna o resultado; II - Em camada: ocorre quando uma camada de mais alto nível tem acesso a serviços de camadas mais baixas, mas camadas mais baixas, não tem acesso a camadas mais altas. III- Comunicacional: todas as operações que tem acesso aos mesmos dados são definidas dentro de uma classe. IV - Interclasse: Todas as operações devem ser definidas envolvendo outras classes para garantir a coesão. As afirmativas totalmente corretas são As afirmativas I,II,III e IV estão corretas As afirmativas II,III,IV estão corretas e a afirmativa I está errada. As afirmativas I,II,III estão corretas e a afirmativa IV está errada. As afirmativas I,III,IV estão corretas e a afirmativa II está errada. As afirmativas I,II,IV estão corretas e a afirmativa III está errada. 2a Questão (Ref.: 201401985966) Pontos: 0,0 / 0,1 Qual o padrão comportamental utilizado baseando-se no diagrama de classe abaixo: Iterator Mediator Command Observer State 3a Questão (Ref.: 201401980646) Pontos: 0,1 / 0,1 Um padrão arquitetural que se preocupa em resolver o problema da organização objetivando facilitar a manutenção e aumentar a coesão entre classes afins e assim facilitar o reuso de código de forma ordenada e econômica, dividindo essas classes em camadas com finalidades específicas de armazenar os domínios da aplicação, as apresentações e as regras de negócio é denominado: Model-View-Control Pure Fabrication Monolítico Kernel NCamandas 4a Questão (Ref.: 201401977843) Pontos: 0,1 / 0,1 Converter a interface de uma classe em outra interface esperada pelos clientes. Permite a comunicação entre classes que não poderiam trabalhar juntas devido à incompatibilidade de suas interfaces. Para qual padrão de projeto a afirmação se relaciona? Proxy Singleton Nra Observer Memento 5a Questão (Ref.: 201401503271) Pontos: 0,0 / 0,1 (FCC - 2010) Em relação aos padrões de projetos orientados a objetos, separar dados ou lógica de negócios da interface do usuário e do fluxo da aplicação para permitir que uma mesma lógica de negócios possa ser acessada e visualizada através de várias interfaces, sem saber de quantas nem quais interfaces com o usuário estão exibindoseu estado, é característica do padrão de projeto arquitetural Expert. Observer. Creator. Layers. Model-View-Controller. 1a Questão (Ref.: 200525013567) Pontos: 0,0 / 1,0 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. Builder. Facade. Factory Method. Singleton. Mediator 2a Questão (Ref.: 200525013116) Pontos: 0,0 / 1,0 Uma das categoria que tradicionalmente se classificam os padrões de projeto: Padrões de criação cujo objetivo é: Define como implantar o mecanismo de herança em um grupo de objetos Define formas de gerencia e combinar diferentes comportamentos. Define a forma de organização dos objetos e sua colaboração mutua Define formas de instanciar objetos delegando responsabilidades Define como implantar um novo método em uma classe. 3a Questão (Ref.: 200525013093) Pontos: 1,0 / 1,0 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, III, estão corretas e II errada As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas estão todas corretas As afirmativas I, II, III estão incorretas 4a Questão (Ref.: 200525013568) Pontos: 0,0 / 1,0 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. Builder. Factory Method. Facade. Mediator. Singleton. 5a Questão (Ref.: 200525043107) Pontos: 0,0 / 1,0 Para fazer a modelagem de um padrão de projeto (design pattern) utilizando a UML é DESNECESSÁRIO. fazer a modelagem do mecanismo como uma colaboração, fornecendo seus aspectos estruturais, assim como os aspectos comportamentais. entender o padrão de projeto como uma colaboração representada com suas partes estruturais e comportamentais. 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. identificar as soluções comuns para o problema básico. identificar as soluções específicas e particulares para o problema básico e reificá-la como um mecanismo. 6a Questão (Ref.: 200525013095) Pontos: 0,0 / 1,0 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: protype Bridge Instance Decorator. Singleton 7a Questão (Ref.: 200525013544) Pontos: 0,0 / 1,0 Segundo Metsker, o padrão de projeto GoF _________________ é aplicado para substituir a geração de instâncias não-inicializadas de uma classe, fornecendo novos objetos a partir de uma classe-exemplo. SINGLETON. BUILDER. FACTORY METHOD. PROTOTYPE. MEDIATOR. 8a Questão (Ref.: 200525013101) Pontos: 0,0 / 1,0 Assinale a afirmativa correta sobre o padrão Builder: A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida 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 é 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. 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 9a Questão (Ref.: 200524918306) O uso de classes "statics" garante que somente uma instãncia estará em memória e que a destruição pelo "garbage collection" será mais rápida do que o uso do padrão singleton. Por que então devemos usar o padrão singleton? Compare com a sua resposta: Porque uma classe ¿static¿ SEMPRE é carregada na memória quando a aplicação é executada e a classe singleton não, sendo carregada na memória quando solicitada a primeira instância. 10a Questão (Ref.: 200524918303) Decorator tem como principal objetivo a decoração de classes em tempo de execução, isto é, adicionar novos produtos e/ou novas responsabilidades à objetos dinamicamente sem alterar o código das classes existentes. Descreva um exemplo que represente esse padrão. Compare com a sua resposta: Em uma janela pode-se adicionar objetos como barras de rolagem, caixas de texto, labels, etc. Pode-se criar uma classe JanelaDecorador que será estendida pelos decoradores que irão inserir propriedades na janela. Podendo incluir barra vertical, horizontal e para cada criar outra classe decorador, inserindo características novas. 26/11/2014 BDQ Prova http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp 1/4 Avaliação: CCT0265_AV_201201699101 » PADRÕES DE PROJETO DE SOFTWARE Tipo de Avaliação: AV Aluno: 201201699101 RAPHAEL NARDOTO BARBOZA Professor: HORACIO DA CUNHA E SOUZA RIBEIRO Turma: 9002/AA Nota da Prova: 6,0 Nota de Partic.: 0 Data: 14/11/2014 11:20:49 1a Questão (Ref.: 201201884681) Pontos: 0,5 / 0,5 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: 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 É 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. É bastante utilizado em programação de sistemas para gerenciar a comunicaçãoentre dois ou mais objetos 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. Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação 2a Questão (Ref.: 201201887385) Pontos: 0,5 / 0,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, tornandose 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, Behavioral Patterns, Structural Patterns e Standard Patterns. Structural Patterns, Standard Patterns e Creational Patterns. Creational Patterns, Structural Patterns e Behavioral Patterns. Standard Patterns, Structural Patterns e Behavioral Patterns. Standard Patterns, Creational Patterns e Structural Patterns. 3a Questão (Ref.: 201201876340) Pontos: 0,5 / 0,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 objetosalvo a partir dessa classe. 26/11/2014 BDQ Prova http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp 2/4 Escolha uma das alternativas abaixo que preenche corretamente a lacuna apresentada na descrição acima. BUILDER. FACTORY METHOD. FACADE. SINGLETON. MEDIATOR. 4a Questão (Ref.: 201201888054) Pontos: 0,5 / 0,5 (CESGRANRIO 2009) Por motivo de segurança, desejase adicionar registro (log) das operações efetuadas no sistema de contabilidade de uma empresa. O arquiteto do sistema decide que deve existir somente uma instância de uma classe de registro (log) e que esta será o ponto de acesso global para os demais componentes do sistema. Que padrão de projeto pode ser utilizado nesse caso? Bridge. Memento. Iterator. Singleton. Visitor. 5a Questão (Ref.: 201201884316) Pontos: 0,5 / 0,5 Podemos afirmar que os Padrões Estruturais da família GoF: Colocam em dúvida o tratamento dispensado aos usuários na fase de levantamento das necessidades. 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. Aumentam a responsabilidade do programador em depurar o código e as rotinas necessárias à documentação dos processos. 6a Questão (Ref.: 201201876791) Pontos: 0,5 / 0,5 considerando a classe de projetos GoF assinale a opção cujos padrões de projeto estão todos classificados como Estruturais: singleton; bridge ; composite; decorator ; faça de ; flyweight;¿ Proxy adapter ; bridge ; protype ¿ decorator ; faça de ; flyweight ; singleton adapter ; bridge ; composite ; decorator ; faça de ; flyweight ; Proxy singleton; bridge ; protype; decorator ; faça de ; flyweight ; Proxy adapter ; bridge ; composite ; decorator ; faça de ; flyweight ; singleton 7a Questão (Ref.: 201201894627) Pontos: 0,5 / 1,5 O que fazer para evitar o acoplamento alto e o reuso baixo entre dois ou mais elementos na hora de atribuir responsabilidades entre eles, segundo o princípio GRASP Indireção? 26/11/2014 BDQ Prova http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp 3/4 Resposta: Na hora de atribuir responsabilidades, devese seguir o Padrão do "Dono da Informação", fazendo com que tenham alta coesão, evitando assim o acoplamento alto e o reuso baixo. Gabarito: Devese atribuir responsabilidade a um objeto intermediário para mediar entre diversos componentes ou serviços, de maneira que eles não fiquem diretamente acoplados. 8a Questão (Ref.: 201201888023) Pontos: 1,0 / 1,0 (FGV 2009) Os padrões de projeto orientados a objeto podem ter finalidade de criação, estrutural ou comportamental. Os padrões de criação se preocupam com o processo de criação de objetos. Os padrões estruturais lidam com a composição de classes ou de objetos. Os padrões comportamentais caracterizam as maneiras pelas quais classes ou objetos interagem e distribuem responsabilidades. Assinale a alternativa que apresenta apenas padrões de projeto comportamentais. Singleton, Composite e Interpreter. Prototype, Abstract Factory e Builder. Mediator, Interpreter e Command. Proxy, Builder e Mediator. Composite, Decorato e Proxy. 9a Questão (Ref.: 201201971590) Pontos: 1,5 / 1,5 Considerando que o padrão tem o objetivo de garantir que existe apenas uma instancia de uma certa classe a qualquer instante e em qualquer ponto de um sistema. Indique o padrão mencionado e cite uma vantagem de sua utilização. Resposta: Padrão Singleton. A adoção do padrão Singleton permite que o sistema possa ter um controel efetivo de alteração em suas variáveis. Gabarito: padrão singleton uma vantagem apontada é o desempenho de uma aplicação. 10a Questão (Ref.: 201201888028) Pontos: 0,0 / 1,0 (COPEVEUFAL 2011) O diagrama de classes apresentado na figura não representa fielmente um buffer que passa por estados sucessivos de transformação. Em outras palavras, um buffer, que está inicialmente vazio, depois pode ficar parcialmente cheio e, possivelmente, pode ficar cheio. Dentre as opções apresentadas a seguir, qual o padrão de projetos que melhor se adequaria para modelar essa característica dinâmica do buffer? State. Composite. Mediator. HORACIO DA CUNHA E SOUZA RIBEIRO Turma: 1 Questão (Ref.: 201311218072) Pontos: / 1,5 2 Questão (Ref.: 201311695027) Pontos: 0,0 / 1,5 3 Questão (Ref.: 201311662807) Pontos: 0,5 / 0,5 BDQ Prova http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp Avaliação: CCT0152_AV_201311014081 » PADRÕES DE PROJETO DE SOFTWARE Tipo de Avaliação: AV Aluno: Professor: OSWALDO BORGES PERES Nota da Prova: Nota de Partic.: Data:09/2015 a Decorator tem como principal objetivo a decoração de classes em tempo de execução, isto é, adicionar novos produtos e/ou novas responsabilidades à objetos dinamicamente sem alterar o código das classes existentes. Descreva um exemplo que represente esse padrão. Resposta: Gabarito: Em uma janela pode-se adicionar objetos como barras de rolagem, caixas de texto, labels, etc. Pode-se criar uma classe JanelaDecorador que será estendida pelos decoradores que irão inserir propriedades na janela. Podendo incluir barra vertical, horizontal e para cada criar outra classe decorador, inserindo características novas. a Segundo a teoria apresentada no curso, qual a principal vantagem do uso do padrão Controlador para segmentar lógicamente o código, segundo a visão lógica de usuários segundo eventos? Resposta: Gabarito: Permite criar um ponto de entrada comum na chamada do evento e entre os benefícios dautilização do padrão controlador, pode-se citar: maior potencial para reuso, construção de interfaces ¿plugáveis¿, maior controle sobre o estado de um caso de uso, e maior organização do código. a Qual padrão é de arquitetura? GRASP GoF MVC Flower Gamma 1 de 4 4 Questão (Ref.: 201311123274) Pontos: 0,5 / 0,5 5 Questão (Ref.: 201311705987) Pontos: 0,0 / 0,5 6 Questão (Ref.: 201311598286) Pontos: 0,5 / 0,5 7 Questão (Ref.: 201311134538) Pontos: 0,5 / 0,5 BDQ Prova http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp a Assinale a afirmativa correta sobre o padrão Builder: é 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 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. 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. 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. A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida a Qual o nome do padrão de projeto que pode ser utilizado para permitir que uma hierarquia de abstrações e suas diferentes implementações possam variar independentemente? Bridge Proxy Flyweight Façade Adapter a Dado o diagrama de classe identifique o padrão GoF estrutual Bridge Decorator Flyweight Proxy Adapter a (FCC - 2010) Em relação aos padrões de projetos orientados a objetos, separar dados ou lógica de negócios da interface do usuário e do fluxo da aplicação para permitir que uma mesma lógica de negócios possa ser acessada e visualizada através de várias interfaces, sem saber de quantas nem quais interfaces com o usuário estão exibindo seu estado, é característica do padrão de projeto arquitetural Expert. 2 de 4 8 Questão (Ref.: 201311131161) Pontos: 0,5 / 0,5 9 Questão (Ref.: 201311132254) Pontos: 1,0 / 1,0 10 Questão (Ref.: 201311132410) Pontos: 1,0 / 1,0 BDQ Prova http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp Creator. Model-View-Controller. Layers. Observer. a A definição ¿ 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).¿ Refre-se a que padrão de projeto: Memento Mediator Iterator Command Builder. a considere as classes e métodos abaixo: E escolha a opção correta sobre a gravura: E escolha a opção correta sobre a gravura: sobre o acoplamento e coesão : método void imp_NF (cod) não deve ser implementado na classe NF. Obteria-se um projeto melhor se NF fosse acoplada a classe Cliente seus métodos incorporados na classe cliente. Pode-se garantir um melhor acoplamento Existem acoplamentos das classes cliente e Nota fiscal. E Nota fiscal e Item de Nota fiscal. Esta forma de acoplamento é caracterizado por chamada de métodos. O método void imp_NF (cod) poderia ser implementado na classe NF sem envolver mais nenhuma classe. Não tendo outros médotos o acoplamento não existiria o que é o desejável. Existem acoplamentos que poderiam ser evitados, considerando apenas o diagrama, assim o método de imprimir nota fiscal, dando-se o código de cliente, pode ser mapeado de forma diferente melhorando-se o acoplamento. Existem acoplamentos das classes que foram gerados de forma desnecessária pois poderiam ser incorporados em um único método e isto iria facilitar a manutenção e o entendimento. a 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? Indireção 3 de 4 BDQ Prova http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp variações protegidas Invenção Pura controlador polimorfismo 4 de 4 19/09/2015 13:56 14/12/12 Estácio 1/4bquestoes.estacio.br/entrada.asp?p0=136964520&p1=201001509341&p2=1135304&p3=CCT0152&… Avaliação: CCT0152_AV2_201001509341 » PADRÕES DE PROJETO DE SOFTWARE Tipo de Avaliação: AV2 Aluno: 201001509341 - RAPHAEL DA SILVA ROMA Professor: HORACIO DA CUNHA E SOUZA RIBEIRO Turma: 9001/AA Nota da Prova: 4,0 de 8,0 Nota do Trabalho: Nota de Participação: 2 Data: 12/11/2012 1a Questão (Cód.: 125600) Pontos: 1,5 / 1,5 Seguindo os princípios Especialista da Informação qual o critério deve ser adotado na escolha de uma classe para receber uma nova responsabilidade? Resposta: descobrir qual a classe que tem o conhecimento da informação necessária para satisfazer a responsabilidade. Gabarito: Deve-se buscar a classe que conhece do contexto da nova responsabilidade através de seus atributos e métodos já definidos. 2a Questão (Cód.: 125529) Pontos: 0,0 / 1,5 Os métodos polimórficos utilizam os conceitos de overloading e overrinding. Apresente a diferença entre os dois conceitos. Resposta: ... Gabarito: O conceito OVERLOADING é a sobrecarga dos métodos: define vários métodos de mesmo nome com assinaturas diferentes. O conceito OVERRIDING altera o comportamento do método na subclasse, mantendo a mesma assinatura, com funcionalidade diferente. 3a Questão (Cód.: 115672) Pontos: 1,0 / 1,0 A definição ¿ 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).¿ Refre-se a que padrão de projeto: Command Mediator Builder. Memento Iterator 14/12/12 Estácio 2/4bquestoes.estacio.br/entrada.asp?p0=136964520&p1=201001509341&p2=1135304&p3=CCT0152&… 4a Questão (Cód.: 116737) Pontos: 0,0 / 1,0 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 padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementaçãoO 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. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; 5a Questão (Cód.: 116918) Pontos: 0,0 / 0,5 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 Invenção Pura Controlador Variações Protegidas Polimorfismo 6a Questão (Cód.: 116796) Pontos: 0,0 / 0,5 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? Baixo acoplamento Especialista da informação Controlador Polimorfismo Coesão alta 7a Questão (Cód.: 116762) Pontos: 0,5 / 0,5 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. Dessa forma o padrão Acoplamento Baixo é utilizado para atribuir responsabilidades de modo que o acoplamento permaneça baixo. Um acoplamento definido para que classes que contenham métodos que possibilitem alterações de requisitos deve ser a menor possível, desta forma se favorece futuras manutenções. Um alto acoplamento aumenta a dificuldade de entendimento da solução proposta, a diminuição das chances de reutilização, além de aumentar a complexidade da aplicação. acoplamento é o grau de dependência entre dois artefatos. É uma medida de quão forte um elemento está conectado ou tem conhecimento de, ou depende de outros elementos. 14/12/12 Estácio 3/4bquestoes.estacio.br/entrada.asp?p0=136964520&p1=201001509341&p2=1135304&p3=CCT0152&… 8a Questão (Cód.: 107793) Pontos: 0,5 / 0,5 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 II, III estão corretas e a afirmativa I está errada. As afirmativas I, II, estão corretas e a afirmativa III está errada. As afirmativas I, III, estão corretas e II errada As afirmativas I, II, III estão incorretas As afirmativas estão todas corretas 9a Questão (Cód.: 107786) Pontos: 0,0 / 0,5 Consideram as afirmativa 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 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. 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 I, II, III estão incorretas As afirmativas estão todas corretas As afirmativas I, II, estão corretas e a afirmativa III está errada. 10a Questão (Cód.: 107360) Pontos: 0,5 / 0,5 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. 14/12/12 Estácio 4/4bquestoes.estacio.br/entrada.asp?p0=136964520&p1=201001509341&p2=1135304&p3=CCT0152&… BUILDER. FACTORY METHOD. PROTOTYPE. MEDIATOR. SINGLETON. Detalhes Avaliação: CCT0152_AV2_201001483171 Tipo de Avaliação: AV2 Aluno: 201001483171 - CLEBERSON VARGAS CASADIO Professor: CLAUDIA ABREU PAES Turma: 9001/AA Nota da Prova: 6,5 de 8,0 Nota do Trabalho: Nota de Participação: 1,5 Data: 01/09/2012 1.) ITERATOR 6a sem. Pontos: 1,0 / 1,0 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: 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 É 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. Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação. É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais objetos tem uma grande facilidade de mudança de comportamento, pode-se alterar seu funcionamento sem que seja necessário nenhuma mudança nas demais classes envolvidas, desde que envolvam coleções e matrizes. 2.) VISITOR 7a sem. Pontos: 1,0 / 1,0 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. A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementação 3.) GRASP 8a sem. Pontos: 0,5 / 0,5 Marque a alternativa que apresenta apenas padrões GRASP? Observer, visitor, strategy Controlador, polimorfismo e Memento Coesão alta, controlador, strategy BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 1 de 4 05/09/2012 09:45 Coesão alta, controlador e polimorfismo Coesão alta, polimorfismo, visitor 4.) POLIMORFISMO 9a sem. Pontos: 0,0 / 0,5 sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Define-se vários métodos. Cada método deveter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. Define-se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Define-se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método na nova classe. Isto é polimorfismo. 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 correpondente. Isto é polimorfismo. Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. 5.) GRASP 10a sem. Pontos: 0,0 / 0,5 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 Variações Protegidas Invenção Pura Controlador Polimorfismo 6.) AFIRMATIVA 2a sem. Pontos: 0,5 / 0,5 Assinale a afirmativa correta sobre o padrão Builder: BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 2 de 4 05/09/2012 09:45 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 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 é 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. A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida 7.) PADRÃO GOF 4a sem. Pontos: 0,5 / 0,5 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. Mediator. Factory Method. Builder. Singleton. Facade. 8.) INTERPRETER 5a sem. Pontos: 0,0 / 0,5 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, III, estão corretas e II errada As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, II, III estão incorretas As afirmativas estão todas corretas As afirmativas I, II, estão corretas e a afirmativa III está errada. BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 3 de 4 05/09/2012 09:45 9.) ESPECIALISTA DA INFORMAÇÃO 11a sem. Pontos: 1,5 / 1,5 Seguindo os princípios Especialista da Informação qual o critério deve ser adotado na escolha de uma classe para receber uma nova responsabilidade? Resposta: deixa a reposabilidade ao especilista da informação - a classe para atribuir a resposabilidade 10.) POLIMORFISMO 13a sem. Pontos: 1,5 / 1,5 Os métodos polimórficos utilizam os conceitos de overloading e overrinding. Apresente a diferença entre os dois conceitos. Resposta: overloading - sobrecarga - utiliza varios metodos com o mesmo nome e com parementos diferentes overrinding - sobreescrita - utiliza o mesmo metodo com o mesmo nome e com os mesmos paramentos anulando o anterior - aqui que se faz mesmo o polimórfismo. BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 4 de 4 05/09/2012 09:45 Fechar Avaliação: CCT0265_AV_201201777682 » PADRÕES DE PROJETO DE SOFTWARE Tipo de Avaliação: AV Aluno: Professor: HORACIO DA CUNHA E SOUZA RIBEIRO Turma: 9003/AC Nota da Prova: 8,0 Nota de Partic.: 2 Data: 07/06/2014 15:06:20 1a Questão (Ref.: 201202058030) Pontos: 1,5 / 1,5 O uso de classes "statics" garante que somente uma instãncia estará em memória e que a destruição pelo "garbage collection" será mais rápida do que o uso do padrão singleton. Por que então devemos usar o padrão singleton? Resposta: Porque o padrão singleton mantém a classe instanciada na memória durante toda execução de um determinado programa. Gabarito: Porque uma classe ¿static¿ SEMPRE é carregada na memória quando a aplicação é executada e a classe singleton não, sendo carregada na memória quando solicitada a primeira instância. 2a Questão (Ref.: 201201980996) Pontos: 1,5 / 1,5 Ter uma baixa coesão nos objetos do sistema pode gerar difícil compreensão e reutilização, além de afetar a manutenibilidade. O que é ter baixa coesão ? Resposta: Ter baixa coesão é a criação de métodos, funções e objetos desnecessários em um determinado projeto;"É como fazer círculos quando se quer ir em uma direção";Uso de passos em excesso para se determinar alguma atividade fim em um projeto quando poderia ter algo mais polido e organizado. Gabarito: É quando se tem uma mesma classe executando muitos trabalhos, realizando muitas coisas não relacionadas. 3a Questão (Ref.: 201201971116) Pontos: 0,5 / 0,5 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: esta abordagem é que o objeto que está realizando a chamada do método precisa conhecer com detalhes sobre seu funcionamento. Este padrão de projeto oferece pouca flexibilidade na arquitetura do sistema, uma vez que não permite adição de novas funcionalidades O objetivo do padrão de projeto Command é encapsular chamadas de métodos. Nesta abordagem o objeto que está realizando a chamada do método precisa conhecer com detalhes a implementação em relação asparente ao local, tempo e ao objeto que vai realizar uma determinada tarefa Os métodos, nesta abordagem devem ser padronizados e hierarquizados de forma que a implementação trabalhe novos objetos. 4a Questão (Ref.: 201201972215) Pontos: 1,0 / 1,0 considere as classes e métodos abaixo: E escolha a opção correta sobre a gravura: E escolha a opção correta sobre a gravura: sobre o acoplamento e coesão : O método void imp_NF (cod) poderia ser implementado na classe NF sem envolver mais nenhuma classe. Não tendo outros médotos o acoplamento não existiria o que é o desejável. Existem acoplamentos das classes que foram gerados de forma desnecessária pois poderiam ser incorporados em um único método e isto iria facilitar a manutenção e o entendimento. métodovoid imp_NF (cod) não deve ser implementado na classe NF. Obteria-se um projeto melhor se NF fosse acoplada a classe Cliente seus métodos incorporados na classe cliente. Pode-se garantir um melhor acoplamento Existem acoplamentos que poderiam ser evitados, considerando apenas o diagrama, assim o método de imprimir nota fiscal, dando-se o código de cliente, pode ser mapeado de forma diferente melhorando-se o acoplamento. Existem acoplamentos das classes cliente e Nota fiscal. E Nota fiscal e Item de Nota fiscal. Esta forma de acoplamento é caracterizado por chamada de métodos. 5a Questão (Ref.: 201201963235) Pontos: 0,5 / 0,5 Assinale a afirmativa correta sobre o padrão Builder: 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. 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 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. 6a Questão (Ref.: 201201963225) Pontos: 0,5 / 0,5 Uma das categoria que tradicionalmente se classificam os padrões de projeto :Padrões Estruturais cujo objetivo é: Define a forma de organização dos objetos e sua colaboração mutua Define formas de gerencia e combinar diferentes comportamentos. Defende formas de instanciar objetos delegando responsabilidades Define como implantar um novo método em uma classe. Define como implantar o mecanismo de herança em um grupo de objetos 7a Questão (Ref.: 201201963238) Pontos: 0,5 / 0,5 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; As afirmativas I, II, III estão incorretas 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. 8a Questão (Ref.: 201201962769) Pontos: 0,5 / 0,5 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. Mediator Builder. Facade. Singleton. Factory Method. 9a Questão (Ref.: 201201963245) Pontos: 0,5 / 0,5 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. 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 10a Questão (Ref.: 201201973807) Pontos: 1,0 / 1,0 (CESGRANRIO - 2008) Ao alterar o estado de uma classe, o desenvolvedor deseja que uma ou mais classes da interface gráfica sejam modificadas. Entretanto, o desenvolvedor não acha interessante criar um acoplamento forte entre essas classes. Qual padrão de projeto comportamental é mais adequado para resolver essa situação? Decorator. Abstract Factory. Adapter. Observer. Composite. Detalhes Avaliação: CCT0152_AV2_201001483171 Tipo de Avaliação: AV2 Aluno: 201001483171 - CLEBERSON VARGAS CASADIO Professor: CLAUDIA ABREU PAES Turma: 9001/AA Nota da Prova: 6,5 de 8,0 Nota do Trabalho: Nota de Participação: 1,5 Data: 01/09/2012 1.) ITERATOR 6a sem. Pontos: 1,0 / 1,0 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: 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 É 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. Oferece uma forma de percorrer este tipo de objeto agregado sem conhecer seus detalhes de implementação. É bastante utilizado em programação de sistemas para gerenciar a comunicação entre dois ou mais objetos tem uma grande facilidade de mudança de comportamento, pode-se alterar seu funcionamento sem que seja necessário nenhuma mudança nas demais classes envolvidas, desde que envolvam coleções e matrizes. 2.) VISITOR 7a sem. Pontos: 1,0 / 1,0 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. A idéia principal do padrão acima é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. O padrão de projeto acima é indicado para ser utilizado quando uma abstração tem dois aspectos, um dependente do outro. Encapsular tais aspectos em objetos separados permite que variem e sejam reusados separadamente; O padrão de projeto acima deve ser utilizado não somente quando o comportamento de um objeto depende do seu estado, podendo ser alterado em tempo de execução, mas também quando a funcionalidade de um objeto possui condicionais grandes. O principal objetivo do padrão acima é conservar as funcionalidades em não se permita adicionar novas, E obriga que haja necessidade de alterar sua implementação 3.) GRASP 8a sem. Pontos: 0,5 / 0,5 Marque a alternativa que apresenta apenas padrõesGRASP? Observer, visitor, strategy Controlador, polimorfismo e Memento Coesão alta, controlador, strategy BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 1 de 4 05/09/2012 09:45 Coesão alta, controlador e polimorfismo Coesão alta, polimorfismo, visitor 4.) POLIMORFISMO 9a sem. Pontos: 0,0 / 0,5 sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Define-se vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. Define-se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Define-se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método na nova classe. Isto é polimorfismo. 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 correpondente. Isto é polimorfismo. Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. 5.) GRASP 10a sem. Pontos: 0,0 / 0,5 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 Variações Protegidas Invenção Pura Controlador Polimorfismo 6.) AFIRMATIVA 2a sem. Pontos: 0,5 / 0,5 Assinale a afirmativa correta sobre o padrão Builder: BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 2 de 4 05/09/2012 09:45 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 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 é 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. A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida 7.) PADRÃO GOF 4a sem. Pontos: 0,5 / 0,5 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. Mediator. Factory Method. Builder. Singleton. Facade. 8.) INTERPRETER 5a sem. Pontos: 0,0 / 0,5 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, III, estão corretas e II errada As afirmativas II, III estão corretas e a afirmativa I está errada. As afirmativas I, II, III estão incorretas As afirmativas estão todas corretas As afirmativas I, II, estão corretas e a afirmativa III está errada. BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 3 de 4 05/09/2012 09:45 9.) ESPECIALISTA DA INFORMAÇÃO 11a sem. Pontos: 1,5 / 1,5 Seguindo os princípios Especialista da Informação qual o critério deve ser adotado na escolha de uma classe para receber uma nova responsabilidade? Resposta: deixa a reposabilidade ao especilista da informação - a classe para atribuir a resposabilidade 10.) POLIMORFISMO 13a sem. Pontos: 1,5 / 1,5 Os métodos polimórficos utilizam os conceitos de overloading e overrinding. Apresente a diferença entre os dois conceitos. Resposta: overloading - sobrecarga - utiliza varios metodos com o mesmo nome e com parementos diferentes overrinding - sobreescrita - utiliza o mesmo metodo com o mesmo nome e com os mesmos paramentos anulando o anterior - aqui que se faz mesmo o polimórfismo. BDQ Prova http://www.bquestoes.estacio.br/prova_resultado_preview.asp?cod_his... 4 de 4 05/09/2012 09:45