Buscar

PADRÕES DE PROJETO DE SOFTWARE

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PADRÕES DE PROJETO DE SOFTWARE
	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 projeto GoF (Gang of Four) pertencente a categoria dos padrões de criação. Baseado nesse contexto, assinale abaixo a única opção que informa corretamente qual foi o modelo dos padrões GoF de criação empregado no desenvolvimento das classes JAVA apresentada anteriormente:
		
	
	Builder (Construtor).
	
	Prototype (Protótipo).
	
	Abstract Fatory (Fabrica abstrata). 
	
	Singleton.
	
	Factory Method (Método de fabricação).
	Respondido em 30/09/2020 18:05:57
	
	
	 
		2
        Questão 
	
	
	Qual a função do Padrão de Method Factory?
		
	
	Separa a construção de um objeto complexo da sua representação de modo que o mesmo processo de construção possa criar diferentes representações.
	
	Define uma interface para criar um objeto, mas deixa as subclasses decidirem que classe instanciar. O padrão permite adiar a instanciação para subclasses.
	
	Nenhuma das alternativas
	
	Especifica os tipos de objetos a serem criados usando uma instância-protótipo e cria novos objetos pela cópia desse protótipo.
	
	Fornece uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes completas.
	Respondido em 30/09/2020 18:06:01
	
Explicação: 
Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais.
O Factory Method é um Padrão de Criação. Esses Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar, ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e encapsular essas decisões.
O objetivo do Factory Method (Método de Fábrica) é definir uma interface para criar um objeto, mas deixar as subclasses definirem que classe instanciar.
	
	
	 
		3
        Questão 
	
	
	Esses são padrões de projeto GoF estudados em aula, EXCETO:
		
	
	Adapter
	
	Facade
	
	Strategy
	
	Workflow
	
	Observer
	Respondido em 30/09/2020 18:06:04
	
		
	Gabarito
Comentado
	
	
	 
		4
        Questão 
	
	
	Uma das categoria que tradicionalmente se classificam os padrões de projeto: Padrões de criação cujo objetivo é:
		
	
	Define como implantar um novo método em uma classe.
	
	Define formas de instanciar objetos delegando responsabilidades
	
	Define a forma de organização dos objetos e sua colaboração mutua
	
	Define como implantar o mecanismo de herança em um grupo de objetos
	
	Define formas de gerencia e combinar diferentes comportamentos.
	Respondido em 30/09/2020 18:06:06
	
Explicação: 
Isso porque padrões de projeto são voltados para problemas recorrentes que ocorrem no nosso dia-a-dia, seja na área de desenvolvimento de software, seja em qualquer outra área do conhecimento.
Ao caracterizarmos os padrões de projeto por Finalidade, temos: Estruturais, de Criação e Comportamentais. 
Os de Criação são associados ao processo de criação de objetos e também tornam um sistema independente de como seus objetos são criados, compostos e representados.
	
	
	 
		5
        Questão 
	
	
	(2017 - IESES - CREA-SC) Assinale a alternativa que define corretamente o conceito de Design Patterns: 
		
	
	¿Uma solução para um problema independentemente de um contexto¿ 
	
	¿Uma solução para um problema dentro de um contexto¿
	
	¿Uma prática não estruturada para solução de problemas independentemente de um contexto¿
	
	¿Um procedimento padrão para resolver problemas anteriormente desconhecidos dentro de um contexto genérico¿ 
	
	¿Uma prática não estruturada para solução de problemas dentro de um determinado contexto¿
	Respondido em 30/09/2020 18:06:08
	
Explicação: 
Padrões de projeto são voltados para problemas recorrentes que ocorrem no nosso dia-a-dia.
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.
	
	
	 
		6
        Questão 
	
	
	Qual o  padrão Gof representado na figura abaixo?
 
		
	
	Abstract Factory
	
	Singleton
	
	Builder
	
	Façade
	
	Factory Method
	Respondido em 30/09/2020 18:06:11
	
Explicação: 
Há cinco Padrões de Criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton.
Esses Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar, ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e encapsular essas decisões.
O objetivo do Factory Method (Método de Fábrica) é definir uma interface para criar um objeto, mas deixar as subclasses definirem que classe instanciar.
	
	
	 
		7
        Questão 
	
	
	1) A empresa XWebx foi contratada para desenvolver aplicativos de uma instituição financeira que possam ser executados em diferentes plataformas, como PC, celular e tablet. Para evitar a necessidade de criar diferentes soluções para cada plataforma, a empresa decidiu adotar um padrão de projeto que defina uma família de componentes para cada plataforma e uma implementação que os instancie de acordo com a plataforma-alvo na qual a aplicação estará sendo executada. O padrão adequado a essa implementação é: 
		
	
	Template Method
	
	Prototype
	
	Abstract Factory
	
	Adapter
	
	Strategy
	Respondido em 30/09/2020 18:06:15
	
Explicação: 
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.
	
	
	 
		8
        Questão 
	
	
	Além dos benefícios tradicionais relacionados com produtividade, redução do tempo de desenvolvimentoe reaproveitamento de soluções passadas, a utilização de padrões de projeto pode contribuir ainda nos seguintes aspectos? Assinale a opção INCORRETA.
		
	
	Auxiliam programadores inexperientes a desenvolverem soluções mais elegantes, melhor documentadas, padronizadas e reutilizáveis.
	
	Auxiliam no refatoramento da aplicação.
	
	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.
	
	Auxiliam representar algoritmos como objetos, estruturas de classe ou objeto.
	
	Auxiliam na aprendizagem a partir da documentação de experiências passadas.
	Respondido em 30/09/2020 18:06:17
	
Explicação: 
Essa afirmativa está INCORRETA porque esse é um benefício que é conseqüência da documentação gerada para cada tipo de padrão criado.
	
	
	(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?
		
	
	Singleton.
	
	Memento.
	
	Bridge.
	
	Iterator.
	
	Visitor.
	Respondido em 30/09/2020 18:06:28
	
	
	 
		2
        Questão 
	
	
	Qual padrão separa a construção de um objeto complexo da sua representação de modo que o mesmo processo de construção possa criar diferentes representações?
		
	
	Prototype.
	
	Builder.
	
	Factory Method.
	
	Nenhuma das anteriores.
	
	Singleton.
	Respondido em 30/09/2020 18:06:30
	
Explicação: 
Há cinco Padrões de Criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton.
O padrão Builder tenta minimizar a carga que os desenvolvedores tem ao ato de criar objetos dentro de um construtor.  Isso é comum em desenvolvedores iniciantes.
O BUILDER é um Padrão de Criação. É um padrão cuja responsabilidade é a CONSTRUÇÃO
Tentam minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um construtor.  Isso é comum em desenvolvedores iniciantes.
	
	
	 
		3
        Questão 
	
	
	O padrão de projeto Singleton é usado para restringir:
		
	
	A instanciação de uma classe para apenas um objeto.
	
	As relações entre classes e objetos. 
	
	A instanciação de uma classe para objetos simples. 
	
	A quantidade de classes. 
	
	Classes de atributos complexos.
	Respondido em 30/09/2020 18:06:32
	
Explicação: 
Há cinco Padrões de Criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton.
Esses Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar, ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e encapsular essas decisões.
O padrão de projeto Singleton é um dos padrões mais conhecidos e extensivamente utilizados em programação orientada a objetos.
Está direcionado para as situações onde precisamos manter uma única instancia de uma classe durante toda a execução da aplicação. 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. 
Na linguagem Java os modificadores states e private devem garantir uma mesma instância para todos os objetos criados e evitar acesso público.
	
	
	 
		4
        Questão 
	
	
	Qual padrão garante que uma classe tem somente uma instância e fornece um ponto global de acesso a mesma?
		
	
	Builder.
	
	Nenhuma das anteriores.
	
	Factory Method.
	
	Singleton.
	
	Abstract Factory.
	Respondido em 30/09/2020 18:06:36
	
Explicação: 
Há cinco Padrões de Criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton.
Esses Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar, ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e encapsular essas decisões.
O padrão de projeto Singleton é um dos padrões mais conhecidos e extensivamente utilizados em programação orientada a objetos.
Está direcionado para as situações onde precisamos manter uma única instancia de uma classe durante toda a execução da aplicação. 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. 
Na linguagem Java os modificadores states e private devem garantir uma mesma instância para todos os objetos criados e evitar acesso público.
	
	
	 
		5
        Questão 
	
	
	(CESGRANRIO - 2006 - Petrobrás ) Christopher Alexander afirma: "cada padrão descreve um problema no nosso ambiente e o cerne da sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca faze-lo da mesma maneira". Muito embora Alexander estivesse falando a cerca de padrões em construções e cidades, o que ele diz é verdadeiro em relação aos padrões de projeto orientados a objeto. Neste caso, as soluções são expressas em termos de objetos e interfaces em vez de paredes e portas, mas no cerne de ambos os tipos de padrões está a solução para um problema num determinado contexto. Quanto à indicação para o uso dos padrões de projeto é FALSO afirmar que o padrão: 
		
	
	Mediator é indicado quando: um conjunto de objetos se comunica de maneiras bem definidas, porém complexas; a reutilização de um objeto é difícil porque ele referencia e se comunica com muitos outros objetos; um comportamento que está distribuído entre várias classes deveria ser customizável, ou adaptável, sem excessiva especialização em subclasses. 
	
	Abstract Factory é indicado quando: um sistema deve ser independente de como seus produtos são criados, compostos ou representados; um sistema deve ser configurado como um produto de uma família de múltiplos produtos; uma família de objetos-produto for projetada para ser usada em conjunto, e você necessita garantir esta restrição; você quer fornecer uma biblioteca de classes de produtos e quer revelar somente suas interfaces, não suas implementações. 
	
	Memento é indicado quanto: um instantâneo de estado de um objeto deve ser salvo de maneira que possa ser restaurado para esse estado mais tarde; uma interface direta para obtenção do estado exporia detalhes de implementação e romperia o encapsulamento do objeto. 
	
	Builder é indicado quando: uma classe não pode antecipar a classe de objetos que deve criar; uma classe quer que suas subclasses especifiquem os objetos que criam; classes delegam responsabilidade para uma dentre várias subclasses auxiliares, e você quer localizar o conhecimento de qual subclasse auxiliar que é a delegada. 
	
	Composite é indicado quando: quiser representar hierarquias partes-todo de objetos; quiser que os clientes sejam capazes de ignorar a diferença entre composições de objetos e objetos individuais, neste caso, os clientes tratarão todos os objetos na estrutura composta de maneira uniforme.
	Respondido em 30/09/2020 18:06:39
	
Explicação: 
Há cinco Padrões de Criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton.
Esses Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar, ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e encapsular essas decisões.
Essa afirmativa é falsa porque o BUILDER é um Padrão de Criação. É um padrão cuja responsabilidade é a CONSTRUÇÃO
Tentam minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um construtor.  Isso é comum em desenvolvedores iniciantes.
	
	
	 
		6Questão 
	
	
	Qual o objetivo do padrão Builder? Assinale a opção INCORRETA.
		
	
	Declara um método chamado clone na superclasse abstrata do modelo.
	
	Separar a construção de um objeto complexo da sua representação de modo que o mesmo processo de construção possa criar diferentes representações.
	
	Atribuir a responsabilidade de criação do objeto complexo a outra classe.
	
	É utilizado na instanciação de objetos complexos.
	
	Minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um construtor.
	Respondido em 30/09/2020 18:06:42
	
Explicação: 
Essa afirmativa está INCORRETA porque ela se refere ao padrão Prototype.
	
	
	 
		7
        Questão 
	
	
	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.
	
	facilidade de instanciar classes em tempo de programação;
	
	facilidade de copiar classes em tempo de execução.
	
	facilidade de instanciar classes em tempo de geração do SGDB
	
	facilidade de eliminar classes em tempo de execução;
	Respondido em 30/09/2020 18:06:46
	
		
	Gabarito
Comentado
	
	
	 
		8
        Questão 
	
	
	Assinale dentre as opções abaixo, qual o padrão de projeto mais conhecidos e extensivamente utilizados em programação orientada a objetos e que está direcionado para as situações onde é preciso manter uma única instancia de uma classe durante toda a execução da aplicação.
		
	
	Builder; 
	
	Composite;
	
	Prototipe:
	
	Singleton 
	
	Decorator;
	Respondido em 30/09/2020 18:06:48
	
	(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.
		
	
	Ambos são padrões estruturais que possuem alguns atributos em comum.
	
	O Bridge estabelece uma ponte entre uma abstração e suas possíveis implementações.
	
	O foco do Adapter é a solução de incompatibilidades entre duas interfaces existentes.
	
	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.
	Respondido em 30/09/2020 18:06:58
	
Explicação: 
A família de padrões GoF, está divida em três grupos principais de padrões: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais. 
Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e Singleton.
Há 7 (sete) tipos de padrões estruturais GoF: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy.
Há 11 padrões comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
Essa opção está errada porque a classe Adapter é alusivo a estrutura, ou seja, estrutural. A ideia é fazer adaptação entre dois recursos.
A classe Adapter converte a interface de uma classe em outra interface esperada pelos clientes. Adapter permite a comunicação entre classes que não poderiam trabalhar juntas devido à incompatibilidade de suas interfaces.
	
	
	 
		2
        Questão 
	
	
	(FUNCAB - 2010) Segundo Trott e Shalloway, o princípio de projetar a partir de um contexto, é um conceito para criar a visão global antes de se projetar os detalhes que aparecem nos componentes. Das opções seguintes, o padrão de projeto que é um melhor exemplo de aplicação desse princípio é:
		
	
	bridge
	
	adapter
	
	canvas
	
	faça de
	
	abstract factory
	Respondido em 30/09/2020 18:07:00
	
Explicação: 
Há três grupos de Padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais. 
Os Padrões Estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy.
Definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua integração e colaboração mutua. 
O padrão Bridge, desacopla uma abstração de sua implementação, de tal forma que os dois possam variar independentemente.
	
	
	 
		3
        Questão 
	
	
	Dado o diagrama de classe identifique o padrão GoF estrutual:
		
	
	Proxy
	
	Flyweight
	
	Composite
	
	Decorator
	
	Facade
	Respondido em 30/09/2020 18:04:36
	
Explicação: 
Os Padrões Estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter,  Bridge, Composite, Decorator, Façade, Flyweight e Proxy.
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.
	
	
	 
		4
        Questão 
	
	
	Assinale a alternativa correspondente ao padrão de projeto utilizado para adicionar responsabilidades dinâmicas a objetos. 
		
	
	Façade 
	
	Bridge 
	
	Adapter 
	
	Composite 
	
	Decorator 
	Respondido em 30/09/2020 18:07:06
	
	
	 
		5
        Questão 
	
	
	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. 
		
	
	Composite 
	
	Bridge 
	
	Proxy 
	
	Adapter 
	
	Façade 
	Respondido em 30/09/2020 18:07:09
	
	
	 
		6
        Questão 
	
	
	Qual padrão observamos no diagrama de classes abaixo?
 
		
	
	Composite
	
	Bridge
	
	FlyWeight
	
	Prototype
	
	Decorator
	Respondido em 30/09/2020 18:04:46
	
Explicação: 
O padrão Decorator é um padrão de cuja intenção são as Extenções.
O padrão Decorator anexa responsabilidades adicionais a um objeto (em caráter dinâmico) dinamicamente. Decorators oferecem uma alternativa flexível ao uso de herança para estender uma funcionalidade (para a extensão de funcionalidade).
	
	
	 
		7
        Questão 
	
	
	[BNDES - CESGRANRIO 2009]A o 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. 
	
	O foco do Adapter é a solução de incompatibilidades entre duas interfaces existentes. 
	
	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. 
	
	O Adapter é inferior ao Bridge porque não evita a replicação de código. 
	Respondido em 30/09/2020 18:04:50
	
	
	 
		8
        Questão 
	
	
	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 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.
	
	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. 
	Qual a vantagem do padrão Proxyr? Assinale a opção INCORRETA.
		
	
	Tem transparência, ou seja, mesma sintaxe usada na comunicação entre o cliente e sujeito real é usada no proxy;
	
	Permite, sempre que for desejável, criar uma interface para um conjunto de objetos com o objetivo de facilitar o uso da aplicação;
	
	Permite o tratamento inteligente dos dados no cliente;
	
	Permite maior eficiência com caching no cliente;
	
	Consigo atribuir um certo grau de inteligência,o que possibilitaria um tratamento inteligente dos dados;
	Respondido em 30/09/2020 18:07:31
	
Explicação: 
Essa afirmativa está incorreta, porque ela se refere ao padrão Façade.
	
	
	 
		2
        Questão 
	
	
	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?
		
	
	Nra
	
	Memento
	
	Singleton
	
	Observer
	
	Proxy
	Respondido em 30/09/2020 18:07:33
	
	
	 
		3
        Questão 
	
	
	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;
	
	Flyweight 
	
	Proxy;
	Respondido em 30/09/2020 18:07:35
	
		
	Gabarito
Comentado
	
	
	 
		4
        Questão 
	
	
	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 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. 
	
	hipóteses ou asserções sobre fora do contexto no qual o objeto opera. 
	
	comparações ou associações sobre o contexto no qual o objeto opera. 
	Respondido em 30/09/2020 18:07:39
	
		
	Gabarito
Comentado
	
	
	 
		5
        Questão 
	
	
	Qual o objetivo do padrão Proxyr? Assinale a opção CORRETA.
		
	
	Proxy prove um substituto ou ponto através do qual um objeto possa controlar o acesso a outro;
	
	Proxy define uma interface de nível mais elevado que torna o subsistema mais fácil de usar;
	
	Proxy expurga o código e delega a uma classe, a terceiros;
	
	Proxy oferece uma interface única para um conjunto de interfaces de um subsistema;
	
	Proxy faz uma fachada única para todas as fachadas;
	Respondido em 30/09/2020 18:05:14
	
Explicação: 
Essa afirmativa está correta, porque as outras se referem ao padrão Façade.
	
	
	 
		6
        Questão 
	
	
	O objetivo do Flyweight é diminuir o consumo de memória, porém deve ser utilizado com cautela. Gamma et al (2000) recomendam sua utilização somente quando todas as condições abaixo forem verdadeiras, EXCETO uma. Qual delas abaixo é essa situação?
		
	
	A aplicação não depende da identidade do objeto.
	
	Os custos de armazenamento são altos por causa da grande quantidade de objetos.
	
	Uma aplicação utiliza um grande número de objetos.
	
	Quando for necessário elaborar um algoritmo ou algo complicado para separar objetos mutáveis de imutáveis;
	
	Muitos grupos de objetos podem ser substituídos por relativamente poucos objetos compartilhados, uma vez que estados extrínsecos são removidos.
	Respondido em 30/09/2020 18:05:16
	
Explicação: 
Essa afirmativa está incorreta para o padrão Flyweight, porque ela é uma situação em que não deve ser usada, assim como também quando o estado dos objetos não for imutável (é preciso passar o estado mutável como parâmetro e isto pode ser impraticável se o estado consistir de vários objetos).. 
	
	
	 
		7
        Questão 
	
	
	O padrão Flyweight é um Padrão Estrutural GoF. Qual o melhor momento em que podemos usar esse padrão?
I- Quando o tamanho do conjunto de objetos for significativamente menor que a quantidade de vezes em que eles são usados na aplicação.
II- Quando objetos podem ser usados em diferentes contextos ao mesmo tempo (agindo sempre como um objeto independente).
III- Quando for necessário elaborar um algoritmo ou algo complicado para separar objetos mutáveis de imutáveis.
Est(á)ão correta(s) a(s) afirmativa(s):
		
	
	Somente os itens I e II;
	
	Somente os itens II e III;
	
	Somente o item II;
	
	Somente os itens I e III;
	
	Somente o item I;
	Respondido em 30/09/2020 18:05:18
	
Explicação: 
O item III está errado porque não devemos usar esse padrão quando isso ocorre.
	
	
	 
		8
        Questão 
	
	
	O padrão _________________ controla o acesso ao objeto original. Fornece um substituto ou marcador da localização de outro objeto para controlar o seu acesso.
Qual padrão abaixo corresponde ao descrito acima?
		
	
	Singleton
	
	Interpreter
	
	Adapter
	
	Proxy
	
	Memento
	Respondido em 30/09/2020 18:07:48
	
Explicação: 
O padrão Proxy (procurador) controla o acesso a um objeto através de outro objeto, que atua como seu substituto, ou como um envoltório.
	
	
	Aponte dentre as opções abaixo aquela que corresponde ao padrão que apresenta como uma desvantagens, a obrigatoriedade da definição de ao menos, uma classe para cada regra da gramática, logo, gramáticas com muitas regras são difíceis de manter e administrar. 
		
	
	Proxy;
	
	Façade;
	
	Chain of Responsability; 
	
	Interpreter;
	
	Template Method;
	Respondido em 30/09/2020 18:07:59
	
	
	 
		2
        Questão 
	
	
	O padrão Chain of Responsability é um Padrão Comportamental GoF. Qual o seu objetivo? Assinale a afirmativa INCORRETA
		
	
	Evitar o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar a solicitação;
	
	Encadear os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate;
	
	Representar um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes;
	
	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;
	
	Fornecer um acoplamento mais fraco por evitar a associação explícita do remetente de uma solicitação ao seu receptor e dar a mais de um objeto a oportunidade de tratar a solicitação;
	Respondido em 30/09/2020 18:05:35
	
Explicação: 
Essa afirmativa está relacionada ao padrão Chain of Responsability, porque ela se refere a padrão Classe Hanter.
	
	
	 
		3
        Questão 
	
	
	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.. 
		
	
	Mediator
	
	Chain of Responsability,
	
	Interpreter;
	
	Template Method; 
	
	Iterator
	Respondido em 30/09/2020 18:08:04
	
	
	 
		4
        Questão 
	
	
	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:
		
	
	Command
	
	Builder
	
	State
	
	Flyweight
	
	Template Method
	Respondido em 30/09/2020 18:08:07
	
	
	 
		5
        Questão 
	
	
	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;
	
	Template Method
	
	Flyweight 
	
	Interpreter;
	
	Chain of Responsability, 
	Respondido em 30/09/2020 18:05:41
	
		
	Gabarito
Comentado
	
	
	 
		6
        Questão 
	
	
	Qual o objetivo do padrão Interpreter? Assinalea opção CORRETA.
		
	
	Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses;
	
	Fornece uma estrutura fixa, de um algoritmo, esta parte fixa deve estar presente na superclasse, sendo obrigatório uma classeAbstrata que possa conter um método concreto;
	
	Preencher certas partes do algoritmo por implementações que irão variar, ou seja, implementar um algoritmo em um método, postergando a definição de alguns passos do algoritmo, para que outras classes possam redefini-los;
	
	Dada uma linguagem, definir uma representação para sua gramática junto com um interpretador que usa a representação para interpretar sentenças na linguagem;
	
	Permitir que suas subclasses redefinam certos passos de um algoritmo sem mudar sua estrutura;
	Respondido em 30/09/2020 18:08:10
	
Explicação: 
Essa afirmativa está correta, porque as outras se referem ao padrão Template Method. 
	
	
	 
		7
        Questão 
	
	
	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 ;
	
	Template Method;
	
	Iterator; 
	
	classe Handler;
	
	Mediator;
	Respondido em 30/09/2020 18:08:12
	
		
	Gabarito
Comentado
	
	
	 
		8
        Questão 
	
	
	O padrão GoF Comportamental utilizado:
		
	
	Observer
	
	Mediator
	
	Iterator
	
	Interpreter
	
	Template Method
	Respondido em 30/09/2020 18:05:47
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
O padrão Observer define uma dependência um para muitos, que será necessária para fazer a relação entre um conjunto de dados e várias representações, além de permitir que, quando um objeto mude de estado, todos os dependentes sejam notificados.
	
	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 Proxy;
	
	Padrão Mediator;
	
	Padrão Visitor;
	
	Padrão Memento;
	
	Padrão Iterator;
	Respondido em 30/09/2020 18:08:25
	
		
	Gabarito
Comentado
	
	
	 
		2
        Questão 
	
	
	Qual padrão define um objeto que encapsula a forma como um conjunto de objetos interage, promovendo o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente, permitindo variar suas interações independentemente?
		
	
	Command.
	
	Strategy.
	
	Mediator.
	
	Nenhuma das anteriores.
	
	State.
	Respondido em 30/09/2020 18:08:27
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
São projetados para organizar, gerenciar e combinar diferentes comportamentos.
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais.
O padrão Mediator é um padrão define um objeto que encapsula a forma como um conjunto de objetos interage, promovendo o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente, permitindo variar suas interações independentemente.
O padrão Mediator é muito útil para programadores Visual Basic (principalmente das versões 5 e 6), pois ele é um atalho para a falta de herança. Ele é tipicamente usado em formulários em que o mesmo media por seus controle e componentes.
	
	
	 
		3
        Questão 
	
	
	Quando encapsulamos requisições de usuários na forma de objetos estamos utilizando o padrão de projeto:
		
	
	Command
	
	Façade
	
	Strategy
	
	State
	
	Chain of Responsability
	Respondido em 30/09/2020 18:08:30
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
São projetados para organizar, gerenciar e combinar diferentes comportamentos.
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais.
O padrão 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. O objetivo do padrão de projeto Command é encapsular chamadas de métodos.
As principais aplicabilidades deste padrão de projeto são: permitir fácil inclusão de novos comandos, permitir tratamento de 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.
	
	
	 
		4
        Questão 
	
	
	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. 
	
	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.
	
	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
	Respondido em 30/09/2020 18:08:32
	
Explicação: 
Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais: 
O objetivo dos Padrões Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais.
Há 11 padrões comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
O padrão Iterator por definição "Prove uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna.". 
	
	
	 
		5
        Questão 
	
	
	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:
		
	
	Pure Fabrication
	
	Monolítico
	
	Kernel
	
	Model-View-Control
	
	NCamandas
	Respondido em 30/09/2020 18:08:34
	
Explicação: 
O padrão de arquitetura MVC é uma combinação de padrões centrada no padrão Observer e consiste de três participantes:
Model: representa os dados da aplicação e regras de negócio associadas com os dados. Notifica o View sobre alterações.
View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário e lê dados do Model.
Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e seleciona View.O MVC é utilizado em muitos projetos devido à arquitetura que possui, o que possibilita a divisão do projeto em camadas muito bem definidas. Cada uma delas, o Model, o Controller e a View, executa o que lhe é definido e nada mais do que isso.
A utilização do padrão MVC trás como benefício isolar as regras de negócios da lógica de apresentação, a interface com o usuário. Isto possibilita a existência de várias interfaces com o usuário que podem ser modificadas sem que haja a necessidade da alteração das regras de negócios, proporcionando assim muito mais flexibilidade e oportunidades de reuso das classes.
Uma das características de um padrão de projeto é poder aplicá-lo em sistemas distintos. O padrão MVC pode ser utilizado em vários tipos de projetos como, por exemplo, desktop, web e mobile.
	
	
	 
		6
        Questão 
	
	
	São vantagens da arquitetura MVC, EXCETO:
		
	
	permitir a distribuição dos elementos da aplicação.
	
	possuir melhor separação de responsabilidades.
	
	permitir interfaces mais sofisticadas com o usuário.
	
	garantir um crescimento constante da aplicação.
	
	poder ser utilizada em aplicações simples ,sem sobrecarregar o desenvolvimento com componentes desnecessários.
	Respondido em 30/09/2020 18:08:38
	
Explicação: 
Essa afirmativa não é uma vantagem porque:
Model: representa os dados da aplicação e regras de negócio associadas com os dados. Notifica o View sobre alterações.
View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário e lê dados do Model.
Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e seleciona View.
O MVC é utilizado em muitos projetos devido à arquitetura que possui, o que possibilita a divisão do projeto em camadas muito bem definidas. Cada uma delas, o Model, o Controller e a View, executa o que lhe é definido e nada mais do que isso.
A utilização do padrão MVC trás como benefício isolar as regras de negócios da lógica de apresentação, a interface com o usuário. Isto possibilita a existência de várias interfaces com o usuário que podem ser modificadas sem que haja a necessidade da alteração das regras de negócios, proporcionando assim muito mais flexibilidade e oportunidades de reuso das classes.
Uma das características de um padrão de projeto é poder aplicá-lo em sistemas distintos. O padrão MVC pode ser utilizado em vários tipos de projetos como, por exemplo, desktop, web e mobile.
	
	
	 
		7
        Questão 
	
	
	Qual padrão encapsula uma solicitação como objeto permitindo parametrizar clientes com diferentes solicitações, enfileirar ou fazer log das solicitações e suportar operações que podem ser desfeitas?
		
	
	Nenhuma das anteriores.
	
	Command.
	
	State.
	
	Observer.
	
	Mediator.
	Respondido em 30/09/2020 18:08:42
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
São projetados para organizar, gerenciar e combinar diferentes comportamentos.
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais.
O padrão 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. O objetivo do padrão de projeto Command é encapsular chamadas de métodos.
As principais aplicabilidades deste padrão de projeto são: permitir fácil inclusão de novos comandos, permitir tratamento de 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
	
	
	 
		8
        Questão 
	
	
	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:
		
	
	Mediator
	
	Builder.
	
	Command
	
	Iterator
	
	Memento
	Respondido em 30/09/2020 18:08:46
	
Explicação: 
Memento é um padrão comportamental, assim como os seguintes padrões: command, iterator, mediator.
O padrão Memento 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.
	Qual a diferença entre o padrão Strategy e State?
		
	
	A diferença do Strategy para o State, é que no Strategy adiciona um comportamento a uma aplicação.
	
	A diferença do Strategy para o State, é que no Strategy vou trabalha apenas com o estado da classe Conectado.
	
	A diferença do Strategy para o State, é que no Strategy vou usar objetos para representar estados e polimorfismos.
	
	A diferença do Strategy para o State, é que no Strategy muda de comportamento em função do seu estado.
	
	A diferença do Strategy para o State, é que no Strategy eu vou encapsular.
	Respondido em 30/09/2020 18:08:58
	
Explicação: 
Esta afirmativa está correta porque 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. Já no padrão State, ele permite a um objeto alterar o seu comportamento quando o seu estado interno mudar. O objeto parecerá ter mudado de classe
	
	
	 
		2
        Questão 
	
	
	Qual padrão representa uma operação a ser executada nos elementos de uma estrutura de objetos e permite definir uma nova operação sem mudar as classes dos elementos sobre os quais operar?
		
	
	Decorator.
	
	Memento.
	
	Bridge.
	
	Visitor.
	
	Nenhuma das anteriores.
	Respondido em 30/09/2020 18:06:32
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
São projetados para organizar, gerenciar e combinar diferentes comportamentos.
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais.
O padrão Visitor representa 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.
	
	
	 
		3
        Questão 
	
	
	Qual padrão permite a um objeto alterar seu comportamento quando o seu estado interno muda parecendo que ele alterou sua classe?
		
	
	State.
	
	Mediator.
	
	Nenhuma das anteriores.
	
	Observer.
	
	Builder.
	Respondido em 30/09/2020 18:06:35
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
State - Permiti a um objeto alterar o seu comportamento quanto o seu estado interno mudar. O objeto irá aparentar mudar de classe.
	
	
	 
		4
        Questão 
	
	
	Qual padrão define uma família de algoritmos, encapsula cada uma delas e torna-as intercambiáveis, e permite que o algoritmo varie independentemente dos clientes que o utilizam?
		
	
	Nenhuma das anteriores.
	
	Decorator.
	
	Visitor.
	
	Template Method.
	
	Strategy.
	Respondido em 30/09/2020 18:09:04
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
São projetados para organizar, gerenciar e combinar diferentes comportamentos.
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realizaçãode uma tarefa. São abstrações de aspectos comportamentais.
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.
	
	
	 
		5
        Questão 
	
	
	O padrão GoF comportalmental utilizado:
		
	
	Iterator
	
	Observer
	
	Strategy
	
	Memento
	
	State
	Respondido em 30/09/2020 18:09:08
	
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
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.
	
	
	 
		6
        Questão 
	
	
	Qual padrão é melhor usado para um sistema Desktop?
		
	
	Observer;
	
	Memento;
	
	Visitor;
	
	State;
	
	Strategy;
	Respondido em 30/09/2020 18:09:14
	
Explicação: 
Esta opção está correta porque o objetivo do padrã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.
O Observer tem uma característica diferente. É muito usado em sistema desktop.
	
	
	 
		7
        Questão 
	
	
	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
	
	Strategy 
	
	Visitor 
	
	Memento 
	
	State 
	Respondido em 30/09/2020 18:06:49
	
		
	Gabarito
Comentado
	
	
	 
		8
        Questão 
	
	
	Quando usamos padrão Strategy, qual a ideia que eu pretendo com ele?
I- A ideia é que, toda vez que esse mude um objeto, outros objetos fiquem sabendo automaticamente;
II- A ideia é encapsular códigos, algoritmos, tal que eu possa utilizar em vários objetos;
III- A ideia é criar objetos que possam atender as várias estratégias;
Est(á)ão correta(s) a(s) afirmativa(s):
		
	
	Somente os itens I e II;
	
	Somente o item III;
	
	Somente o item II;
	
	Somente os itens II e III;
	
	Somente o item I;
	Respondido em 30/09/2020 18:09:18
	
Explicação: 
O item I está INCORRETO, porque essa é a ideia do padrão Observer.
O objetivo do padrão Strategy é definir 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.
	
	
	Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos nos basear, para o desenvolvimento.
A informação necessária para uma tarefa computacional frequentemente está ¿espalhada¿ por vários objetos. Para o exemplo: determinar o total de uma venda requer a colaboração de 3 objetos, em 3 classes diferentes, qual o melhor padrão GRASP deve ser usado?
		
	
	Expert (Especialista da informação);
	
	Controlador;
	
	Acoplamento fraco;
	
	Criador;
	
	Coesão Alta;
	Respondido em 30/09/2020 18:08:34
	
Explicação: 
Essa resposta está correta porque Expert (Especialista da informação), porque é o padrão mais usado para atribuir responsabilidades. Há muitos experts parciais. Neste caso mensagens são usadas para estabelecer as colaborações. Note que, com o uso do padrão Expert o encapsulamento das classes é mantido.
	
	
	 
		2
        Questão 
	
	
	Uma classe com acoplamento forte depende muito de outras classes. Isso pode conduzir os seguintes problemas num sistema: 
I. As classes são difíceis de aproveitar tendo em vista que sempre que uma classe for utilizada todas as outras das quais ela depende devem estar presentes; 
II. As alterações nas classes relacionadas podem forçar mudanças locais difíceis de compreender isoladamente. 
III. Facilidade na compreensão nas mudanças das classes no sistema. 
IV. Ao fazer alguma mudança numa classe também devem ser feitas mudanças nas outras que estão ligadas a esta classe. 
Com base nestas informações assinale a alternativa CORRETA.
		
	
	Somente a III.
	
	II, III, IV 
	
	I, III, IV 
	
	I, II, IV
	
	I, II, III 
	Respondido em 30/09/2020 18:08:36
	
	
	 
		3
        Questão 
	
	
	Não é padrão GRASP?
		
	
	Low Cohesion
	
	Polymorphism
	
	Controller
	
	Creator
	
	Indirection
	Respondido em 30/09/2020 18:08:38
	
Explicação: 
Temos os seguintes Padrões GRASP: Expert (Especialista), Creator (Criador), High Coesion, Low Coupling (Baixo Acoplamento), Controller.
Padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidade a objetos.
COESÃO - Coesão mede o quanto as responsabilidades de um elemento (classe, objeto, subsistema,¿) são fortemente relacionadas.
	
	
	 
		4
        Questão 
	
	
	No GRASP direcionar a ação para a classe que sabe resolvê-la é:
		
	
	Variation
	
	Information Expert
	
	Indirection
	
	Controller
	
	Creator
	Respondido em 30/09/2020 18:08:40
	
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco).
No Expert (Especialista da informação), o que acontece é que o comportamento está espalhado (estratificado) por toda árvore, em todo o gráfico de classe.
Especialista atribuir responsabilidade ao especialista da informação.
Especialista na informação é um princípio utilizado para determinar onde delegar responsabilidades. Essas responsabilidades incluem métodos, campos computados, e assim em diante.
Ele vai escolher os objetos especialistas para ele receber essas responsabilidades.
É o padrão mais usado para atribuir responsabilidades.
Benefício: O comportamento fica distribuído entre as classes que têm a informação necessária (classes ¿leves¿). Favorece alta coesão.
	
	
	 
		5
        Questão 
	
	
	Utilizando a nomenclatura dos padrões GRASP, o padrão Criador assume que tipo de responsabilidade?
		
	
	Assume a responsabilidade de julgar, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A?
	
	Assume a responsabilidade de estimar, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A?
	
	Assume a responsabilidade de conhecer, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A?
	
	Assume a responsabilidade de substituir, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A?
	
	Assume a responsabilidade de fazer, pois sua funcionalidade está relacionada com a resposta a seguinte pergunta: Quem deve criar um objeto A?
	Respondido em 30/09/2020 18:08:43
	
Explicação: 
Essa afirmativa está correta porque, utilizando a nomenclatura dos padrões GRASP (Larman, 2007), o padrão Criador assume a responsabilidade de fazer, pois sua funcionalidade está relacionado com a resposta a seguinte pergunta: Quem deve criar um objeto A? Grifa-se, novamente, a palavra quem da pergunta anterior.
	
	
	 
		6
        Questão 
	
	
	
Em relação a aplicação dos padrões GRASP, para o diagrama de classe da figura acima é correto afirmar que:
 
		
	
	Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Engenheiro tem a responsabilidade de saber quantas Etapas uma determinada Obra possui.
	
	Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Etapa tem a responsabilidade de saber quantas Etapas uma determinada Obra possui.
	
	Padrão Criador: a Classe Obra tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Etapa tem a responsabilidade de saber quantas Etapas uma determinada Obra possui.
	
	Padrão Criador: a Classe Obra tem a responsabilidade de criar instâncias da classeObra. Padrão Especialista: a Classe Obra tem a responsabilidade de saber quantas Etapas uma determinada Obra possui.
	
	Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe Obra tem a responsabilidade de saber quantas Etapas uma determinada Obra possui.
	Respondido em 30/09/2020 18:08:45
	
	
	 
		7
        Questão 
	
	
	Com relação aos padrões GRASP, assinale a opção correta:
		
	
	A alta coesão (high cohesion) é um padrão utilizado para aprimorar a ligação entre as classes, permitindo que a classe A não dependa de outras classes. Esse padrão é considerado o princípio central e útil em projetos orientados a objetos que utilizam GRASP.
	
	O controlador (controller) permite solucionar problemas no controle de criação de instâncias de classes. Nesse sentido, se a classe X contiver dados iniciais da classe Y ou se X usar de maneira muito próxima Y, caberá a X criar instâncias de Y, em que o controller representaria o padrão mais indicado para solucionar esse problema.
	
	O especialista na informação (information expert) associa-se ao mapeamento de responsabilidade em que se procura atribuir responsabilidade à classe que tenha informação necessária para satisfazê-la.
	
	O criador (creator) é utilizado para a solução do problema de quem cria a instância de uma classe com objetos do modelo de domínio. Nesse caso, se A registra B, então atribui-se à classe B a responsabilidade de se criar uma instância de A.
	
	O acoplamento baixo (low coupling) baseia-se na quantidade de ligações entre as classes e está destinado à atribuição de responsabilidade ao 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.
	Respondido em 30/09/2020 18:08:49
	
Explicação: 
Temos os seguintes Padrões GRASP: Expert (Especialista), Creator (Criador), High Coesion, Low Coupling (Baixo Acoplamento), Controller.
Padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidade a objetos.
Grupamento de padrões diferente, que tem propostas diferentes dos padrões GoF.
Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos nos basear, para desenvolvimento. 
Os padrões GRASP se inter-relacionam se misturam e são aplicados nos padrões GoF.
Os padrões GRASP vão decidir quem é que vai assumir essa responsabilidade aqui.
O objetivo dele é identificar quem vai determinar quem vai ter a responsabilidade, 
quem é que vai assumir a responsabilidade de um determinado conhecimento ou de uma determinada ação.
	
	
	 
		8
        Questão 
	
	
	Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos nos basear, para o desenvolvimento.
O padrão Expert (Especialista da informação) é um dos padrões GRASP. Com relação a esse padrão, assinale a informação INCORRETA.
		
	
	No padrão especialista, as informações que uma classe necessita podem estar espalhadas por toda aplicação, em diferentes classes;
	
	O padrão especialista deve atribuir responsabilidade à classe que tem informações suficientes para atender uma dada responsabilidade;
	
	No padrão especialista, as informações disponíveis estão relacionadas ao estado do próprio objeto;
	
	No padrão especialista, a consequência relacionada com a utilização desse padrão é a melhoria do encapsulamento;
	
	O padrão especialista não está interessado no algoritmo de criação, mas sim em auxiliar o programador a determinar qual classe dever ser responsável pela instanciação de um dado objeto;
	Respondido em 30/09/2020 18:08:52
	
Explicação: 
Essa resposta está INCORRETA porque ela se refere ao padrão Criador.
	
	sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: 
		
	
	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.
	
	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
	Respondido em 30/09/2020 18:07:58
	
Explicação: 
Ideia do Polimorfismo: através de uma interface única, eu possa encapsular vários comportamentos.
O Polimorfismo indica a capacidade de abstrair várias implementações diferentes em uma única interface.
Existem dois grandes grupos de Polimorfismo. Um deles é sobecrever um método, ou seja, subscrever métodos com a mesma assinatura.
Criaria uma classe ou interface superior, definiria por dentro o método, a classe que herda teria que ter a mesma assinatura, e a partir daí reescrever (overwrite) esse comportamento.
O outro não é baseado na assinatura, mais sim na chamada, pelo número de parâmetros, ele poderia escolher. EX. usar em consultor, onde temos um construtor com um construtor com um parâmetro dois, três, diferenciados pela quantidade e/ou tipo de parâmetro, estudado em aulas de programação e linguagem.
	
	
	 
		2
        Questão 
	
	
	Considere a figura abaixo
E escolha a opção correta sobre a gravura:
		
	
	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 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...)
	
	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.
	Respondido em 30/09/2020 18:08:02
	
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco).
Outros padrões GRASP considerados Avançados são Inversão Pura, Indireção e Variações Protegidas.
Essa afirmativa é a correta porque em uma Coesão Alta as classes com estes tipos de coesão são mais fáceis de implementar, testar e manter. No entanto, outros tipos de coesão podem aparecer, tais como, seqüencial, procedural, temporal e utilidade, as quais, segundo Pressman (2006), são menos desejáveis e devem ser evitados quando existirem alternativas de projeto.
Ainda segundo Larman (2007), uma classe com coesão baixa faz muitas atividades que não estão relacionadas e trabalha em demasia, acarretando os seguintes problemas: dificuldade de compreensão e manutenção, dificuldade de reutilização, além de apresentar bastante sensibilidade a modificações.
Um 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. De forma mais simples, 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; ele coordena ou controla a atividade.
	
	
	 
		3
        Questão 
	
	
	No padrão GRASP (General Responsability Assigment Software Patterns), a utilização do polimorfismo é recomendada para auxiliar a responder a duas perguntas. Uma delas é:
Como criar componentes de software interconectáveis?
Qual afirmativa abaixo se refere a essa pergunta?
I- Essa perguntase refere à utilização de comandos condicionais (if-then-esle ou switch por exemplo). 
II- Essa pergunta se refere a, se surgir uma nova regra ou uma nova variação condicional, ela exigirá a modificação dos comandos, tornando difícil alterar e estender o programa.
III- Essa pergunta se refere a relacionamentos do tipo cliente-servidor, não necessariamente aplicações em rede, mas com funcionalidades semelhantes, procurando destacar a importância de se projetar uma solução que permita alterar o servidor sem precisar modificar ou afetar a classe cliente.
Est(á)ão correta(s) a(s) afirmativa(s):
		
	
	Somente o item III;
	
	Somente os itens II e III;
	
	Somente o item II;
	
	Somente o item I;
	
	Somente os itens I e II;
	Respondido em 30/09/2020 18:10:34
	
Explicação: 
Os itens I e II estão INCORRETOS porque elas se referem a primeira pergunta do padrão Polimorfismo, que é: 
Como tratar alternativas com base no tipo?
	
	
	 
		4
        Questão 
	
	
	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. 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. 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. 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 
		
	
	II e III, apenas. 
	
	I, II, III e IV. 
	
	I, II e III, apenas. 
	
	I e II, apenas. 
	
	II, III e IV, apenas. 
	Respondido em 30/09/2020 18:10:37
	
Explicação: 
A afirmativa IV é incorreta porque o padrão de arquitetura MVC (Model-View-Controller) é uma combinação de padrões centrada no padrão Observer e consiste de três participantes:
Model: representa os dados da aplicação e regras de negócio associadas com os dados. Notifica o View sobre alterações.
View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário e lê dados do Model.
Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e seleciona View.
O MVC é utilizado em muitos projetos devido à arquitetura que possui, o que possibilita a divisão do projeto em camadas muito bem definidas. Cada uma delas, o Model, o Controller e a View, executa o que lhe é definido e nada mais do que isso.
A utilização do padrão MVC trás como benefício isolar as regras de negócios da lógica de apresentação, a interface com o usuário. Isto possibilita a existência de várias interfaces com o usuário que podem ser modificadas sem que haja a necessidade da alteração das regras de negócios, proporcionando assim muito mais flexibilidade e oportunidades de reuso das classes.
	
	
	 
		5
        Questão 
	
	
	O General Responsability Assignment Software Pattener que define a responsabilidade: Comportamentos com o mesmo nome mas que fazem operações deferentes. Trata-se de?
		
	
	Information Expert
	
	Polymorphis
	
	Pure Fabrication
	
	High Coesion
	
	Indirection
	Respondido em 30/09/2020 18:08:13
	
Explicação: 
Polymorphism (Polimorfismo) - através de uma interface única, eu possa encapsular vários comportamentos.
De acordo com o princípio do polimorfismo, a responsabilidade de definir a variação dos comportamentos com base no tipo é atribuída ao tipo para o qual essa variação ocorre. Isto é conseguido utilizando operações polimórficas.
	
	
	 
		6
        Questão 
	
	
	(FCC - 2012) O componente Controller do MVC: 
		
	
	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.
	
	É onde são concentradas todas as regras de negócio da aplicação e o acesso aos dados.
	
	Responde às solicitações de queries e encapsula o estado da aplicação.
	
	Notifica os componentes de apresentação das mudanças efetuadas nos dados e expõe a funcionalidade da aplicação.
	
	Envia requisições do usuário para o controlador e recebe dados atualizados dos componentes de acesso a dados.
	Respondido em 30/09/2020 18:08:15
	
Explicação: 
Temos os seguintes Padrões GRASP: Expert (Especialista), Creator (Criador), High Coesion, Low Coupling (Baixo Acoplamento), Controller.
Padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidade a objetos.
Controller (Controlador) - Padrão bastante utilizado no MVC, no Servlet.
O padrão controlador atribui a responsabilidade de manipular eventos do sistema para uma classe que não seja de interface do usuário (UI) que representa o cenário global ou cenário de caso de uso. Um objeto controlador é um objeto de interface não-usuário, responsável por receber ou manipular um evento do sistema.
Atribuir a responsabilidade do tratamento de um evento do sistema a uma classe que representa uma das seguintes escolhas: 
Representa o ¿sistema¿ todo (controlador fachada) 
Representa um tratador oficial de todos os eventos de sistema de um caso de uso (controlador de caso de uso).
	
	
	 
		7
        Questão 
	
	
	Qual padrão GRASP tem como um de seus objetivos minimizar o impacto na camada de negócio referente às alterações nos requisitos da interface com o usuário?
		
	
	Mediador
	
	Alta Coesão
	
	Controlador
	
	Indireção
	
	Especialista da Informação
	Respondido em 30/09/2020 18:08:18
	
	
	 
		8
        Questão 
	
	
	Qual padrão GRASP eu devo utilizar ara atender aos seguintes problemas:
Como manter a complexidade sob controle?
As classes são difíceis de compreender?
As classes são difíceis de reutilizar?
		
	
	Invenção Pura;
	
	Especialista da Informação;
	
	Indireção;
	
	Criador;
	
	High Cohesion (Coesão alta);
	Respondido em 30/09/2020 18:10:48
	
Explicação: 
Essa resposta está CORRETA, porque a ideia deste padrão consiste em que, é desejável, que eu tenha uma aplicação de baixo acoplamento e alta coesão. Acoplamento fraco e alta coesão.
A 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.
Além disso, esse padrão também serva para os seguintes problemas: as classes são difíceis de manter, e as classes são frágeis, sendo afetadas por praticamente todas as modificações.
	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?
		
	
	controlador
	
	variações protegidas
	
	Invenção Pura
	
	Indireção
	
	polimorfismo
	Respondido em 30/09/2020 18:09:29
	
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco).
Como não há uma classe de domínio de negócio que seria cabível a delegação desse comportamento, a intenção é, através do padrão Inversão Pura,
A Inversão Pura é utilizada em projetos de software para projetar uma classe que não pertença ao domínio do problema, mas que ofereça ao projeto coesão alta, acoplamento baixo e reuso.
	
	
	 
		2
        Questão 
	
	
	Marque a alternativa que representa o padrão GRASP que está relacionada com a seguinte questão: como projetar objetos e subsistemas de modo que variações não causem impactos indesejados?
		
	
	Controlador
	
	Invenção Pura
	
	Variações Protegidas
	
	Indireção
	
	Polimorfismo
	Respondido em 30/09/2020 18:07:03
	
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco).
Outros padrões GRASP considerados Avançados são InversãoPura, Indireção e Variações Protegidas.
O padrão Variações Protegidas serve para resolver problemas como projetar objetos, subsistemas e sistemas para que as variações ou instabilidades nesses elementos não tenham um impacto indesejável nos outros elementos. 
Este padrão de projeto é um princípio 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. As variações podem ser ainda divididas em evolutivas e corretivas.
	
	
	 
		3
        Questão 
	
	
	O padrão Indireção 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. 
	
	É 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 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.
	
	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. 
	Respondido em 30/09/2020 18:09:33
	
Explicação: 
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..
E:
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco).
Outros padrões GRASP considerados Avançados são Inversão Pura (Pure Fabrication), Indireção e Variações Protegidas.
O padrão Indireção resolve problemas como: a quem devemos atribuir a responsabilidade, evitando o acoplamento direto entre dois ou mais objetos? e como desacoplar objetos apoiando o Acoplamento Baixo e maximizando o potencial de reuso?
A solução para isso é atribuir a responsabilidade a um objeto intermediário para mediar as mensagens entre outros componentes ou serviços, para que não sejam diretamente acoplados e o objeto intermediário cria uma camada de indireção entre os dois componentes que não mais dependam um do outro: Ambos dependem da indireção.
A Indireção quer que dois objetos, evite-se o acoplamento direto entre eles.
A ideia é diminuir o acoplamento e manter a coesão.
	
	
	 
		4
        Questão 
	
	
	Para o seguinte problema:
Como projetar objetos, subsistemas e sistemas para que as variações ou instabilidades nesses elementos não tenham um impacto indesejável nos outros elementos?
Qual solução devemos aplicar? Assinale a resposta INCORRETA.
		
	
	Utilizar os princípios de encapsulamento, interfaces, polimorfismo, indireção e padrões, além de máquinas virtuais e brokers;
	
	Atribuir responsabilidades para criar uma interface estável em volta desses pontos;
	
	Identificar pontos de variação ou instabilidade potenciais;
	
	Evitar enviar mensagens a objetos muito distantes.
	
	Atribuir a responsabilidade a um objeto intermediário para mediar as mensagens entre outros componentes ou serviços, para que não sejam diretamente acoplados; 
	Respondido em 30/09/2020 18:09:36
	
Explicação: 
Essa resposta está INCORRETA porque ela deve ser usada para uma solução do padrão Indireção. 
	
	
	 
		5
        Questão 
	
	
	Que tipo de Padrão GRASP devemos utilizar para o seguinte problema?
Atribuir responsabilidades apenas para classes do domínio conceitual pode levar à situações de maior acoplamento e menos coesão.
		
	
	Acoplamento fraco;
	
	Coesão Alta.
	
	Variações Protegidas; 
	
	Controlador;
	
	Pure Fabrication (Invenção Pura);
	Respondido em 30/09/2020 18:07:11
	
Explicação: 
Essa resposta está correta para essa solução o Pure Fabrication (Invenção Pura) atribui um conjunto altamente coesivo de responsabilidades (ou seja, aquelas séries de responsabilidades que são coesas vou atribui-las a) a uma classe artificial (ou seja, uma classe que não seja do domínio do negócio) que não representa um conceito do domínio do problema (a ser resolvido).
	
	
	 
		6
        Questão 
	
	
	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 homogêneo;
	
	em um banco de dados integrado;
	
	em um banco de dados ordenado;
	
	em em um banco de dados hierárquico;
	Respondido em 30/09/2020 18:09:40
	
		
	Gabarito
Comentado
	
	
	 
		7
        Questão 
	
	
	Para o problema:
Que objeto deve ter a responsabilidade, quando não se quer violar a Alta Coesão e o Baixo Acoplamento, mas as soluções oferecidas por Expert não são adequadas?
Que solução devemos aplicar? Assinale a resposta CORRETA.
		
	
	Atribuir um objeto intermediário entre os dois componentes que não mais dependam um do outro;
	
	Atribuir por meio de Polimorfismo, uma interface consistente;
	
	Atribuir a responsabilidade a um objeto intermediário entre outros componentes ou serviços, para que não sejam diretamente acoplados;
	
	Atribuir um conjunto altamente coesivo de responsabilidades a uma classe artificial, que não representa um conceito do domínio do problema;
	
	Atribuir a responsabilidade a um objeto intermediário para mediar as mensagens;
	Respondido em 30/09/2020 18:09:42
	
Explicação: 
Essa resposta está correta porque as outras se referem a soluções de Indireção.
	
	
	 
		8
        Questão 
	
	
	Relacione os conceitos de:
1- Utilizado em projetos de software para projetar uma classe que não pertença ao domínio do problema, mas que ofereça ao projeto coesão alta, acoplamento baixo e reuso.
2- O seu objetivo é evitar o acoplamento direto entre objetos.
3- O seu objetivo é evitar que problemas de variação e instabilidade de objetos afetem outras classes.
		
	
	1- Invenção Pura; 2- Variações Protegidas e 3- Indireção.
	
	1- Invenção Pura; 2- Indireção e 3- Variações Protegidas.
	
	1- Variações Protegidas; 2- Indireção e 3- Invenção Pura.
	
	1- Indireção; 2- Invenção Pura e 3- Variações Protegidas.
	
	1- Variações Protegidas; 2- Invenção Pura e 3- Indireção.
	Respondido em 30/09/2020 18:07:17
	
Explicação: 
Essa resposta está correta porque o relaciona corretamente os objetivos de modelo de Invenção Pura, Indireção e Variações Protegidas.

Continue navegando