Baixe o app para aproveitar ainda mais
Prévia do material em texto
PADRÕES DE PROJETO DE SOFTWARE AULA 1 1. Um design pattern descreve uma solução geral comprovada e reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos. Padrões de projeto ajudam a reconhecer e implementar boas soluções para problemas comuns. Dois dos principais design patterns utilizados atualmente são descritos a seguir: I. Visa garantir que uma classe só tenha uma única instância e prover um ponto de acesso global a ela. II. Visa definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado os seus dependentes sejam notificados e atualizados automaticamente. Os design patterns descritos em I e II são, respectivamente: Facade e Adapter. Singleton e Command. Singleton e Observer. Composite e Adapter Facade e Observer. 2. Para facilitar a manutenção da aplicação, há um design pattern que tem como objetivo principal centralizar o acesso aos dados em uma única camada. Esse design pattern é o Business Object MVC DAO DTO Application Service 3. Segundo a classificação de Design Patterns apresentada pela GoF, identifique com V os padrões comportamentais e com F, os demais. (V) Observer. (F) Iterator. (F) Façade. (V) Composite. (F) Visitor. A alternativa que contém a sequência correta, de cima para baixo, é a F V V V F F F V V V V F F V F V V V V V V V F F V 4. Podemos afirmar que os Padrões de Criação 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. 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. 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. 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. 5. 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 Memento Observer Adapter Nra 6. A família de padrões GoF é dividida em três grupos principais de padrões, a saber: Padrões de Proxy; Padrões de Criação; Padrões de Encadeamento Padrões de Criação; Padrões Metodológicos; Padrões de Ponte Padrões de Processo; Padrões de Singularidade; Padrões de Prototipação Padrões Comportamentais; Padrões de Criação; Padrões Estruturais Padrões Estruturais; Padrões de Processo; Padrões de Responsabilidade AULA 2 Uma solução natural, apresentada por muitos desenvolvedores, é 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. Um dos principais objetivos do padrão Builder é evitar este tipo de estratégia, seu propósito é separar o algoritmo de criação de um objeto complexo tanto da especificação, quanto das partes que o compõem. Esta abordagem facilita a criação de objetos com diferentes configurações e representações, facilita a manutenção do código, reduz a complexidade das classes relacionadas (a complexidade de criação é atribuída ao Builder) e melhora a legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, deve-se avaliar a classe Builder responsável por esta ação. 1. 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, II, estão corretas e a afirmativa III está errada. As afirmativas estão todas corretas As afirmativas I, III, estão corretas e II errada As afirmativas I, II, III estão incorretas 2. (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? Iterator. Bridge. Memento. Visitor. Singleton. 3. (CESGRANRIO - 2010) Em um sistema de software para controlar pedidos para entrega em domicílio, deve haver uma funcionalidade que permita que o atendente solicite a repetição de um pedido anteriormente feito por um cliente. O gerente do restaurante informou que essa funcionalidade aumentaria a agilidade no atendimento aos clientes, visto que muitos deles tendem a fazer pedidos similares aos que já fizeram anteriormente. Ao usar essa funcionalidade, o atendente do restaurante seleciona um pedido cuja composição corresponde a produtos normalmente requisitados pelos clientes e solicita ao 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? Builder. Factory Method. Command. Abstract Factory. Prototype. 4. 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. PROTOTYPE. FACTORY METHOD. 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. SINGLETON. BUILDER. FACTORY METHOD. MEDIATOR. FACADE. 6. ¿Os padrões de criação abstraem o processo de instanciação. Um padrão de criação de classe usa a herança para variar a classe que é instanciada, enquanto que um padrão de criação de objeto delegará a instanciação para outro objeto.¿ Padrões Projeto, 1º edição/2000.Gamma. 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 apartir dessa classe. Escolha uma das alternativas abaixo que preenche corretamente a lacuna apresentada na descrição acima. Factory Method Abstract Factory Facade Builder Singleton AULA 3 1. Marque a alternativa que melhor descreve uma situação típica onde poderia ser utilizado o padrão de projeto Adapter? Um programador precisa de uma classe que possua um método para retornar a única instância existente da classe. Um programador precisar utilizar uma classe que possui interface diferente da classe existente na aplicação. Um programador precisa utilizar uma classe que possui a mesma interface da classe existente na aplicação. Um programador precisa ser avisado quando houver alterações no estado de um objeto. Um programador precisa de um método que simplifique o acesso a uma hierarquia de classes. 2. Assinale a alternativa correspondente ao padrão de projeto utilizado para adicionar responsabilidades dinâmicas a objetos. Decorator Adapter Bridge Composite Façade 3. (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. Proxy, Builder e Mediator. Mediator, Interpreter e Command. Composite, Decorato e Proxy. Prototype, Abstract Factory e Builder. 4. Programadores se deparam muitas vezes com a situação onde é preciso acrescentar responsabilidades a objetos e não a classe. Uma das opções é utilizar herança, entretanto, esta alternativa é estática. Outra alternativa é especificar uma nova classe para implementar cada responsabilidade que se deseja atribuir dinamicamente a um dado objeto. Esta nova classe se chama _____________________________. Composite; Associativa; Adapter; Decorator; Beidge; 5. Qual padrão estrutural permite que um objeto utilize serviços de outros objetos com interfaces diferentes por meio de uma interface única: Composite Bridge Facade Flyweight Adapter 6. (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 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 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. O foco do Adapter é a solução de incompatibilidades entre duas interfaces existentes. AULA 4 1. O Padrão Flyweight é um objeto compartilhado, que pode ser usado em vários contextos, simultaneamente, pois, tem capacidade de funcionar de forma independente em cada contexto. Seus métodos e implementações não podem, em momento algum, fazer _____________________________________________________________ hipóteses ou asserções sobre fora do contexto no qual o objeto opera. hipóteses ou asserções sobre o contexto no qual o objeto opera. comparações ou associações sobre o contexto no qual o objeto opera. Acoplamento fraco entre o subsistema e seus clientes. hipóteses ou exclusões sobre o contexto no qual o objeto opera. 2. A classe Façade, em qualquer contexto, tem como objetivo mais amplo buscar respostas para um problema de forma transparente em um conjunto de subsistemas e fornecer uma resposta imediata para a classe cliente. Assinale dentre as principais vantagens desse padrão de projeto a única que não é verdadeira. Incentivar acoplamento fraco entre o subsistema e seus clientes. Incentivar acoplamento forte entre o subsistema e seus clientes. Simplificar o acesso a determinadas funcionalidades de um subsistema, sem inviabilizar sua utilização direta. Ajudar a melhorar portabilidade dos sistemas. Tornar os clientes independentes da complexidade dos diferentes subsistemas de uma aplicação. 3. Que padrão estrutural usa compartilhamento para suportar um grande número de pequenos objetos de forma eficiente. Decorator Flyweight Bridge Facade Composite 4. Em muitas situações de programação, é possível resolver o problema de acesso a um determinado objeto com a utilização de uma referência a variável desejada, este é um mecanismo de simples utilização e bastante conhecido pelos desenvolvedores de software. No entanto, quando é necessário utilizar um mecanismo mais versátil e sofisticado, por exemplo, para postergar a instanciação de um objeto para controlar o acesso ao mesmo para acessá-lo em uma máquina remota para gravá-lo em uma base de dados, a alternativa de utilizar uma referência ao objeto não é mais apropriada. utilização de uma superclasse abstrata para definir a interface da classe desejada e uma classe derivada adicional derivada. Marque a alternativa que indica o padrão de projeto utilizado segundo a descrição acima. Acoplamento Flyweight Coesão Proxy Façade 5. A utilização do padrão estrutural de projeto cuja ideia é utilizar um substituto para o objeto real, mantendo a mesma interface do original sempre que for inconveniente, ou indesejável, acessá-lo diretamente é conhecido como: Composite. Façade; Proxy; Flyweight Decorator; 6. 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? Memento Singleton Proxy Observer Nra AULA 5 1. Dentre as opções apresentadas, assinale aquela que corresponde ao padrão de projeto que sugere a implementação de um algoritmo que faz uso de diferentes métodos, diferenciando das soluções convencionais por deixar o esqueleto deste algoritmo fixo em uma superclasse abstrata. Interpreter; Proxy; Flyweight Chain of Responsability, Template Method 2. Aponte dentre as opções colocadas aquela que corresponde a estrutura do padrão que sugere que a modelagem do problema seja realizada através de uma gramática recursiva.. Interpreter; Iterator Template Method; Chain of Responsability, Mediator 3. (CESGRANRIO - 2008) Muitos frameworks utilizam um padrão de projeto (design pattern) que se baseia no princípio de projeto "Não nos chame, nós iremos chamar você" (O Princípio de Hollywood: "Don't call us, we'll call you."). Uma classe da aplicação herda de uma classe do framework que possui métodos abstratos, os quais são chamados em outros métodos concretos. A classe da aplicação sobrepõe os métodos abstratos da classe do framework com métodos concretos, permitindo que os métodos concretos da classe do framework sejam chamados. O padrão de projeto (design pattern) em questão chama-se Strategy. Template Method. Decorator. Singleton. Abstract Factory. 4. A classe Handler é uma classe abstrata, portanto, não pode ser instanciada diretamente. Assim, para montar uma cadeia de objetos é necessário especializá-la em que tipo de classes? Assinale dentre as opções abaixo aquela que está correta. Concretas;Generalizada; Com método púbico; Baixa coesão. Alto acoplamento; 5. (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. Creator. Observer. Layers. Model-View-Controller. 6. 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. As afirmativas estão todas corretas As afirmativas I, II, III estão incorretas 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 II, III estão corretas e a afirmativa I está errada. AULA 6 1. (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. Composite, Decorato e Proxy. Mediator, Interpreter e Command. Proxy, Builder e Mediator. Prototype, Abstract Factory e Builder. 2. A implementação do padrão Memento é bastante simples. Normalmente é criada uma classe privada chamada Memento (ou outro nome com funcionalidades similar) dentro da classe que se pretende salvar o estado. A classe Memento deve ser instanciada com os atributos que se pretende salvar, fornecendo para tanto ------------------------ Marque dentre as opções abaixo aquela que complementa a lacuna acima de forma correta. Utilizar uma classe associativa para o fim desejado. um construtor público para este fim. um construtor privado para este fim. Uma classe com método publico para este fim; Utilizar um outro padrão comportamental que complemente o objetivo. 3. O problema de acessar elementos de coleções, matrizes ou estruturas de dados encadeados é bastante recorrente em programação. Assinale dentre as alternativas abaixo, aquela que oferece uma forma de percorrer este tipo de objeto agregado, sem conhecer seus detalhes de implementação. Padrão Mediator; Padrão Iterator; Padrão Proxy; Padrão Memento; Padrão Visitor; 4. Existe um padrão de projeto que é bastante utilizado em programação de sistema para gerenciar a comunicação entre dois ou mais objetos. Ele pode ser visto como uma classe intermediária de comunicação e gerenciamento, evitando que os objetos se comuniquem de forma direta. Dentre as opções abaixo assinale aquela que está correta para a colocação acima. Padrão Proxy; Command; Padrão Memento Padrão Interator; Padrão Mediator; 5. Qual o padrão comportamental utilizado baseando-se no diagrama de classe abaixo: State Mediator Command Iterator Observer 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: As afirmativas I, II, estão corretas e a afirmativa III está errada 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, III e IV estão corretas. AULA 7 1. 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? A ideia 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. 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; 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 2. Marque a alternativa que está relacionada com o padrão de projeto que permite definir uma nova operação sem mudar as classes dos elementos sobre os quais opera. Observer State Visitor Strategy Memento 3. Identifique dentre as opções abaixo, aquela que representa o padrão de projeto comportamental, cuja ideia principal é implementar diferentes algoritmos em uma hierarquia de classes, onde cada um deles pode ser substituído pelo outro, independente do cliente que o utiliza . Strategy Decorator; Proxi; Visitor; State; 4. Dentre as opções apresentadas, assinale aquela que corresponde ao padrão de projeto cuja ideia principal é implementar diferentes algoritmos, em uma hierarquia de classes, onde cada um deles pode ser substituído por outro, independente do cliente que o utiliza. Proxy; Strategy; Visitor; Memento; Command; 5. O padrão de projeto que 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, chama-se: Interpreter; Visitor ; Proxy; State; Strategy; 6. O padrão de projeto State deve ser implementado não somente quando o comportamento de um objeto depende do seu estado, mas também quando a funcionalidade de um objeto possui _______________; Complete a lacuna com a opção correta. . Agregações; Padrão bridge; Padrão visitor; Atributos valorados; Condicionais grandes; AULA 8 1. Uma das categorias que tradicionalmente se classificam os padrõesde projeto: Padrões de criação cujo objetivo é: Define formas de instanciar objetos delegando responsabilidades Define como implantar o mecanismo de herança em um grupo de objetos Define a forma de organização dos objetos e sua colaboração mutua Define formas de gerencia e combinar diferentes comportamentos. Define como implantar um novo método em uma classe. 2. Os 9 padrões definidos pela General Responsability Assignment Software Pattener são? 1. Creator; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Facade. 1. Creator; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 1. Creator; 2.Decoretor; 3.FlyWeight; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 1. Singleton; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 1. Creator; 2.High Coesion; 3.Low Coupling; 4.Buider; 5.Bridge; 6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 3. 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 : 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. 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. 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. 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. 4. (FUMARC - 2011) São padrões de projeto GoF (design patterns), EXCETO: Strategy. Visitor. Criador. Adapter. Facade. 5. Pode-se sucintamente definir o padrão Variation do GRASP como: Criar classes controladoras. Criar classe que resolva problemas de inconsistência, criando adaptações para saná-las. Criar classes altamente coesas. Criar camadas para melhor organizar a aplicação. Criar classes que permitam sobrecarga e sobreescrita. 6. Dado o diagrama de sequência especifique o padrão GRASP utilizado: Facade Proxy Decorator Information Expert Flyweight AULA 9 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 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. s afirmativas I,II,III e IV estão corretas. As afirmativas I,II,IV estão corretas e a afirmativa III está errada. 2. Um padrão controlador é 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, Este é um padrão de projeto de delegação, pois, normalmente um controlador deve delegar a outros objetos o serviço que precisa ser feito. Dentre os conceitos abaixo, assinale aquele que complementa o objetivo deste padrão. ele coordena ou controla as classes; ele coordena ou controla a atividade; ele coordena ou controla as generalizações; ele controla ou coordena os métodos; ele coordena ou controla a recursividade; 3. Considere a figura abaixo E escolha a opção correta sobre a gravura: 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: ???? Deveria estar incorporada na classe emprestar para evitar criar uma serie de novas classes. Isto facilita o projeto. 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 A Classe instanciada assinala como:???? É de baixo acoplamento e baixa coesão pela natureza de sua criação. 4. (CESPE - 2010 - INMETRO) A coesão e o acoplamento são formas de se avaliar se a segmentação de um sistema em módulos ou em componentes foi eficiente. Acerca da aplicação desses princípios, assinale a opção correta. A modularização do programa em partes especializadas pode aumentar a qualidade desses componentes, mas pode prejudicar o seu reaproveitamento em outros programas. Um benefício da alta coesão é permitir realizar a manutenção em um módulo sem se preocupar com os detalhes internos dos demais módulos. Os componentes ou os módulos devem ser fortemente coesos e fracamente acoplados. Os componentes ou os módulos devem apresentar baixa coesão e um alto grau de acoplamento. O baixo acoplamento pode melhorar a manutebilidade dos sistemas, pois ele está associado à criação de módulos como se fossem caixas-pretas. 5. Marque a alternativa que está relacionada ao padrão GRASP responsável manter os objetos focados, com funcionalidades específicas, inteligíveis e gerenciáveis? Coesão alta Criador Controlador Especialista da informação Baixo acoplamento 6. 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? Observador Especialista da informação State Acoplamento fraco Polimorfismo AULA 10 1. O objetivo do padrão de projeto Indireção é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou serviços, com o objetivo de? impedir que que eles não sejam diretamente acoplados; impedir que que eles sejam parcialmente acoplados impedir que que eles não sejam diretamente excluídos; impedir que que eles sejam indiretamente acoplados; permitir que que eles sejam diretamente acoplados; 2. Dentre as opções abaixo assinale aquela que não se constitui em uns benefícios da aplicação do padrão variações protegida. o impacto ou custo das modificações pode ser diminuído. novas implementações são introduzidas sem afetar o cliente, as extensões para novas variações são fáceis de adicionar, oacoplamento fica mais baixo; as extensões para novas variações são difíceis de adicionar, 3. Dentre as opções abaixo, assinale aquela que sugere onde uma aplicação do padrão de projeto Invenção Pura deve criar uma nova classe específica para salvar objetos. em em um banco de dados relacional. em um banco de dados ordenado; em um banco de dados integrado; em em um banco de dados hierárquico; em um banco de dados homogêneo; 4. Marque dentre as opções apresentadas àquela que corresponde ao padrão de projeto que sugere atribuir um conjunto de responsabilidades altamente coesas 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. Criador Invenção pura; Indireção; Variações protegidas; Proxy; 5. O padrão Invenção Pura tem como característica: É 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] É 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] 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] 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. [Indireção] 6. O padrão de projeto variações protegidas é um princípio básico para fornecer _____________e _____________ flexibilidade e proteção contra diversos tipos de variações em um projeto orientado a objetos, Complete as lacunas com a opção correta. flexibilidade, proteção e visibilidade. proteção e visibilidade; flexibilidade e acoplamento; proteção e coesão; flexibilidade e proteção; SIMULADO 1A 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 Nra Memento Adapter Observer 2. “Prover uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.". Para qual padrão de projeto a afirmação se relaciona? Abstract Factory Singleton Prototype Proxy Nra 3. São padrões criacionais GoF: Singleton Polymorphis Builder Prototype Facade 4. 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. MEDIATOR. BUILDER. FACTORY METHOD. 5. Um compositor musical deseja criar uma hierarquia de classes para representar a estrutura das suas notas musicais. Em primeiro lugar, definiu uma classe abstrata chamada Melodia, a seguir, criou duas classes derivadas, uma chamada Nota e outra chamada Partitura. Cada Nota musical representa o elemento mínimo de uma Melodia e cada Partitura é formada por uma ou mais notas. Marque a alternativa que representa o melhor padrão de projeto para modelar este problema. Adapter Façade Proxy Composite Bridge 6. Programadores se deparam muitas vezes com a situação onde é preciso acrescentar responsabilidades a objetos e não a classe. Uma das opções é utilizar herança, entretanto, esta alternativa é estática. Outra alternativa é especificar uma nova classe para implementar cada responsabilidade que se deseja atribuir dinamicamente a um dado objeto. Esta nova classe se chama _____________________________. Decorator; Composite; Associativa; Adapter; Beidge; 7. 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. Podemos a firmar com certeza que: As afirmativas II, III ,IVestão corretas e a afirmativa I está errada. As afirmativas I, III, IVestão corretas e II errada. As afirmativas I, II, III e IV estão corretas. As afirmativas I, II, III estão erradas e IV correta. As afirmativas I, II, IV estão corretas e a afirmativa III está errada. 8. (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 Flyweight. Observer. Prototype. Decorator. Façade. 9. Dentre as opções colocadas abaixo, assinale aquela que corresponde ao padrão de projeto que requer para sua implementação, que cada objeto receptor de uma determinada solicitação tenha uma lógica para descrever os tipos de solicitação que é capaz de processar e como passar adiante aquelas que requeiram processamento por outros receptores. Iterator; classe Handler; Template Method; Mediator; Chain of Responsability ; 10. O método Arrays.sort (java.util) recebe como parâmetro um objeto do tipo Comparator que implementa um método compare(a, b) e utiliza-o para definir as regras de ordenação, assim evitamos duplicidade de código permitindo sobrescrita apenas do critério de comparação do algoritmo de ordenação, no qual os outros passos permanecem invariantes. Essa situação exemplifica qual dos padrões GOF abaixo: Template Method Builder Flyweight State Command SIMULADO 1B 1. Se em uma classe tem-se um comportamento que cria outros comportamentos dependendo dos parâmetros a ele passados temos o padrão GoF Criacional? Builder Singleton Factory Method Prototype Abstract Factory 2. Para facilitar a manutenção da aplicação, há um design pattern que tem como objetivo principal centralizar o acesso aos dados em uma única camada. Esse design pattern é o DAO MVC DTO Application Service Business Object 3. Dentre as opções apresentadas para o padrão Prototype, no que se refere, as aplicações para este padrão de projeto, assinale a única que estrá correta. facilidade de instanciar classes em tempo de geração do SGDB facilidade de instanciar classes em tempo de execução. facilidade de instanciar classes em tempo de programação; facilidade de eliminar classes em tempo de execução; facilidade de copiar classes em tempo de execução. 4. Conhecido como padrões da gangue dos quatro, por terem sido desenvolvidos por quatro autores, os Padrões GoF (Group ofFour) 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. PROTOTYPE. FACTORY METHOD. BUILDER. SINGLETON. 5. Qual padrão estrutural permite que um objeto utilize serviços de outros objetos com interfaces diferentes por meio de uma interface única: Flyweight Composite Bridge Adapter Facade 6. Assinale a alternativa correspondente ao padrão de projeto utilizado para adicionar responsabilidades dinâmicas a objetos. Decorator Adapter Façade Bridge Composite 7. Estruturar um sistema em subsistemas ajuda a reduzir a complexidade do problema (Gamma et al., 2000). No entanto, um objetivo comum de todos os projetos é minimizar a comunicação e as dependências entre os diferentes subsistemas. Uma das maneiras de contornar esse problema é utilizar o padrão de projeto que qual forneça uma interface única e simplificada para os recursos e facilidades mais gerais de um subsistema. Este padrão de projeto é conhecido como: Façade; Decorator Composite; Proxy; Flyweight 8. 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. (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 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. Prototype, Façade, Iterator e Expert. Adapter, Façade, Command e Iterator. Command, Iterator, Singleton e Expert. Command, Singleton, Controller e Façade. Controller, Expert, Singleton e Prototype. 9. Dentre as opções apresentadas, assinale aquela que corresponde ao padrão de projeto que sugere a implementação de um algoritmo que faz uso de diferentes métodos, diferenciando das soluções convencionais por deixar o esqueleto deste algoritmo fixo em uma superclasse abstrata. Proxy; Interpreter; Chain of Responsability, Template Method Flyweight 10. Aponte dentre as opções colocadas aquela que corresponde a estrutura do padrão que sugere que a modelagem do problema seja realizada através de uma gramática recursiva.. Template Method; Iterator Interpreter; Chain of Responsability, Mediator SIMULADO 1C 1. 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. 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. É 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. 2. 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, bridge, State, Strategy Command,- Interpreter, - Iterator, - Mediator, - composite , State, Strategy Command,- bridge, - Iterator, - Mediator, - composite - State, Strategy Command,- Interpreter, - Iterator, - Mediator, - Observer, State, Strategy Command,- bridge, - Iterator, - Mediator, - Observer, State, Strategy 3. 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 ideia é 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 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, III estão incorretas As afirmativas I, II, estão corretas e a afirmativa III está errada. 4. Assinale a afirmativa correta sobre o padrão Builder: 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. é 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. A legibilidade da solução final, ou seja, para entender como um objeto é criado e sob quais condições, fica comprometida 5. Que padrão estrutural anexa dinamicamente responsabilidades adicionais a um objeto. Provê uma alternativa flexível ao uso de herança como mecanismo de extensão de funcionalidade: Bridge Composite Decorator Facade Adapter 6. Dado o diagrama de classe identifique o padrão GoF estrutual Decorator Flyweight Adapter Bridge Composite 7. 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 ; composite ; decorator ; faça de ; flyweight ; singleton singleton; bridge ; protype; decorator ; faça de ; flyweight ; Proxy adapter ; bridge ; protype ¿ decorator ; faça de ; flyweight ; singleton adapter ; bridge ; composite ; decorator ; faça de ; flyweight ; Proxy 8. (FCC - 2011) No contexto dos padrões de projeto: I. Oferecer uma interface simples para uma coleção declasses. II. Desacoplar uma abstração de sua implementação para que ambas possam variar independentemente. Correspondem respectivamente a Façade e Composite. Composite e Bridge. Bridge e Adapter. Façade e Bridge. Adapter e Façade. 9. (CESGRANRIO - 2008) Muitos frameworks utilizam um padrão de projeto (design pattern) que se baseia no princípio de projeto "Não nos chame, nós iremos chamar você" (O Princípio de Hollywood: "Don't call us, we'll call you."). Uma classe da aplicação herda de uma classe do framework que possui métodos abstratos, os quais são chamados em outros métodos concretos. A classe da aplicação sobrepõe os métodos abstratos da classe do framework com métodos concretos, permitindo que os métodos concretos da classe do framework sejam chamados. O padrão de projeto (design pattern) em questão chama-se Decorator. Template Method. Strategy. Abstract Factory. Singleton. 10. A classe Handler é uma classe abstrata, portanto, não pode ser instanciada diretamente. Assim, para montar uma cadeia de objetos é necessário especializá-la em que tipo de classes? Assinale dentre as opções abaixo aquela que está correta. concretas; baixa coesão. alto acoplamento; Generalizada; com método púbico;
Compartilhar