Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 - Relacione os padrões de projetos listados abaixo com suas respectivas finalidades: PADRÕES DE PROJETO 1. Facade (fachada) 2. Decorator (decorador) 3. Memento (lembrança) 4. Proxy (procurador) 5. Observer (observador) FINALIDADES ( ) Define uma dependência um para muitos entre objetos tal que, quando o estado de um objeto muda, todos os seus dependentes são notificados e atualizados automaticamente. ( ) Fornece uma interface unificada para um conjunto de objetos que constituem um subsistema. Define uma interface de mais alto nível que torna o subsistema mais fácil de usar. ( ) Sem violar o encapsulamento, captura e exterioriza o estado interno de um objeto, tal que o objeto possa ser restaurado a este estado mais tarde. ( ) Acrescenta responsabilidades adicionais a um objeto dinamicamente. Fornece uma alternativa flexível para a extensão de funcionalidade. ( ) Controla o acesso a um objeto através de outro objeto, que atua como seu substituto, ou como um envoltório. Assinale a alternativa que indica a sequência correta, de cima para baixo. 5 - 1 - 3 - 2 – 4 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 3 - 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? Singleton 4 - 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 nor- malmente 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 pedi- do preexistente. Na implementação dessa funcionalidade, seu desenvolvedor deve utilizar qual padrão de projeto do ca- tálogo GoF (Gang of Four), dentre os listados abaixo? Prototype 5 - Dado o diagrama de classe identifique o padrão GoF estrutual: Adapter 6 - O padrão Adpater é bastante utilizado para compatibilizar classes implementas por programadores diferentes, ou de- senvolvidas 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. 7 - Estruturar um sistema em subsistemas ajuda a reduzir a complexidade do problema (Gamma et al., 2000). No entan- to, um objetivo comum de todos os projetos é minimizar a comunicação e as dependências entre os diferentes subsiste - mas. 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: Facade 8 - 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 I, II, III e IV estão corretas. 9 - Um arquiteto de software estuda que padrões de projeto são apropriados para o novo sistema de vendas de uma em- presa. Ele deve considerar que o padrão: Chain of Responsibility evita o acoplamento entre o remetente de uma solicitação e seu destinatário, dando oportunida - de para mais de um objeto tratar a solicitação. 10 - Analise as sentenças abaixo. I - A estrutura do padrão interpreter sugere que a modelagem do problema seja realizada através de uma gramática pro - cedural. II - O padrão Interpreter tem como desvantagem definir uma classe para cada gramática, pois quando se tem muitas gra- máticas, são difíceis de manter e administrar. III - No padrão de projeto Template Method as partes que podem variar, conforme a situação, contexto ou problema a ser resolvido, são redefinas nas classes derivadas (concretas). IV - O padrão de projeto Template Method sugere a implementação de um algoritmo fixo em uma superclasse abstrata onde se consegue alterar o comportamento do algoritmo, sem modificar sua estrutura lógica. Marque a opção correta. II - III – IV 11 - Os design patterns: podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar padrões de projeto re - presentando-os como colaborações. 12 - 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. Todas as sentenças estão corretas 13 - 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 a partir dessa classe. Escolha uma das alternativas abaixo que preenche corretamente a lacuna apresentada na descrição acima. Builder 14 - Qual dos padrões GOF abaixo é mais indicado quando necessitamos criar objetos de uma determinada classe, os quais só têm alguns poucos estados possíveis e é melhor copiá-los e aproveitar o seu estado atual do que criar um novo objeto no estado inicial. Prototype 15 - Assinale a alternativa correspondente ao padrão de projeto utilizado para adicionar responsabilidades dinâmicas a objetos. Decoretor 16 - 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. 17 - A utilização do padrão estrutural de projeto cula 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: Proxy 18 - O presidente de uma empresa determinou que fosse disponibilizadoum 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 (Ap - plication 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: Facade 19 - 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 20 - Marque a única alternativa correta sobre um cenário de aplicação do padrão de projeto Template Method: Implementamos partes invariantes de um algoritmo em uma classe abstrata e deixamos que o restante do código seja implementado nas subclasses 21 - O Padrão de Projeto que define uma Interface para criar um objeto e também é conhecido como "Construtor Virtual" chama-se: Factory Method 22 - Um desenvolvedor de sistema computacional programou as seguintes classes abaixo: CÓDIGO EM JAVA . Classe Geometria: public abstract class Geometria { private Figura objeto; public abstract void criaObjeto(); public Figura getObjeto() {return objeto;} } . Classe GeoCirculo: public class GeoCirculo extends Geometria { private final double r; public GeoCirculo (double r) {this.r = r;} @Override public void criaObjeto() { this.objeto = new Circulo(r);} } . Classe GeoQuadrado: public class GeoQuadrado extends Geometria { private final double l; public GeoQuadrado(double l) {this.l = l;} @Override public void criaObjeto() {this.objeto = new Quadrado(l);} } . Classe GeoTriangulo: public class GeoTriangulo extends Geometria { private final double a, l; public GeoTriangulo(double a, double l) { this.a = a; this.l = l; } @Override public void criaObjeto() {this.objeto = new Triangulo(a, l);} } . Classe Figure: public abstract class Figura { public abstract double area(); } . Classe Circulo: public class Circulo extends Figura{ private double raio; public Circulo (double raio) {this.raio = raio;} @Override public double area() {return Math.pow(raio,2)*3.14159;} public double getRaio() {return raio;} public void setRaio(double raio) {this.raio = raio;} } . Classe Quadrado: public class Quadrado extends Figura { private double lado; public Quadrado(double lado) {this.lado = lado;} @Override public double area() {return Math.pow(lado, 2);} public double getLado() {return lado;} public void setLado(double lado) {this.lado = lado;} } . Classe Quadrado: public class Triangulo extends Figura { private double altura, largura; public Triangulo (double altura, double largura) { this.altura = altura; this.largura = largura; } @Override public double area() {return (altura*largura)/2;} public double getAltura() {return altura;} public void setAltura(double altura) {this.altura = altura;} public double getLargura() {return largura;} public void setLargura(double largura) {this.largura = largura;} } Analisando o que foi codificado pelo desenvolvedor podemos averiguar que ele utilizou um modelo dos padrões de pro- jeto GoF (Gang of Four) pertencente a categoria dos padrões de criação. Baseado nesse contexto, assinale abaixo a úni - ca opção que informa corretamente qual foi o modelo dos padrões GoF de criação empregado no desenvolvimento das classes JAVA apresentada anteriormente: Factory Method (Método de fabricação). 23 - 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 sis - tema 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 funcionali - dade corresponde a criar uma cópia de um pedido a partir de pedido preexistente. Na implementação dessa funcionali- dade, seu desenvolvedor deve utilizar qual padrão de projeto do catálogo GoF (Gang of Four), dentre os listados abai- xo? Prototype 24 - 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? Singleton 25 - Os Padrões de Projeto (GOF) que se apresentam com o formato de uma Lista Encadeada (estrutura de dados) quando são representados por um Diagrama de Objetos (UML) e se classificam, respectivamente, como Padrão de Pro- jeto Estrutural e Padrão de Projeto Comportamental, são conhecidos como: Decorator e Chain of Responsibility 26 - Assinale a alternativa correspondente ao padrão de projeto utilizado para adicionar responsabilidades dinâmicas a objetos. Decorator 27 - O objetivo do padrão Flyweight é diminuir o consumo de memória, porém deve ser utilizado com cautela; Gamma et al (2000). São várias as recomendações para seu uso. Analise as alternativas abaixo e marque a alternativa que NÃO se refere a uma recomendação para uso do padrão Flyweight. O cliente não precisar conhecer as regras do negócio. 28 - 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 Facade e Bridge 29 - A implementação do padrão de projeto Chain of Responsability requer que cada objeto receptor de uma determina- da 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. A delegação das solicitações pode formar uma árvore de recursão, com um mecanismo especial para inserção de novos receptores no final da cadeia existente. Marque a alternativa que NÃO identifica uma vantagem do padrão de projeto Chain of Responsability. As partes invariantes, conforme a situação, contexto ou problema a ser resolvido, podem ser redefinidas em classes abs- tratas gerando interconexão entre os objetos. 30 - 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: Template Method. 31- 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 32 - 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 execução. 33 - Observe a figura abaixo e escolha dentre as opções o padrão GOF para resolver o problema com a estrutura apresentada. Composite 34 - 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 I, II, III e IV estão corretas. 35 - 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 36 - 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: 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. 37 - 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: condicionais grandes; 38 - Dentre as opções abaixo assinale aquela que não se constitui em um benefícios da aplicação do padrão variações protegidas. as extensões para novas variações são fáceis de adicionar, 39 - 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. 40 - 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. prototype 41 - Dentre as opções apresentadas assinale qual o padrão é bastante utilizado para compatibilizar classes implementas por programadores diferentes, ou desenvolvidas em momentos diferentes, ou ainda para unir classes com interfaces diferentes em uma estrutura hierárquica única, sem precisar implementar novamente todas as funcionalidades e interfaces da classe já existente. Padrão Adapter 42 - 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: Facade 43 - 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 44 - 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 45 - 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 46 - Marque a alternativa que apresenta apenas padrões GRASP? Coesão alta, controlador e polimorfismo 47 - 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. 48 - Qual dos padrões GOF abaixo é mais indicado quando necessitamos criar objetos de uma determinada classe, os quais só têm alguns poucos estados possíveis e é melhor copiá-los e aproveitar o seu estado atual do que criar um novo objeto no estado inicial. Prototype 49 - Marque a alternativa que melhor descreve uma situação típica onde poderia ser utilizado o padrão de projeto Adapter? Um programador precisar utilizar uma classe que possui interface diferente da classe existente na aplicação. 50 - 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: Proxy 51 - 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: Chain of Responsability 52 - 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 Mediator 53 - São responsabilidades do GRASP? Falso - Tratar instanciamento único (Singleton) Verdadeiro - Baixo acoplamento das classes Verdadeiro - Tratar o polimorfismo Verdadeiro - Alta coesão das classes Falso - Tratar a estrutura parte-todo (Composite) 54 - 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 55 - 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. Todas as sentenças estão corretas 56 - Assinale a afirmativa correta sobre o padrão Builder: 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. 57 - 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. 58 - 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 osubsistema 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. 59 - 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. Template Method 60 - O padrão de projeto Comand apresenta uma serie de aplicabilidades. Assinale dentre as opções abaixo a única que não esta correta. permitir fácil inclusão de novos comandos, permitir requisições concorrentes, manter histórico de execução de comandos, suportar operações para desfazer comandos e, principalmente, evitar o acoplamento direto entre classes e serviços. permitir tratamento de requ Permitir em casos excepcionais o acoplamento direto entre classes e serviços; 61 - 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 62 - O padrão Variações protegidas tem como característica: É 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. 63 - 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. Apenas as sentenças I e III estão corretas 64 - 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 65 - 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: Não é preciso saber a classe concreta do objeto para criá-lo 66 - Que padrão estrutural usa compartilhamento para suportar um grande número de pequenos objetos de forma eficiente. Flyweight 67 - 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: Template Method. 68 - 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: Mediator 69 - 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. 70 - 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 objtivo deste padrão. ele coordena ou controla a atividade; Questões Abertas 1 - Qual a principal expectativa de usabilidade do Padrão Estrutural Proxy: Providenciar um substituto ou um ponto central para um controlar o acesso a outro. 2 - No desenvolvimento de sistemas baseado na Orientação a Objetos são utilizados padrões de projetos que buscam utilizar conhecimentos já adquiridos e comprovados. Assim, o padrão de projeto GRASP COESÃO tem como objetivo desenvolver procedimentos com objetivo bem definido. Quais as facilidades são atribuídas ao uso desse padrão? Facilidade na reutilização, manutenção e conseqüente garantia de continuidade. 3 - Qual a principal utilidade do padrão Intepreter segundo a teoria apresentada no curso? Resposta: traduzir, instanciar, e prover a interação entre objetos Gabarito: O padrão de projeto Intepreter descreve como projetar um conjunto de classes para representar e interpretar uma gramática para linguagens simples. 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. 4 - 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 ? Gabarito: É quando se tem uma mesma classe executando muitos trabalhos, realizando muitas coisas não relacionadas. 5 - Cite duas vantagens de se aplicar o Padrão FactoryMethod: 1- Cria uma hierarquia de criação de objetos; 2- A criação dos objetos é desacoplada das classes concretas; 6 - Os métodos polimórficos utilizam os conceitos de overloading e overrinding. Apresente a diferença entre os dois conceitos. O conceito OVERLOADING é a sobrecarga dos métodos: define vários métodos de mesmo nome com assinaturas diferentes. O conceito OVERRIDINGaltera o comportamento do método na subclasse, mantendo a mesma assinatura, com funcionalidade diferente. 7 - 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 vida de um sistema. Os padrões são diversos, por exemplo, padrões arquiteturais, padrões de análise, padrões de projeto e padrões de código e padrões estruturais. Explique o que são padrões estruturais e dê exemplo de dois deles. Padrões Estruturais definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mutua. Há sete padrões estruturais GoF: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. 8 - Por que os padrões são uma maneira eficiente de reuso de projeto? Por que o principal objetivo do padrão é obter um baixo acoplamento e alto nível de coesão, o que torna os módulos com independência e responsabilidade definidas em contextos específicos. 9 - O padrão Façade aumenta o nível da codificação. A afirmação é falsa ou verdadeira? Explique. Sim. Pois, esconde do programador detalhes do sistema. Por exemplo, para a realização de um cadastro, o mesmo não necessitará saber o nome do banco, nome da tabela, porta, url e sim oque deverá ser feito, no caso, o cadastro no banco. 10 - A implementação do padrão de projeto Chain of Responsability requer 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. A delegação das solicitações pode formar uma árvore de recursão, com um mecanismo especial para inserção de novos receptores no final da cadeia existente. Cite uma vantagem e uma desvantagem do padrão: Vantagem: - O acoplamento é reduzido, pois, o padrão libera um objeto de ter que conhecer qual o outro objeto que trata de uma solicitação. Além disso, tanto remetente como receptor não têm conhecimento explícito um do outro; - Reduz a interconexão entre os objetos, ao invés de um objeto manter uma lista com todos os receptores candidatos, eles mantém uma referência única para o sucessor; - Flexibilidade na atribuição de responsabilidades, ou seja, pode-se mudar a cadeia de objetos em tempo de execução, adicionando ou removendo objetos. Desvantagem: receptação não é garantida, isto é, no momento que a requisição não tem um receptor explícito, não há garantias que ela será tratada, além disso, a cadeia precisa estar corretamente configurada, caso contrário, requisições podem não ser atendidas também.
Compartilhar