Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. 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 Iterator Builder. Command Memento 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. 2. Qual padrão captura e externaliza um estado interno de um objeto para que o objeto possa ser restaurado para este estado mais tarde sem violar o encapsulamento? Memento. State. Visitor. Nenhuma das anteriores. Observer. 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 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. 3. O padrão Command é um Padrão Comportamental GoF. Qual o objetivo desse padrão? Assinale a única resposta INCORRETA O objetivo do padrão de projeto Command é associar um objeto comando a cada objeto criado ou, pelo menos, aos objetos mais complexos; O objetivo do padrão de projeto Command é encapsular uma solicitação como um objeto, permitindo a parametrização de clientes com diferentes solicitações; O objetivo do padrão de projeto Command é encapsular chamadas de métodos; O objetivo do padrão de projeto Command é prover uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna; O objetivo do padrão de projeto Command é permitir desfazer operações realizadas por um comando, desde que, cada comando tenha implementado um método adicional para este fim; Explicação: Essa afirmativa está incorreta, porque ela se refere ao padrão Iterator. 4. Existe um padrão de projeto que é bastante utilizado em programação de sistema para gerenciar a comunicação entre dois ou mais objetos. Ele pode ser visto como uma classe intermediária de comunicação e gerenciamento, evitando que os objetos se comuniquem de forma direta. Dentre as opções abaixo assinale aquela que está correta para a colocação acima. Padrão Interator; Padrão Memento Padrão Mediator; Command; Padrão Proxy; 5. Qual padrão usar para fornecer um meio de acessar sequencialmente os elementos de um objeto agregado sem expor a sua representação subjacente? Nenhuma das anteriores. Mediator. Visitor. Chain of Responsability. Iterator. 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 Iterator por definição "Prove uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna.". 6. 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. Nenhuma das anteriores. State. Mediator. Strategy. 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. 7. (FCC - 2010) Em relação aos padrões de projetos orientados a objetos, separar dados ou lógica de negócios da interface do usuário e do fluxo da aplicação para permitir que uma mesma lógica de negócios possa ser acessada e visualizada através de várias interfaces, sem saber de quantas nem quais interfaces com o usuário estão exibindo seu estado, é característica do padrão de projeto arquitetural Expert. Creator. Layers. Model-View-Controller. Observer. 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. 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. 8. Command : Encapsula uma solicitação como um objeto, permitindo a parametrização de clientes com diferentes solicitações, o enfileiramento e o registro de solicitações e o suporte a operações que possam ser desfeitas. (Gamma et al., 2000). Sobre ele podemos afirmar com toda a certeza: Nesta abordagem o objeto que está realizando a chamada do método precisa conhecer com detalhes a implementação em relação asparente ao local, tempo e ao objeto que vai realizar uma determinada tarefa Este padrão de projeto oferece pouca flexibilidade na arquitetura do sistema, uma vez que não permite adição de novas funcionalidades esta abordagem é que o objeto que está realizando a chamada do método precisa conhecer com detalhes sobre seu funcionamento. Os métodos, nesta abordagem devem ser padronizados e hierarquizados de forma que a implementação trabalhe novos objetos. O objetivo do padrão de projeto Command é encapsular chamadas de métodos. 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 comportamentais GoF contemplam 11 (onze) tipos de padrões Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. Os Padrões Comportamentais são projetados para organizar, gerenciar e combinar diferentes comportamentos. Segundo Gamma et al, ¿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.¿. 1. O padrão GoF comportalmental utilizado: Memento Strategy Observer Iterator State 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. 2. 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; agreagações; padrão visitor; padrão bridge; Atributos valorados; Gabarito Coment. 3. (COPEVE-UFAL - 2011) O diagrama de classes apresentado na figura não representa fielmente um buffer que passa por estados sucessivos de transformação. Em outras palavras, um buffer, que está inicialmente vazio, depois pode ficar parcialmente cheio e, possivelmente, pode ficar cheio. Dentre as opções apresentadas a seguir, qual o padrão de projetos que melhor se adequaria para modelar essa característica dinâmica do buffer? State. Singleton. Dynamic behavior. Composite. Mediator. Gabarito Coment. 4. 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. Memento Strategy State Observer Visitor Gabarito Coment. 5. Qual é o padrão responsável para separar os dados lógicos e as regras de negócio da interface do usuário e o fluxo da aplicação? Controller Indirection Bridge MVC Chain of Responsibility 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. Qual a diferença entre o padrão Strategy e State? A diferença do Strategy para o State, é que no Strategy eu vou encapsular. 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 vou usar objetos para representar estados e polimorfismos. 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. 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 7. 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? Template Method. Decorator. Visitor. Strategy. Nenhuma das anteriores. 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 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. 8. Observando a figura abaixo, determine o padrão GOF caracterizado pela mesma:Padrão Strategy Padrão State Padrão Template Method Padrão Façade Padrão Singleton Explicação: Os Padrões Comportamentais são projetados para organizar, gerenciar e combinar diferentes comportamentos. O padrão State permite que um objeto altere o seu comportamento quando o seu estado interno muda. O objeto parecerá ter mudado de classe. O padrão encapsula os estados em classes separadas e delega as tarefas para o objeto que representa o estado atual, nós sabemos que os comportamentos mudam juntamento com o estado interno. 1. Com relação aos padrões GRASP, assinale a opção correta: 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. 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 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. 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. 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. 2. 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); Coesão Alta; Controlador; Criador; Acoplamento fraco; 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. 3. 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 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 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. 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 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. 4. 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 Cliente tem a responsabilidade de criar instâncias da classe Parcela. Padrão Especialista: a Classe Parcela tem a responsabilidade de saber quais são as parcelas devedoras. Padrão Criador: a Classe Empréstimo tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Empréstimo tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. Padrão Criador: a Classe Empréstimo tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Parcela tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. Padrão Criador: a Classe Parcela tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Parcela tem a responsabilidade de saber quais são as parcelas devedoras. Padrão Criador: a Classe Cliente tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a Classe Empréstimo tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. Explicação: 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. Creator (Criador) - O Creator do GoF está focando um problema específico (por exemplo, encapsulando código), este não, é decidir quem é o responsável por criar determinado recurso, ou artefato, e escolher quem vai criar. A criação de objetos é uma das mais comuns atividades em um sistema orientado a objetos. Descobrir qual classe é responsável por criar objetos é uma propriedade fundamental da relação entre objetos de classes particulares. 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 5. Nos padrões GRASP (General Responsability Assigment Software Patterns), as responsabilidades de um projeto podem ser divididas em ¿conhecer¿ e ¿fazer¿. Assinale o conceito CORRETO. No conhecer, eu delego quem é o responsável por saber o estado de uma determinada classe; No fazer, vai demonstrar quem é que vai saber o estado;No conhecer, eu delego a responsabilidade de quem é que vai ser responsável por criar; As responsabilidades ¿conhecer¿ estão relacionadas com a distribuição do comportamento do sistema entre as classes; As responsabilidades ¿fazer¿ estão relacionadas à distribuição das características do sistema entre as classes; Explicação: Esse conceito está CORRETO porque: As responsabilidades ¿conhecer¿ estão relacionadas à distribuição das características do sistema entre as classes. As responsabilidades ¿fazer¿ estão relacionadas com a distribuição do comportamento do sistema entre as classes. No fazer, eu delego a responsabilidade de quem é que vai ser responsável por criar. No conhecer, vai demonstrar quem é que vai saber o estado. 6. O que é MELHOR para uma aplicação: acoplamento alto ou acoplamento fraco? Qual a afirmativa está INCORRETA. Um alto acoplamento traz inúmeros problemas para uma aplicação, é consenso entre profissionais da área que todo projeto orientado a objetos deve minimizar o acoplamento entre os artefatos. Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a diminuição das chances de reutilização. Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a dificuldade de entendimento da solução proposta Um alto acoplamento traz inúmeros problemas para uma aplicação, é consenso entre profissionais da área que todo projeto orientado a objetos deve aumentar o acoplamento entre os artefatos. Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais aumentar a complexidade da manutenção da aplicação. Explicação: Este item está INCORRETO, porque um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a dificuldade de entendimento da solução proposta, a diminuição das chances de reutilização, além de aumentar a complexidade da manutenção da aplicação. Portanto, é consenso entre profissionais da área que todo projeto orientado a objetos deve minimizar o acoplamento entre os artefatos. 7. Marque a alternativa que apresenta apenas padrões GRASP? Observer, visitor, strategy Coesão alta, controlador, strategy Coesão alta, polimorfismo, visitor Coesão alta, controlador e polimorfismo Controlador, polimorfismo e Memento Explicação: Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco). 8. qual das afirmativas abaixo não é verdadeira. Um alto acoplamento aumenta a dificuldade de entendimento da solução proposta, a diminuição das chances de reutilização, além de aumentar a complexidade da aplicação. O ideal que dois artefatos tenham alta dependência. Isto garante um bom desempenho e facilita a manutenção dos artefatos. Dessa forma o padrão Acoplamento Baixo é utilizado para atribuir responsabilidades de modo que o acoplamento permaneça baixo. Um acoplamento definido para que classes que contenham métodos que possibilitem alterações de requisitos deve ser a menor possível, desta forma se favorece futuras manutenções. acoplamento é o grau de dependência entre dois artefatos. É uma medida de quão forte um elemento está conectado ou tem conhecimento de, ou depende de outros elementos. 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. Vamos entender o conceito de Acoplamento e Artefato. Acoplamento é o grau de dependência entre dois artefatos. Artefato refere-se a qualquer elemento de um projeto de software orientado a objetos, tais como classe, método, componente, pacote, entre outros. Essa afirmativa é verdadeira porque um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a dificuldade de entendimento da solução proposta, a diminuição das chances de reutilização, além de aumentar a complexidade da manutenção da aplicação. Portanto, é consenso entre profissionais da área que todo projeto orientado a objetos deve minimizar o acoplamento entre os artefatos. O padrão Acoplamento Baixo é utilizado para atribuir responsabilidades de modo que o acoplamento permaneça baixo. 1. 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 pergunta se 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 os itens II e III; Somente o item III; Somente o item II; Somente os itens I e II; Somente o item I; 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? 2. sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: Define-se vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. Define-se um método abstrato, em uma classe abstrata. Cada classe que herda a classe abstrata implementa o método físico. Dependendo da classe instanciada é executado o método correpondente. Isto é polimorfismo. Define-se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo Define-se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método na nova classe. Isto é polimorfismo. 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. 3.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 Indireção Especialista da Informação Alta Coesão Controlador 4. 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? Criador; Especialista da Informação; Indireção; Invenção Pura; High Cohesion (Coesão alta); 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. 5. Com relação aos padrões GRASP, Pressman (2006) explica que 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. Relacione os tipos de coesão com a sua real definição: 1- Ocorre quando um módulo executa um e somente um cálculo, e então retorna o resultado. 2- Todas as operações que tem acesso aos mesmos dados são definidas dentro de uma classe. 3- Ocorre quando uma camada de mais alto nível tem acesso a serviços de camadas mais baixas, mas camadas mais baixas, não tem acesso a camadas mais altas. 1- COMUCACIONAL, 2- FUNCIONAL, 3- EM CAMADA. 1- FUNCIONAL, 2- EM CAMADA, 3- COMUCACIONAL. 1- EM CAMADA, 2- FUNCIONAL, 3- COMUCACIONAL. 1- COMUCACIONAL, 2- EM CAMADA, 3- FUNCIONAL. 1- FUNCIONAL, 2- COMUCACIONAL, 3- EM CAMADA. Explicação: Essa resposta está CORRETA, porque corresponde exatamente a cada uma das definições dos tipos de Coesão determinada por Presman. 6. O tipo tipos de coesão caracterizada quando um módulo executa um e somente um cálculo, e então retorna o resultado é chamada de: Funcional; Em Camada; Recursiva. Paralela; Comucacional 7. 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. II, III e IV, apenas. I, II e III, apenas. I e II, apenas. I, II, III e IV. 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. 8. O General Responsability Assignment Software Pattener que define a responsabilidade: Comportamentos com o mesmo nome mas que fazem operações deferentes. Trata-se de? Polymorphis Pure Fabrication Indirection Information Expert High Coesion 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. 1. Marque dentre as opções apresentadas aquela que corresponde ao padrão de projeto que sugere atribuir um conjunto de responsabilidades altamente coesas a uma classe artificial, ou de conveniência, que não represente o domínio do problema, algo inventado, para apoiar coesão alta, acoplamento baixo e reuso. Criador Variações protegidas; Indireção; Proxy; Invenção pura; Gabarito Coment. 2. O padrão Invenção Pura tem como característica: O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou serviços, para que eles não sejam diretamente acoplados. 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. É um principio básico para fornecer flexibilidade e proteção contra diversos tipos de variações em um projeto orientado a objetos, tais como: variações nos dados, comportamento, hardware, componentes de software, sistemas operacionais, entre outros. é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar uma mensagem de operação do sistema. 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. 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 (Pure Fabrication), Indireção e Variações Protegidas. O padrão Inversão Pura resolve problemas como: 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? e Atribuir responsabilidades apenas para classes do domínio conceitual pode levar à situações de maior acoplamento e menos coesão. A solução para isso é atribuir um conjunto altamente coesivo de responsabilidades (ou seja, aquelas séries de responsabilidades que são coesasvou 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). 3. O padrão de projeto variações protegidas é um princípio básico para fornecer _____________e _____________ flexibilidade e proteção contra diversos tipos de variações em um projeto orientado a objetos, Complete as lacunas com a opção correta. proteção e visibilidade; flexibilidade, proteção e visibilidade. flexibilidade e proteção; proteção e coesão; flexibilidade e acoplamento; 4. 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. o acoplamento fica mais baixo; as extensões para novas variações são difiíceis de adicionar, as extensões para novas variações são fáceis de adicionar, novas implementações são introduzidas sem afetar o cliente, o impacto ou custo das modificações pode ser diminuído. Gabarito Coment. 5. 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? polimorfismo controlador Indireção Invenção Pura variações protegidas 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. 6. O padrão Indireção tem como característica: 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. Sugere atribuir um conjunto de responsabilidades altamente coesa a uma classe artificial ou de conveniência que não represente o domínio do problema, algo inventado, para apoiar coesão alta, acoplamento baixo e reuso. O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou serviços, para que eles não sejam diretamente acoplados. É um principio básico para fornecer flexibilidade e proteção contra diversos tipos de variações em um projeto orientado a objetos, tais como: variações nos dados, comportamento, hardware, componentes de software, sistemas operacionais, entre outros. é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar uma mensagem de operação do sistema. 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. 7. O padrão Variações protegidas tem como característica: 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. O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou serviços, para que eles não sejam diretamente acoplados. é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar uma mensagem de operação do sistema. É 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. 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 (Pure Fabrication), Indireção e Variações Protegidas. O padrão de projeto Variações Protegidas é 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. O padrão Variações Protegidas resolve problemas como: 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? A ideia é identificar os pontos de variação ou instabilidade previsível e atribuir responsabilidades para criar uma interface estável em torno deles. Larman (2007) compara o amadurecimento de um desenvolver ou projetista de software ao seu crescente conhecimento sobre mecanismos para obter variações protegidas. Argumenta que, nos primeiros estágios, o programador aprende sobre encapsulamento de dados, interfaces e polimorfismo. 8. 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 a responsabilidade a um objeto intermediário para mediar as mensagens; Atribuir por meio de Polimorfismo, uma interface consistente; 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 entre outros componentes ou serviços, para que não sejam diretamente acoplados; Explicação: Essa resposta está correta porque as outras se referem a soluções de Indireção.
Compartilhar