SóProvas



Questões de Padrões de projeto (Design Patterns)


ID
5398
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2006
Provas
Disciplina
Arquitetura de Software
Assuntos

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:

Alternativas
Comentários
  • B - Errada

    Factory Method

    Também conhecido como Virtual Constructor, este padrão tem por objetivo definir uma interface para criar um objeto, mas deixar as subclasses decidirem que classe instanciar. O Factory Method permite adiar a instanciação para subclasses.

    Builder

    Use o padrão builder para encapsular a construção de um produto e permitir que ele seja construido em etapas.

ID
5749
Banca
CESGRANRIO
Órgão
EPE
Ano
2006
Provas
Disciplina
Arquitetura de Software
Assuntos

Considere os padrões que podem ser utilizados em um projeto de software e relacione os padrões com suas respectivas intenções primárias.

Padrão
I - Bridge
II - Builder
III - Factory Method

Intenção primária
(P) Padrão estrutural cuja intenção é converter a interface de uma classe em outra interface, esperada pelos clientes, permitindo que classes com interfaces incompatíveis trabalhem em conjunto, o que, de outra forma, seria impossível.
(Q) Padrão estrutural cuja intenção é desacoplar uma abstração da sua implementação, de modo que as duas possam variar independentemente.
(R) Padrão de criação cuja intenção é 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.
(S) Padrão de criação cuja intenção é definir uma interface para criar um objeto, mas deixando as subclasses decidirem que classe instanciar. Ele permite adiar a instanciação para subclasses.

A relação correta é:

Alternativas
Comentários
  • Bridge - Ponte (Objeto) Desacopla uma abstração de sua
    implementação, de modo que as duas possam variar
    independentemente.

    Builder - Construtor (Object) Separa construção da
    representação de um objeto complexo, de modo que o mesmo
    processo de construção possa criar diferentes representações.

    FactoryMethod - Método Fabricante (Class) Define uma
    interface para criação um objeto, mas deixa subclasses decidir
    quais classes instanciar. Permitindo a uma classe delegar
    instanciação a subclasses.

    Fonte: Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
  • O P se refere ao padrão Adapter

  • Vamos as definições dos tres padrões pedidos na questão:

    • Bridge:  é um padrão de projeto de software, ou design pattern em inglês, utilizado quando é desejável que uma interface (abstração) possa variar independentemente das suas implementações;
    • Builder:  é um padrão de projeto de software que permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações;
    • Factory Method:  é um padrão de projeto de software (design pattern, em inglês) que fornece uma interface para criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas;

    Realizando a correspondencia temos:
    • Q representa o padrão Bridge;
    • R representa o padrão Builder;
    • S representa o padrão FactoryMethod;
    Sobra a letra P que tem a seguinte definição: " Padrão estrutural cuja intenção é converter a interface de uma classe em outra interface, esperada pelos clientes, permitindo que classes com interfaces incompatíveis trabalhem em conjunto, o que, de outra forma, seria impossível. " Que e o padrão Adapter.

    FONTE:http://pt.wikipedia.org/wiki/Builder


  • Builder e Factory são de criação (fica fácil lembrar até mesmo pelo próprio nome).
    Depois disso dá pra matar a questão por eliminação. As vezes, só sabendo onde cada padrão se encaixa (criação, estrutural e comportamental) já da pra ganhar a questão.
  • Para responder esta questão você nem precisa conhecer a definição dos padrões basta saber sua classificação e por eliminação já encontra a resposta da questão.

ID
8275
Banca
ESAF
Órgão
Receita Federal
Ano
2005
Provas
Disciplina
Arquitetura de Software
Assuntos

Analise as seguintes afirmações relacionadas a padrões de projetos:

I. O padrão Builder separa a construção de um objeto complexo de sua representação, de modo a que o mesmo processo de construção possa criar diferentes representações.

II. O método Abstract Factory fornece uma interface para a criação de uma família de objetos relacionados ou dependentes sem especifi car suas classes completas.

III. O padrão Bridge defi ne uma interface para criar um objeto, mas deixa as subclasses decidirem que classe será instanciada. O Bridge permite a uma classe postergar a instanciação das subclasses.

IV. O Chain of responsability usa compartilhamento para suportar grandes quantidades de objetos e define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são automaticamente notificados e atualizados.

Indique a opção que contenha todas as afirmações verdadeiras.

Alternativas
Comentários
  • I. Builder é um padrão de projeto de software que permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.II. Abstract Factory é um padrão de projeto de software (design pattern em inglês). Este padrão permite a criação de famílias de objetos relacionados ou dependentes, através de uma única interface e sem que a classe concreta seja especificada.III. Bridge é um padrão de projeto de software, ou design pattern em inglês, utilizado quando é desejável que uma interface (abstração) possa variar independentemente das suas implementações.IV. O padrão de projeto de software Chain of Responsibility representa um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes. Esses objetos receptores passam a solicitação ao longo da cadeia até que um ou vários objetos a tratem.Fonte: Wikipedia
  • Complementando:IV. O Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente. Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto.
  • O item III define Factory Method (e não bridge)"Definir uma interface para criar um objeto mas deixar que subclasses decidam que classe instanciar. Factory Method permite que uma classe delegue a responsabilidade de instanciamento às subclasses." [GoF]
  •  Na verdade essa questão deveria ser anulada, haja vista que apenas o item I está correto e devido ao erro do item II no final do período, onde está completas deveria ser concretas

     

    II. O método Abstract Factory fornece uma interface para a criação de uma família de objetos relacionados ou dependentes sem especifi car suas classes completas.

    Mas nesse caso, vai por eliminação para não perder a questão.

  • I. O padrão Builder separa a construção de um objeto complexo de sua representação, de modo a que o mesmo processo de construção possa criar diferentes representações.

    II. O método Abstract Factory fornece uma interface para a criação de uma família de objetos relacionados ou dependentes sem especifi car suas classes completas.

    III. O padrão Bridge define uma interface para criar um objeto, mas deixa as subclasses decidirem que classe será instanciada. O Bridge permite a uma classe postergar a instanciação das subclasses. (Isso é o Factory Method)

    IV. O Chain of responsability usa compartilhamento para suportar grandes quantidades de objetos e define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são automaticamente notificados e atualizados. (Isso é o Flyweight)
  • Colega Tiago Melquiades , o item IV refere-se ao padrão Observer, conforme a seguinte definição:


    A definição formal do Padrão Observer é: “O Padrão Observer define uma dependência um-para-muitos entre os objetos de modo que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente”.



    Fonte: http://www.devmedia.com.br/padrao-de-projeto-observer-em-java/26163

  • Na afirmativa II não seria classes concretas?

  • a) Builder

    b) Abstract Factory

    c) Factory Method

    d) Observer


ID
17776
Banca
CESGRANRIO
Órgão
BNDES
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Ao alterar o estado de uma classe, o desenvolvedor deseja que uma ou mais classes da interface gráfica sejam modificadas. Entretanto, o desenvolvedor não acha interessante criar um acoplamento forte entre essas classes. Qual padrão de projeto comportamental é mais adequado para resolver essa situação?

Alternativas
Comentários
  • Composite - ESTRUTURAAdapter - ESTRUTURAObserver - COMPORTAMENTOAbstract Factory - CRIAÇÃODecorator - ESTRUTURAfonte: http://pt.wikipedia.org/wiki/Padrões_de_projeto_de_software
  • a) Composite (composição) - PADRÃO ESTRUTUTAL-(objeto) - Compor objetos em estruturas de arvores para representar hierarquias todo-parte. Permite tratar de modo uniforme objetos individuais e suas composiçõesb)Adapter (Adaptador) - PADRÃO ESTRUTUTAL-(classe) - Converter a interface de uma classe em outra interface que clientes possam utilizar. Compatibiliza classes, permitindo que trabalem em conjunto.c) Observer - Observador - PADRÃO COMPORTAMENTAL -(objeto) - Define uma dependencia 1 para n entre objetos, de modo que quando o estado de um objeto é alterado todos seus dependentes são notificados e atualizados automaticamente ( RESPOSTA CORRETA) d) Abstract Factory - PADRÃO CRIACIONAL -(objeto) - Provê uma interface para criar familias de objetos relacionados ou dependentes sem especificar suas classes concretas e) Decorator - Decorador -PADRÃO ESTRUTUTAL -(objeto) - Anexa dinamicamente responsabilidades adicionais a um objeto.Provê uma alternativa flexivel ao uso de herança como modo de estender funcionalidades.fonte: http://www.cic.unb.br/~jhcf/MyBooks/
  • Focanco apenas no padrão Observer, temos que suas principais características são:
    1-Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizadosautomaticamente.
    2-Tanto observadores quando sujeitos observados podem ser reutilizados e ter sua interface e implementação alteradas sem afetar o sistema
    3-O acoplamento forte implicado pelo relacionamento bidirecional é reduzido com o uso de interfaces e classes abstratas

    •Desvantagens
    1-O abuso pode causar sério impacto na performance. 
    Sistemas onde todos notificam todos a cada mudança ficam inundados de requisições ("tempestade de eventos")

    O Diagrama de Classes que ilustra o padrão:
     

    Fonte: http://www.argonavis.com.br/cursos/java/j930/J930_03.pdf

ID
76912
Banca
CESGRANRIO
Órgão
BACEN
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Um arquiteto de software estuda que padrões de projeto são apropriados para o novo sistema de vendas de uma empresa. Ele deve considerar que o padrão

Alternativas
Comentários
  • Bridge: utilizado quando é desejável que uma interface (abstração) possa variar independentemente das suas implementações.Builder: permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.Singleton: este padrão garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.Chain of Responsibility: representa um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes. Esses objetos receptores passam a solicitação ao longo da cadeia até que um ou vários objetos a tratem.Um Template Method auxilia na definição de um algoritmo com partes do mesmo definidos por Método abstratos. As subclasses devem se responsabilizar por estas partes abstratas, deste algoritmo, que serão implementadas, possivelmente de várias formas, ou seja, cada subclasse irá implementar à sua necessidade e oferecer um comportamento concreto construindo todo o algoritmo.
  • a) Bridge    Builder   separa a construção de um objeto complexo de sua representação, de modo que o mesmo processo de construção possa criar diferentes representações.

    b) Builder   Singleton   garante que uma classe seja instanciada somente uma vez, fornecendo também um ponto de acesso global.

    c) Singleton   Bridge   separa uma abstração de sua implementação, de modo que os dois conceitos possam variar de modo independente.

    d) Chain of Responsibility (CORRETO) evita o acoplamento entre o remetente de uma solicitação e seu destinatário, dando oportunidade para mais de um objeto tratar a solicitação.

    e) Template Method Fly Weight utiliza compartilhamento para suportar, eficientemente, grandes quantidades de objetos de granularidade fina.
  • O padrão de projeto de software, Chain of Responsibility, fornece um acoplamento mais fraco. Evita 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. Utilizar quando:
    • mais de um objeto pode tratar uma solicitação e o objeto que a tratará não é conhecido a priori.
    • o objeto que trata a solicitação deve ser escolhido automaticamente;
    • deve-se emitir uma solicitação para um dentre vários objetos, sem especificar explicitamente o receptor;
    • o conjunto de objetos que pode tratar uma solicitação deveria ser especificado dinamicamente.
  • d-

    chain of responsibility permite a um numero qualquer de classes tentar responder a um request sem necessitar conhecer as possibilidades de outras classes fazerem esse mesmo request. isso diminuir o acoplamento entre objetos. o unico link entre este sobjetos seria esse request que passe de um objeto a outro ate que 1 destes objetos possa responder


ID
81559
Banca
FCC
Órgão
TRE-AM
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

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

Alternativas
Comentários
  • Gabarito: "C"Model-View-Controller (MVC)Um dos primeiros padrões identificados; surgiu na comunidade de Smalltalk; Contexto: aplicações interativas que requerem interfaces flexíveis. Objetivo:Separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo da aplicação (Control) A idéia é permitir que uma mesma lógica de negócios possa ser acessada e visualizada através de várias interfaces. Na arquitetura MVC, a lógica de negócios (chamaremos de Modelo) não sabe de quantas nem quais interfaces com o usuário estão exibindo seu estado. Com as diversas possibilidades de interfaces que conhecemos hoje, a MVC é uma ferramenta indispensável para desenvolvermos sistemasA-ERRADOO Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente. Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto.O padrão Observer é também chamado de Publisher-Subscriber, Event Generator e Dependents.B-ERRADOLayers (Camadas), refere-se à arquiteturas N-camadas.D-ERRADOExpert, é um padrão de projeto de software (do inglês Design Pattern). Este padrão visa atribuir responsabilidade ao “expert” de informação - a classe que possui a informação necessária para preencher a responsabilidade.Atenção: este é um padrão GRASP, e não GoFe-ERRADOpadrão creator é utilizado para agregação de classes, não é o caso nesta questão

ID
119293
Banca
FCC
Órgão
TRF - 4ª REGIÃO
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Sobre os design patterns, é correto afirmar:

Alternativas
Comentários
  • Em engenharia de software, design pattern é uma solução reutilizável para um problema conhecido. Não se trata de uma solução completa que pode ser transformada diretamente em código. Trata-se de uma descrição (ou modelo) de como se resolver um problema que pode ser utilizado em diferentes situações.
  • e) O padrão é uma descrição de conhecimento e experiência acumulados, uma solução comprovada para um problema comum.
  •  Sabendo que os padrões de projeto são originários da arquitetura (não a de software, mas arquitetura mesmo..) a primeira questão, que parece ser completa, é errada porque faz parecer que este tipo de linguagem é apenas usada em sistemas orientados a objeto.

  • a) Errado, não se pode afirmar que sempre incluem código de programação
    b) Errado, um design pattern não é uma aplicação
    c) Errado, grande parte dos patterns são razoavelmente complexos
    d) Errado, o conceito de design pattern pode ser aplicado desde o desenvolvimento de software até outras áreas como arquitetura e educação

    e) Correto.
  • e-

    o que caracteriza um padrão:

    1- solução amplamente testada a aprovada

    2- aplicavel em varios cenarios

    3- bem-definidos e documentados

    4- é como um guia ou mapa, nunca uma estrategia


ID
130117
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Com relação aos padrões de projeto, julgue os itens seguintes.

O Singleton é um padrão que garante que uma classe tenha apenas uma instância.

Alternativas
Comentários
  • CERTO

    Singleton, é um padrão de projeto de software (do inglês Design Pattern). Este padrão garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.

  • Só complementando. Para implementar esse padrão é preciso que a classe seja declarada como final, e seu construtor como private.
  • correto - singleton é usado para restringir a criação de mais de 1 instancia do objeto. Geralmente é feito com construtor privado:

     private NomeClass() {}.


ID
130120
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Com relação aos padrões de projeto, julgue os itens seguintes.

Alguns padrões de criação como o Prototype, o Proxy e o Façade não são adequados para a programação orientada a objetos.

Alternativas
Comentários
  • Façade e Proxy são Padrões estruturais, não de criação.
  • Proxy(Estrutural) - prover uma forma rápida e leve de acesso a um objeto, que vai substituí-lo enquanto não for necessário acessar sua instância diretamente.
    Prototype(Criação) - prover uma abordagem diferente para criação de objetos, através da clonagem de uma instância denominada protótipo.
    Facade(Estrutural) - produzir uma interface mais simples para que um cliente possa acessar diversos métodos de um grupo de classes.

    Esses padrões foram criados inclusive para aplicação em sistemas orientados a objeto, o erro nesta questão é o que esta abaixo em negrito:
    Alguns padrões de criação como o Prototype, o Proxy e o Façade não são adequados para a programação orientada a objetos.

ID
130123
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Com relação aos padrões de projeto, julgue os itens seguintes.

No polimorfismo, que é um tipo de padrão GRASP, um mesmo método pode apresentar várias formas.

Alternativas
Comentários
  • Certo

    Padrões GRASP:

    Controller
    Creator
    Expert
    Law of Demeter
    Low Coupling/High Cohesion
    Polymorphism
    Pure Fabrication
     
  • Cuidado com a wikipedia! São 9 os padrões GRASP:

      - Creator
      - Information Expert
      - Low Coupling
      - Controller
      - High Cohesion
      - Polymorphism
      - Pure Fabrication
      - Indirection
      - Protected Variations

    Referência: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Third Edition - By Craig Larman

  • A wiki é um problema, mas é a queridinha da FCC, e utilizada como fonte consagrada! tsc tsc
  • Não é mesmo método e várias formas, mas mesma assinatura e vários métodos.
  • Nossa, cai direitinho. Fiz confusão com os pilares da OO e achei que o Poliformismo não era um GRASP. O decoreba não para nunca , vamos em frente!
  • General responsibility assignment software patterns (ou principles), abreviado GRASP, consiste em diretrizes para atribuir responsabilidade a classes e objetos em projeto orientado a objetos.

    Os diferentes padrões e princípios utilizados no GRASP são: controller (controlador), creator (criador), indirection (indireção), information expert (especialista na informação), alta coesão, baixo acoplamento, , pure fabrication (fabricação/invenção pura) e protected variations (variações protegidas). Todos esses padrões respondem a algum problema, e esses problemas são comuns a quase todos os projetos de . Essas técnicas não foram inventadas a fim de criar novas formas de trabalho, mas para melhor documentar e padronizar os antigos e amplamente praticados princípios de programação em padrões orientado a objetos.

    fonte: wikipedia


ID
130126
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Com relação aos padrões de projeto, julgue os itens seguintes.

Expert é um padrão que apresenta uma interface para várias funcionalidades de uma API de maneira simples e fácil de usar.

Alternativas
Comentários
  • Essa questão refere-se ao padrão Facade (a pronúncia do padrão é "façade", e não "faceide")

    Então, estaria correto a questão se a mesma fosse escrita da seguinte forma:

    "Facade é um padrão que apresenta uma interface para várias funcionalidades de uma API de maneira simples e fácil de usar. "

  • Padrão Information Expert (Especialista na informação): Atribuir uma responsabilidade ao especialista na informação: classe que possui a informação necessária para cumpri-la.

    Faz parte dos 9 padrões GRASP (https://en.wikipedia.org/wiki/GRASP_(object-oriented_design)#Information_expert).

     

    Gabarito: Errado

  • Segue outra relacionada:

     

    QUESTÃO CERTA: O presidente de uma empresa determinou que fosse disponibilizado um sistema de vendas na Internet. No entanto, o software de controle de estoque que deve ser acessado pela aplicação de vendas é muito antigo e provê uma API (Application Programming Interface) de uso muito complicado. Para que os desenvolvedores possam acessar uma interface mais simples, o arquiteto do sistema pode determinar o uso do padrão de projeto: façade.

     

    Fonte: Qconcursos. 

     

    Resposta: Errado. 


ID
130129
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Com relação aos padrões de projeto, julgue os itens seguintes.

Adapter é um padrão estrutural utilizado para compatibilizar interfaces de modo que elas possam interagir.

Alternativas
Comentários
  •   Padrões de criação:

    1. Abstract Factory - prover uma interface para criação de famílias de objetos relacionados ou dependentes sem que se especifiquem suas classes concretas.

    2. Builder - fazer com que um processo único de construção de um objeto complexo possa ser utilizado para diferentes formas de representação do mesmo.

    3. Factory Method - permitir a definição de uma interface (o factory method) em uma classe mãe abstrata que, em suas subclasse, especializa-se para criar vários tipos de objeto.

    4. Singleton - garantir que uma classe possua uma e somente uma instância.

    5. Prototype - prover uma abordagem diferente para criação de objetos, através da clonagem de uma instância denominada protótipo.

    Padrões estruturais:

    1. Adapter - converter uma interface de uma classe em outra, permitindo que classes com interfaces incompatíveis possam trabalhar em conjunto.

    2. Bridge - permitir que a abstração de uma classe seja independente de sua implementação, de forma a facilitar e diminuir a necessidade de combinação entre diversos tipos de implementação e diversos tipos de classes.

    3. Decorator - estender a responsabilidade de um objeto dinamicamente, em tempo de execução, sem a necessidade de criação de subclasses.

    4. Flyweight - prover uma estrutura para a representação de classes que possuam um grande número de instâncias com características que se repetem com muita frequência.

    5. Proxy - prover uma forma rápida e leve de acesso a um objeto, que vai substituí-lo enquanto não for necessário acessar sua instância diretamente.

    6. Facade - produzir uma interface mais simples para que um cliente possa acessar diversos métodos de um grupo de classes.

    7. Composite - prover uma estrutura de árvore para representação eficiente de relações todo-parte.

    Padrão comportamental:

    1. Chain of responsibility - evitar acoplamento entre o emissor e o receptor de uma requisição, de forma que mais de um objeto possa manusear esta requisição.

  • Direto do Wikipedia:

    Padrões de criação

    Padrões estruturais

    Padrões comportamentais


ID
137125
Banca
FGV
Órgão
Senado Federal
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Considere as seguintes assertivas sobre as vantagens do uso de padrões de software (software patterns):

I. Padrões de projeto proporcionam um vocabulário comum de projeto, facilitando comunicação, documentação e aprendizado dos sistemas de software.
II. Padrões de projeto auxiliam no desenvolvimento de software por meio da reutilização do projeto de soluções computacionais já testadas e aprovadas.
III. Uma biblioteca de padrões pode ajudar a melhorar e padronizar o desenvolvimento de software.

As assertivas corretas são:

Alternativas
Comentários
  • Eu solicitaria a anulação dessa questão, pois o item  "I. Padrões de projeto proporcionam um vocabulário comum de projeto, facilitando comunicação, documentação e aprendizado dos sistemas de software."  faz 95% mais referência ao uso da UML do que padrões.

    Padrões de projetos são uma coleção de padrões de desenho de software, que são soluções para problemas conhecidos e recorrentes no desenvolvimento de software.


  • Thiago,

    Uma das vantagens dos padroes de projeto é:

    "Utilizar solucoes que tem um nome: facilita a comunicacao, compreensao e documentacao."


    Isso é obvio. Singleton será singleton em qualquer lugar do mundo que vc trabalhar.

  • A suposta dúvida estaria no item a). Mas tem que responder sem enloucubrar.
    Você é capaz de enxergar uma só hipótese em que Padrões de projeto facilite a comunicação? então é V!
    Não enxerga? Olha só o exemplo do camarada acima! Tem diversos exemplos.

    Preto no branco!
    Segue o jogo...

ID
142249
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

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?

Alternativas
Comentários
  • Interator: é um padrõa GoF do tipo comportamental que permite a interação e um modo de acesso a elementos de agregados de objetos, sequencialmente, sem exposição das estruturas internas.

    Visitor: è um padrõa GoF do tipo comportamental que permite que se crie uma nova operação sem que se mude as classes dos elementos sobre os quais ela opera. É uma maniera de separar a algoritmo da estrutura de um objeto.

    Bridge: é um padrõa GoF do tipo estrutural e é utilzado quando se deseja que uma interface (abstração) possa variar independente de sua implementação.

    Memento: è um padrõa GoF do tipo comportamental que permkite armazenar o estado interno do objeto em um determinado momento para que seja possível retornar a este estado quando necessário.

    Singleton: é um padrõa GoF de criação que garante a existencia de apenas uma instância deuma classe, mantendo um ponto global de acesso ao objeto.

ID
142252
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Sobre o padrão arquitetural Gateway de linha de dados (Row Data Gateway), é INCORRETO afirmar que

Alternativas
Comentários
  • Row Data Gateway é um design pattern que utiliza um objeto que representa exatamente uma linha de registro do banco de dados em memória. A estrutura dessa entidadade é exatamente igual a estrutura física da tabela de modelo relacional. O gateway torna-se uma interface entre a apliacação e o registro, encapsulando a programação de acesso ao banco de dados. A sua implementação e consumo pode ser realizado de diversas maneiras, considerando o modelo utilizado em sua aplicação para organizar as layers e suas responsabilidades.

    Fonte(http://marcobaccaro.wordpress.com/2010/07/10/row-data-gateway/)
  • Row Data Gateway é um design pattern que utiliza um objeto que representa exatamente uma linha de registro do banco de dados em memória. A estrutura dessa entidadade é exatamente igual a estrutura física da tabela de modelo relacional. O gateway torna-se uma interface entre a apliacação e o registro, encapsulando a programação de acesso ao banco de dados. A sua implementação e consumo pode ser realizado de diversas maneiras, considerando o modelo utilizado em sua aplicação para organizar as layers e suas responsabilidades.
    O importante é termos em mente que, algum método será responsável em retornar um objeto Gateway ou uma coleção do mesmo. A semelhança entre o padrão Gateway e o Active Record é grande, o ponto crucial entre eles é que o Gateway é 100% algoritmo de persistência do registro e 0% de regra de negócio.
  • Row Data Gateway

    O problema

    Como representar registros de uma tabela do banco de dados na aplicação?

    Soluções possíveis

    Existem diversas soluções propostas para esse problema. Uma delas defende que, por facilidade na codificação, tanto os dados, quanto as operações sobre eles, quanto a lógica do negócio deve permanecer no mesmo objeto. Essa abordagem é chamada de Active Record. No mundo Java, esse pattern é bastante difundido através do framework Hibernate. Para PHP existe o Doctrine.


ID
142267
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

O presidente de uma empresa determinou que fosse disponibilizado um sistema de vendas na Internet. No entanto, o software de controle de estoque que deve ser acessado pela aplicação de vendas é muito antigo e provê uma API (Application Programming Interface) de uso muito complicado. Para que os desenvolvedores possam acessar uma interface mais simples, o arquiteto do sistema pode determinar o uso do padrão de projeto

Alternativas
Comentários
  • Façade - Oferece uma interface única de mívrl mais eleveda(alto nível) para um conjunto de interfaces de um subsistema.
  • a) Prototype - Permite a criação de objetos a partir de um modelo original, ou protótipo.
    b) Decorator -  Prover alternativa flexível ao uso de subclasses para se estender a funcionalidade de uma classe.
    c) Observer -  define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente.
    d) Façade - Disponibiliza uma interface simplificada para uma das funcionalidades de uma API
    e) Flyweight - Apropriado quando vários objetos devem ser manipulados, e esses não suportam dados adicionais

    Fonte (Wikipédia )

  • d-

    facade- interface unificada e simplificada para conjunto de interfaces, ocultando e/ou alterando componentes.

  • D : o padrão façada disponibiliza uma interface unificada para um conjunto de interfaces de uma ou mais subsistema.

  • O que é Façade, ou fachada? é a interface que o usuário vê, que oculta cada uma das classes internas. Como um tomador de decisão, escolhe a classe que será utilizada de forma harmoniosa.

    Fonte: Fernando Nishimura Informática.

    GABARITO: LETRA "D".


ID
142270
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Ao consultar informações a respeito dos padrões de projeto Adapter e Bridge, um Analista de Sistemas identificou uma afirmativa INCORRETA. Assinale-a.

Alternativas
Comentários
  • Adapter: é utilizado para adaptar uma interface de uma classe. Permite que classes com interfaces incompativeis possam interagir. Permite que um objeto cliente utilize serviços de outros objetos com interfaces diferentes por meio de uma interface única.
    É um padrão estrutural.

    Bridge: é utilizado quando se deseja que uma interface (abstração) possa variar independente de suas implementações.
    É um padrão estrutural.

    Não existe padrão hierarquia de padrões.
  • LETRA D

    Adapter Os padrões estruturais se preocupam com a forma como classes e objetos são compostos para formar estruturas maiores. Os de classes utilizam a herança para compor interfaces ou implementações, e os de objeto ao invés de compor interfaces ou implementações, eles descrevem maneiras de compor objetos para obter novas funcionalidades. A flexibilidade obtida pela composição de objetos provém da capacidade de mudar a composição em tempo de execução o que não é possível com a composição estática (herança de classes).

    Bridge pode ser reconhecido por uma distinção clara entre alguma entidade controladora e várias plataformas diferentes nas quais ela se baseia.


ID
144916
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue os itens que se seguem a respeito dos padrões de desenho e outras técnicas para reúso de software.

Uma das vantagens do padrão Prototype é o reúso de memória possível por meio do compartilhamento de vários objetos por meio de múltiplas interfaces.

Alternativas
Comentários
  • Comentário equivocado.
    O padrão que permite fornece o exposto pela questão é o Flyweight.

    Flyweight is a software design pattern. A flyweight is an object that minimizes memory use by sharing as much data as possible with other similar objects; it is a way to use objects in large numbers when a simple repeated representation would use an unacceptable amount of memory.
    http://en.wikipedia.org/wiki/Flyweight_pattern
  • Exato.

    Esse conceito está relacionado ao flyweight.

    Memento externaliza o estado interno de um objeto para que o
    objeto possa ter esse estado restaurado posteriormente.
    Ex: Operações Undo (O famoso ctrl + z no word)
  • Prototype
    Especificar os tipos de objetos a serem criados usando uma instância como protótipo e criar novos objetos ao copiar este protótipo.
    O padrão Prototype permite que um cliente crie novos objetos ao copiar objetos existentes.
    Uma vantagem de criar objetos deste modo é poder aproveitar o estado existente de um objeto.

ID
144922
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue os itens que se seguem a respeito dos padrões de desenho e outras técnicas para reúso de software.

Alguns dos usos típicos do padrão Façade são a unificação das várias interfaces de um sistema complexo; a construção de pontos de entrada para cada uma das múltiplas camadas de um sistema; a redução de dependências entre um cliente e múltiplas classes de implementação e o encapsulamento de todas as demais interfaces públicas de um sistema.

Alternativas
Comentários
  • Alguns dos usos típicos do padrão Façade são a unificação das várias interfaces de um sistema complexo; (certo)

    a construção de pontos de entrada para cada uma das múltiplas camadas de um sistema; a redução de dependências entre um cliente e múltiplas classes de implementação (certo) e o encapsulamento de todas as demais interfaces públicas de um sistema. (errado, pois não faz sentido e causaria um super acoplamento encapsular todas as interfaces externas em uma façade)

  • Eu marquei "errado", mas pensei que causa fosse:
    "a construção de pontos de entrada para cada uma das múltiplas camadas de um sistema" no meu entendimento só poderia ter um ponto de entrada(interface), o que facilitaria o acesso.
  • Acreidot que o texto refere-se a um Bridge
  • Eduardo,

    Cada camada de um sistema pode ser considerado um subsistema completo, por isso nesse caso, está correto afirmar que o padrão Façade pode ser útil.

ID
144925
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue os itens que se seguem a respeito dos padrões de desenho e outras técnicas para reúso de software.

O uso do padrão Command apresenta consequências como um objeto Command é usualmente refratário ao enfileiramento; um objeto Command é usualmente transiente, isto é, não é passível de serialização e o uso disseminado de Commands dificulta a estruturação de um sistema em operações de alto nível.

Alternativas
Comentários
  • O objetivo do padrão Command é encapsular uma solicitação como um objeto, desta forma permitindo que clientes parametrizem diferentes solicitações, enfileirem ou façam o registro (log) de solicitações e suportem operações que podem ser desfeitas. Logo as 3 afirmações acima estão erradas.
  •  Dá pra excluir só pela "não é passível de serialização". Imagine que os objetos Command devão ser executado apenas "depois". Para isso precisam ser salvos, logo, serializados.

  • Só o fato de dizer que é refratário ao enfileiramento, ou seja é contrário ao enfileiramento já torna a questão ERRADA. O Command permite enfileiramento de solicitações.

    Abraço e bons estudos.
    Marcelo

ID
144940
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Acerca de linhas de produtos e de componentes de software, julgue os itens subsequentes.

Na arquitetura de sistemas de mensageria, um dos padrões bastante utilizados é o Publish-Subscribe, que possui maior similaridade com o padrão Observer que com o padrão Iterator.

Alternativas
Comentários
  • O padrão Publish-Subscribe (Produtor-Consumidor) consiste em um processo no qual o produtor produz e publica um fluxo de dados, e, logo em seguira, o consumir detecta e remove (consome) esta informação do respectivo local publicado. Existe uma relação de dependência.
     
    O padrão Observer tem maior similaridade devido ser um padrão de projeto que define uma dependência um para muitos entre objetos, de maneira que quando um objeto muda de estado, todos os seus outros dependentes são notificados e atualizados automaticamente.
     
    O padrão de projeto Iterator serve somente para acessar sequêncialmente os elementos de um objeto agregado sem expor a sua representação subjacente.

     
    Fonte: 
    Gamma, E. et al. Padrões de Projeto. Soluções reutilizáveis de software orientado a objetos.

ID
144943
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Acerca de linhas de produtos e de componentes de software, julgue os itens subsequentes.

O uso de software externamente disponível não é parte de uma abordagem de linha de produtos, uma vez que a mesma é baseada na criação de uma biblioteca de componentes reusáveis pela própria organização que adota a abordagem.

Alternativas
Comentários
  • O uso de software externamente disponível É parte de uma abordagem de linha de produtos.

     

    The characteristic that distinguishes software product lines from previous efforts is predictive versus opportunistic software reuse. Rather than put general software components into a library in the hope that opportunities for reuse will arise, software product lines only call for software artifacts to be created when reuse is predicted in one or more products in a well defined product line.

     

    Fonte: https://en.wikipedia.org/wiki/Software_product_line

     

    Gabarito: Errado


ID
144949
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Acerca de linhas de produtos e de componentes de software, julgue os itens subsequentes.

Em um ciclo de vida, com base em componentes de software, as atividades de busca, avaliação, adaptação e testes de componentes ocorrem basicamente após as fase de desenho e antes da fase de testes do sistema de software.

Alternativas
Comentários
  • As atividades do processo baseado em componentes são:

    1. Elicitação de requisitos
    2. Lavantamento dos componentes
      1. Caso não tenha um componente adequado, criação deste componente
    3. Modificação dos requisitos de acordo com os componentes encontrados
    4. Projetar a arquitetura do sistema
    5. Desenvolver o sistema
    6. Testar o sistema
      1. Encontrou alguma coisa errada ?
        1. Volte para Desenvolver o sistema

    Então a busca ( 2) ocorre antes da fase de desenho (4).

  • Completando o comentário acima, não posso desenhar nada se ainda não fiz uma busca para saber se o componente existe.
  • Segundo Sommerville 8ª edição, p. 46, os estágios do modelo genérico para Component-based Software Engineering - CBSE são:

    1. Especificação dos requisitos
    2. Análise dos componentes -> Busca, avaliação
    3. Modificação dos requisitos -> Adaptação
    3. Projeto do sistema com reuso -> Desenho 
    4. Desenvolvimento e Integração
    5. Validação de Sistema -> Teste

    busca, avaliação, adaptação -> Antes do Desenho
    testes -> Após a fase de Desenho

    34 + 1 = 35  Você não digitou o resultado corretamente. Por favor, tente novamente.
  • Modelo Baseado em Componentes

    - Utiliza o reuso como peça principal

    - Depende de uma grande base de componentes reusáveis e algum framework de integração .

    -> Propicia redução de custo, entregas mais rápidas e aumento de qualidade ( Componentes já são previamente testados”.

    -> Componentes

    - E um bloco de construção modular

    - Executável

    - Independente

    - Padronizado

    - Reutilizável

    - Expõe um conjunto de interfaces.

    * Na engenharia de software baseada em componentes, na qual se supõe que partes do sistema já existam, o processo de desenvolvimento concentra-se mais na integração dessas partes que no seu desenvolvimento a partir do inicio. Essa abordagem é baseada em reuso para desenvolvimento de sistemas de software.


ID
149986
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

A respeito dos conceitos relacionados ao desenvolvimento de
sistemas e às metodologias de desenvolvimento de sistemas,
julgue os itens seguintes.

O uso de padrões de projeto somente pode ser aplicado a projetos que implementam o paradigma de programação orientada a objetos.

Alternativas
Comentários
  • O gabarito está correto? Na minha concepção, os padrões de projetos surgiram e são utilizados em POO.

     

    Os padrões de projeto de software ou padrões de desenho de software, também muito conhecido pelo termo original em inglês: Design Patterns, descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas conseqüências.

     

  • Passível de recurso.

    Extraído do livro "Padrões de Projeto" da Bookman (Pág. 20):

    "Padrões de projeto, neste livro, são descrições de objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto num contexto particular". ... "Cada padrão de projeto focaliza um problema ou tópico particular de projeto orientado a objetos."

    OBS: O autor não afirma que os padrões de projeto são implementáveis somente em OO. No entanto, quem conhece os padrões sabe que não teria como implementá-los numa linguagem procedural, devido ao constante uso de heranças, sobrescritas, abstração, etc. Em linguagens procedurais você não tem esses recursos. 

     

  • Padrões de Projeto, segundo Gamma et al.
    página 20.
    Padrões de projeto é para POO.
  • Padrões de projeto foram desenvolvidos por Gamma et Al para OO. Mas isso não limita o seu uso somente como OO.
    A ideia deles surgiu a partir de um livro que descrevia padrões em arquitetura. O que eles fizeram foi usar o conceito definido para o projeto de software, tendo OO como base - definir soluções abstratas para problemas específicos. Esse conceito pode ser aplicado em qualquer área e com qualquer tecnologia de desenvolvimento.
    Pra mim, essa é uma questão mais de interpretação, muitos sabem e erram porque acabam não interpretando corretamente ou como a banca ou pela pressa na hora de responder.
  • Desculpe, cotero, mas a questao deixa bem clara:

    A respeito dos conceitos relacionados ao desenvolvimento de
    sistemas e às metodologias de desenvolvimento de sistemas


    Ele restringe o ambito.
  • O pessoal está limitando Padrões de projeto apenas aos padrões de projeto definidos pelo GoF.
    Se a questão fosse restritiva, dizendo que os padrões GoF são usados em linguagem OO realmente estaria incorreta. No entanto, há inúmeros outros padrões de projeto, por exemplo, Padrões de Projeto SOA, estes não estão vinculados a linguagens OO.
    O problema é que muitas vezes as bancas usam padrões de projeto e padrões GoF como se fossem sinônimos. Então há que se tomar cuidado e tentar entender qual a questão está cobrando.
  • Pegadinha desde de 2009! Segunda as aulas do Estratégia Concursos, Padrões GOF somente podem ser aplicados a projetos orientado a objetos.

    Mas no Padrões de Projetos (sem especificar quais) podem ser usados com qualquer paradigma.


ID
150925
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

"Classes devem estar abertas para extensão e fechadas para modificação" é um princípio de projeto de modelos orientados a objetos. Tal princípio pode ser aplicado através do padrão de projeto

Alternativas
Comentários
  • Decorator: Padrão estrutural utilizado para agregar dinamicamente responsabilidades a um objeto.
    Provê uma alternativa ao uso de subclasses quando é necessário estender a funcionalidade.
  • Principio do aberto-fechado:
    - classes devem estar abertas extensões e fechadas para modificação
    - quando os requisitos mudam, o projeto deve permitir estender o comportamento adicionando novo código e não alterando o comportamento de código existente.

    Fonte: http://www.slideshare.net/evandroagnes/fundamentos-e-princpios-do-projeto-orientado-a-objetos
  • tô bonita na minha foto nova?
  • Kkkkkkk liendaaaaa
  • Fonte muito rebuscada para definir a questão... Envolve os 5 princípios SOLID referenciando o GoF (Gang of Four)

     

    S - Single-responsiblity principle

    O - Open-closed principle

    L - Liskov substitution principle

    I - Interface segregation principle

    D - Dependency Inversion Principle

     

    Single Responsibility principle

    This design principle (S in SOLID) states that a class should have only one reason to change.  A class should have only one responsibility and there should be one class for one responsibility. Composite design pattern which is a GOF design pattern uses Single Responsibility design principle.

     

    Open Closed principle

    The Open Closed design principle (the O in SOLID) states that a class should be open for extension but closed for modification. This principle restricts addition of new behavior in existing class hierarchy but allows extending the hierarchy by addition of subclasses. The Decorator and Strategy GOF design patterns follow Open Closed design principle. Decorator allows extension of behavior during runtime whereas Strategy allows implementation of behavior during compile time.

     

    Dependency Inversion principle/Dependency Injection/The Hollywood principle

    Dependency Inversion principle states that instead of instantiating referenced classes within a class, they should be instantiated outside the class definition and passed as references in the class. Dependency Inversion (D in SOLID) injects the reference of the class instance through setter methods of interface or abstract class type. The Factory Method, Template Method, Observer and Chain of Responsibility GOF design patterns follow Dependency Inversion principle.

     

    Para os outros princípios, não econtrei referencias ao GoF

    Fonte: https://madhuraoakblog.wordpress.com/2017/03/01/design-patterns-revisiting-gang-of-four/

  • a-

    Anexa responsabilidades adicionais ao objeto dinamicamente; estendendo funcionalidades, além de capturar o relacionamento classe/objeto. exemplo: uma árvore com sintaxe abstrata e ações semânticas, um estado finito autômato com novas transações, ou uma rede de objetos persistentes com tags.


ID
153139
Banca
CESPE / CEBRASPE
Órgão
TJ-DFT
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Considerando a análise e a programação orientadas a objetos,
bem como as linguagens de programação que seguem esse
paradigma, julgue os itens subseqüentes.

O padrão de projeto orientado a objetos denominado singleton exprime o fenômeno recorrente na análise que é a existência de muitas aplicações nas quais há um objeto que é a única instância de sua classe.

Alternativas
Comentários

ID
157888
Banca
CESGRANRIO
Órgão
TJ-RO
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Muitos frameworks utilizam um padrão de projeto (design pattern) que se baseia no princípio de projeto "Não nos chame, nós iremos chamar você" (O Princípio de Hollywood: "Don't call us, we'll call you."). Uma classe da aplicação herda de uma classe do framework que possui métodos abstratos, os quais são chamados em outros métodos concretos. A classe da aplicação sobrepõe os métodos abstratos da classe do framework com métodos concretos, permitindo que os métodos concretos da classe do framework sejam chamados. O padrão de projeto (design pattern) em questão chama-se

Alternativas
Comentários
  •  Template Method auxilia na definição de algorítmos com partes dos mesmos definidos por métodos abstratos. As subclasses devem se responsabilizar pelas partes abstratas desse algorítmo, que poderam ser implementadas de muitas formas.

  • Essa descrição que fizeram parece mais o Template Method...
  • Trata-se, realmente, do padrão comportamental chamado Template Method. Esse padrão permite "Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos serem preenchidos pelas subclasses." Que é exatamente o que faz os métodos concretos da subclasses colocadas na questão.
    Bons estudos!


ID
158983
Banca
CESPE / CEBRASPE
Órgão
STJ
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue os itens de 68 a 72, relativos aos princípios da engenharia de
software.

Os padrões de projeto podem ser usados no projeto orientado a objetos para apoiar o reúso de software. Esses padrões freqüentemente empregam a herança e o polimorfismo para prover generalidade. Abstract factory, strategy e template method são padrões de projeto que podem ser empregados nos frameworks orientados a objetos para facilitar a adaptação dos frameworks.

Alternativas
Comentários
  •  Abstract Factory permite a criação de familias de objetos relacionados ou dependentes, através de uma unica interface e sem que a classe concreta seja especificada.  

    Strategy fornece interfaces genéricas o suficiente para suportar uma variedades de algoritmos. Facilita a escola ou troca de algoritmos criados com uma mesma função

    Template method auxilia na definição de um algoritmo com partes do mesmo definidos por métodos abstratos. As subclasses se responsabilizam por estas partes abstradas. 

    Totas utilizam herança e polimorfismo

     


ID
163636
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Um dos participantes da equipe de desenvolvimento de um framework deve implementar uma operação em uma das classes desse framework. Seja X o nome dessa classe. Essa operação implementa um algoritmo em particular. Entretanto, há passos desse algoritmo que devem ser implementados pelos usuários do framework através da definição de uma subclasse de X. Sendo assim, qual o padrão de projeto do catálogo GoF (Gang of Four) a ser usado pelo desenvolvedor do framework na implementação da referida operação, dentre os listados a seguir?

Alternativas
Comentários

ID
163639
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Em um sistema de software para controlar pedidos para entrega em domicílio, deve haver uma funcionalidade que permita que o atendente solicite a repetição de um pedido anteriormente feito por um cliente. O gerente do restaurante informou que essa funcionalidade aumentaria a agilidade no atendimento aos clientes, visto que muitos deles tendem a fazer pedidos similares aos que já fizeram anteriormente. Ao usar essa funcionalidade, o atendente do restaurante seleciona um pedido cuja composição corresponde a produtos normalmente requisitados pelos clientes e solicita ao sistema a construção de um novo pedido igual ao selecionado. Esse novo pedido pode, então, ser alterado pelo atendente se o cliente solicitar a adição de novos produtos do cardápio, por exemplo. Portanto, a parte principal dessa funcionalidade corresponde a criar uma cópia de um pedido a partir de pedido preexistente. Na implementação dessa funcionalidade, seu desenvolvedor deve utilizar qual padrão de projeto do catálogo GoF (Gang of Four), dentre os listados abaixo?

Alternativas
Comentários
  • Prototype: Especifica os tipos de objetos a serem criados usando uma instância prototípica e criar novos objetos copiando este protótipo.

  •  Prototype é "Especificar os tipos de objetos a serem criados usando uma instância como protótipo e criar novos objetos ao copiar este protótipo." segundo o[GoF]

  • Command - Encapsular uma solicitação como um objeto, desta forma permitindo que clientes parametrizem diferentes solicitações, enfileirem ou façam o registro (log) de solicitações e suportem operações que podem ser desfeitas.

    Abstract Factory é um padrão de projeto de software (também conhecido como design pattern em inglês). Este padrão permite a criação de famílias de objetos relacionados ou dependentes, através de uma única interface e sem que a classe concreta seja especificada.

    Factory Method, na ciência da computação, é um padrão de projeto de software (design pattern, em inglês) que fornece uma interface para criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas. O factory method permite adiar a instanciação para as subclasses.

    Prototype, na ciência da computação, é um padrão de projeto de software (design pattern, em inglês) que permite a criação de objetos a partir de um modelo original, ou protótipo.

    Builder é um padrão de projeto de software que permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.

  • Vamos imaginar que uma classe Pedido possui várias variáveis. Algumas delas podem ser: macarronada; molho; arroz; feijão; salada...
    Cada variável possui os seus respectivos métodos get e set. Quando eu tenho um prato padrão, por exemplo, arroz, feijão e macarronada sem molho, eu possi setar os seus métodos set como true, true, true e false, respectivamente. Claramente, qualquer outro atributos recebereria false.

    Se eu quero agora um prato de arroz, feijão e macarrão com molho, a partir de um prato já feito, eu posso fazer uma cópia dessa objeto e modificar os seus atributos.

    Por exemplo: Obj obj = objetoAserClonado.clone();
    obj possui agora uma cópia do prato arroz, feijão e macarrão sem molho. Para adicionar o molho, eu faço:

    obj.setMolho(true);

    e pronto!

    Por isso, o padrão Protptype é o melhor nesse caso.

    O padrão Builder iria funcionar se eu não quisesse adicionar mais nada. O padrão bridge varia a apresentação a partir dos mesmos objetos. Um exemplo seria um prato de arroz, feijão por cima do arroz (vem depois) e por último, o macarrão se molho. Se eu quisesse apenas mudar a aparência, sem mudar os objetos, como um prato de feijão, arroz por cima e depois macarrão, esse padrão seria perfeito.

    Os demais padrões listados não tem nada a ver.
  • e-

    prototype especifica objetos usando instancia de prototipo, criando novos objetos pela copia do prototipo, alterando assim o prototipo


ID
164023
Banca
FCC
Órgão
TJ-PI
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Acerca desses padrões, avalie:

I. Em termos de padrões de criação de projetos, algumas classes, tais como um spooler de impressão ou um sistema de arquivos, devem ser instanciadas uma única vez e prover um ponto de acesso global a esta instância.

II. Pertencente ao grupo de padrões estruturais, é utilizado para permitir que dois objetos se comuniquem mesmo que tenham interfaces incompatíveis.

III. Encapsula uma requisição como um objeto, permitindo que os clientes parametrizem diferentes requisições e filas, ou façam o registro de log de requisições e dêem suporte a operações que podem ser desfeitas.

IV. Atribuir a responsabilidade do tratamento de um evento do sistema a uma classe que representa o próprio sistema ou à classe que representa um caso de uso.

As proposições correspondem, respectivamente, aos padrões

Alternativas
Comentários
  • Para acertar essa questão, bastava saber que o Adapter é o Padrão de Projeto pertencente ao grupo de Padrões Estruturais Gof, e "é utilizado para permitir que dois objetos se comuniquem mesmo que tenham interfaces incompatíveis".

    Mas vamos aproveitar e estudar Erich Gamma et al, que diz no seu livro “Padrões de Projeto – Soluções Reutilizáveis de Software Orientado a Objetos”:

    1) Singleton (Padrão de Criação): Garante que uma classe tenha somente uma instância e fornecer um ponto global de acesso para ela.
    2) Adapter (Padrão Estrutural): Converte a interface de uma classe em outra interface esperada pelos clientes. O Adapter permite que certas classes trabalhem em conjunto, pois de outra forma seria impossível por causa de suas interfaces incompatíveis.
    3) Command (Padrão Comportamental): Encapsula uma solicitação como um objeto, desta forma permitindo que você parametrize clientes com diferentes solicitações, enfileire ou registre (log) solicitações e suporte operações que podem ser desfeitas.
    4) Iterator (Padrão Comportamental): Fornece uma maneira de acessar sequencialmente os elementos de um objeto agregado sem expor sua representação subjacente.
    5) Façade (Padrão Estrutural): Fornece uma interface unificada para um conjunto de interfaces em um subsistema. O Façade define uma interface de nível mais alto que torna o subsistema mais fácil de usar.
    6) Prototype (Padrão de Criação): Especifica os tipos de objetos a serem criados usando uma instância prototípica e criar novos objetos copiando este protótipo.

    Já os padrões Controller e Expert, fazem parte do grupo de Padrões GRASP.
     

  • I. Em termos de padrões de criação de projetos, algumas classes, tais como um spooler de impressão ou um sistema de arquivos, devem ser instanciadas uma única vez e prover um ponto de acesso global a esta instância. SINGLETON

    II. Pertencente ao grupo de padrões estruturais, é utilizado para permitir que dois objetos se comuniquem mesmo que tenham interfaces incompatíveis. ADAPTER

    III. Encapsula uma requisição como um objeto, permitindo que os clientes parametrizem diferentes requisições e filas, ou façam o registro de log de requisições e dêem suporte a operações que podem ser desfeitas. COMMAND

    IV. Atribuir a responsabilidade do tratamento de um evento do sistema a uma classe que representa o próprio sistema ou à classe que representa um caso de uso. CONTROLLER

    Resposta: "A"


  • Pessoal, Controller é o mesmo que Decorator?
  • Bruno,

    Dá uma olhada nesse material http://www.dsc.ufcg.edu.br/~jacques/cursos/apoo/html/proj1/proj5.htm. Tem a descrição dos padrões GRASP com exemplos.

    Abraço e bons estudos.
  • O examinador mesclou padrões Gang of Four com um GRASP (Controller)


ID
173815
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Em relação a padrões de projeto de software, assinale a afirmativa incorreta.

Alternativas
Comentários
  • O padrão erradamente descrito é o Singleton. Abaixo o conceito dele:

    Assegura que a classe só tenha uma instância, e provê um ponto global de acesso a ela. [GoF, p127]

    Obs: O padrão referido na letra "d" é o Composite.

     

  • Na letra “d” a definição é do padrão Composite. O Singleton é padrão de criação de objetos com o objetivo de garantir que haja uma única instância de um objeto e com ponto de acesso global.


ID
173818
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Assinale a alternativa que apresente apenas padrões de projeto utilizados na camada de apresentação no desenvolvimento de aplicações J2EE.

Alternativas
Comentários

ID
177934
Banca
FCC
Órgão
TRT - 9ª REGIÃO (PR)
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Sobre design pattern considere:

I. No framework pode incluir código de programação e conter vários design patterns.

II. No design pattern pode incluir código de programação e conter vários frameworks.

III. Os design patterns são bastante abstratos e os frameworks menos abstratos.

Está correto o que consta em

Alternativas
Comentários
  • Diferenças entre Design Patterns e Frameworks:

    Design patterns são mais abstratos do que frameworks

    Um framework inclui código, um design pattern não (só um exemplo do uso de um pattern)

    Devido à presença de código, um framework pode ser estudado a nível de código, executado, e reusado diretamente

    Design patterns são elementos arquiteturais menores do que frameworks

    Um framework típico contém vários design patterns mas o contrário nunca ocorre

    Exemplo: Design patterns são frequentemente usados para documentar frameworks

    Design patterns são menos especializados do que frameworks

    Frameworks sempre têm um domínio de aplicação particular enquanto design patterns não ditam uma arquitetura de aplicação particular

  • A questão não está incorreta. Porém, é necessário não cair no erro de achar que um framework obrigatoriamente deve conter código.

    Frameworks de Software contém código! mas ele não deixa exlícito qual Framework ele se refere.

    Existem Frameworks conceituais como o ITIL que não tem código fonte, mas soluções para problemas comuns na área de serviços de TI.

    Análisando sobre essa ótica:

    I. No framework pode incluir código de programação e conter vários design patterns - CORRETO, se ele for um Framework de software.
    II. No design pattern pode incluir código de programação e conter vários frameworks - INCORRETO, padrões de projeto são soluções conceituais.
    III. Os design patterns são bastante abstratos e os frameworks menos abstratos.  CORRETO. Mesmo no caso do framework ITIL, que lida exatamenta com os problemas, dando sugestões de sucesso já implementadas.
  • Caro McLovin , no enunciado da questão ele informa: design pattern, fechando o contexto da questão em frameworks e padrões de projeto, não em infra-estrutura de ti. Sucesso.
  • hahaha! Esses memes....never gets old!

ID
215710
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Um processo de desenvolvimento de software contém a descrição
de uma abordagem para a construção de sofware. A UML (unified
modeling language) é uma linguagem visual para especificar,
documentar e construir os artefatos de sistemas orientados a
objetos. Quanto ao ambiente de desenvolvimento de sistemas
orientados a objetos, julgue o item a seguir.

GRASP (general responsibility assignment software patterns) consiste em um conjunto de sete padrões básicos para atribuir responsabilidades em projeto orientado a objetos: information expert, creator, controller, low coupling, high cohesion, polymorphism e pure fabrication.

Alternativas
Comentários
  • São 9 padrões e não 7.


    1 Creator
    2 Information Expert
    3 Controller
    4 Low Coupling
    5 High Cohesion
    6 Polymorphism
    7 Pure Fabrication
    8 Indirection
    9 Protected Variations
     

  • Bom, os padrões básicos do GRASP são cinco, a questão diz que são sete, por isso, está errada.

    Os padrões avançados são quatro. Ao todo (básicos + avançados) são 9 padrões.

    ***Padrões básicos:
    Information Expert
    Creator
    High Cohesion
    Low Coupling
    Controller


    ***Padrões avançados:
    Polymorphism
    Pure Fabrication
    Indirection
    Protected Variations

  • Na verdade são nove padrões divididos em duas categorias:

    A - Padrões Básicos

    1 - Information Expert

    2 - Creator

    3 - High Cohesion

    4 - Low Coupling

    5 - Controller

     

    B - Padrões Avançados

    1 - Pollymorphism

    2 - Pure Fabrication

    3 - Indirection

    4 - Protected Variations

     

     


ID
240649
Banca
FCC
Órgão
TRT - 22ª Região (PI)
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Creational Pattern Java que tem por objetivo separar a construção de um objeto complexo da sua representação, de tal forma que diversas representações podem ser criadas em razão da necessidade do programa. Trata-se de

Alternativas
Comentários
  • A pattern Builder tem por finalidade isolar a construção de um objeto complexo da sua representação, levando em consideração que o mesmo processo de construção possa criar diferentes representações. Sendo assim, o algoritmo para a construção de um objeto deve ser independente das partes que realmente compõem o objeto e também de como eles são montados.

    Utilizando esta pattern, o que temos a fazer é criar uma classe, qual especifica uma interface abstrata para a criação das partes de um objeto-produto. Esta classe abstrata deverá ser herdada pelos objetos concretos que implementaram os métodos de construção para aquele objeto. Esta classe concreta nos fornecerá uma forma de recuperarmos o produto, retornando-o de alguma forma para o cliente que o solicitou.

    Vejamos abaixo os participantes envolvidos nesta pattern:

    • Director: Constrói um determinado objeto, utilizando a interface de Builder (classe abstrata).
    • Builder: Define uma interface abstrata para a criação das partes de um objeto-produto.
    • ConcreteBuilder: Implementa os métodos de construção da classe abstrata e também mantém a representação do objeto que cria. Fornece ao cliente um método para a recuperação do produto.
    • Product: Representa o objeto complexo em construção, incluindo as interfacces para a montagem das partes no resultado final.

     

     

    ALTERNATIVA B

  • (Structural Pattern) Flyweight é um design pattern apropriado quando vários objetos devem ser manipulados, e esses não suportam dados adicionais. No flyweight não existem ponteiros para os métodos do dado, pois isto consome muita memória. Em contrapartida são chamadas sub-rotinas diretamente para acessar o dado.
    (Creational Pattern) Builder é um design pattern que permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.
    (Creational Pattern) Prototype é um design pattern que permite a criação de objetos a partir de um modelo original ou protótipo.
    (Creational Pattern) Singleton é um design pattern que garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.
    (Structural Pattern) Bridge é um design pattern utilizado quando é desejável que uma interface (abstração) possa variar independentemente das suas implementações.

ID
241681
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

A respeito das características do Ajax, julgue os itens que se
seguem.

Os padrões Facade e Adapter são úteis para fornecer uma camada de isolamento em relação às incompatibilidades entre múltiplos navegadores.

Alternativas
Comentários
  • Pegadinha do malandro, a questão fala de característica de ajax pergunta de patterns que criam camada de isolamento para sistemas e questiona se os padrões são úteis para resolver problema de incompatibilidade entre múltiplos NAVEGADORES
    Navegadores são browsers e não sinônimo de usuário.
    Cespe desonesto.
  • não entendi essa. Alguém pode me explicar?
  • Vamos por partes...
    Através da utilização do Padrão Facade, é possível centralizar em um único ponto de acesso requisições de diversos clientes, delegando essas requisições aos objetos "endereçados".
    Ex: http://paginas.fe.up.pt/~aaguiar/as/gof/hires/Pictures/facad057.gif
    Com isso é possível um melhor controle entre as interações de diferentes aplicações, ou camadas por exemplo, ja que vc sempre sabe o ponto de comunicação entre elas.
    Já o padrão Adapter, permite a comunicação entre Objetos a princípio incompatíveis, criando um intermediador, que conheça as "interfaces" de ambos. O exemplo clássico é um adaptador de tomadas.
    O que a questão sugere é se: em uma situação em que uma aplicação web, acessada por diferentes navegadores, teria que tratar as incompatibilidades e especificidades de cada navegador, teríamos algum benefício em utilizar os padrões Adapter e Facade.
    Pra mim o benefício sera claro, ja que teríamos um único ponto de acesso (garantido pelo padrão Facade) onde todas as requisições seriam tratadas (adaptadas pelo padrão Adapter), facilitando assim o controle.

               Firefox        I.E.     Opera
                        \         |          /                   
                          \       |        /      
                            \     |      /         
    ------------------| Facade  |----------------
    |                      | Adapter  |                        |
    |                                                              |
    |                                                              |
    |                       Aplicação                          | 
    |__________________________________ |

    @ricardoasimoes, entendeu ou enrolei demais??  :)
  • Talvez eu esteja errado, mas o que os padrões de projeto de software tem haver com os problemas de compatibilidade entre navegadores causados pelo HTML/CSS?
  • Leandro,

    Não tem mágica no desenvolvimento de Sw... Quem trabalha no Google, na Oracle, na Microsoft ou aonde quer que seja, enfrenta os mesmos problemas que nós (reles mortais). Eles também tem que se preocupar com questões como: Análise, design, persistência, utilização de padroes para melhorar o entendimento e manutenção do código etc...

    Navegadores são softwares como qualquer outro... também tem padrões de projeto sendo utilizados em seu desenvolvimento e manutenção.

    No caso da questão, foi apenas um exemplo expondo uma determinada necessidade de design e foi perguntado se os padrões de projeto citados poderiam ajudar nesse caso. 

    Não vejo problema algum.
  • (...) complementando o comentário do amigo Rodrigo:

    Padrões de Projeto é uma solução GENERICA para problemas ESPECIFICOS

    no caso em questão, o problema especifico é a incompatibildiade dos navegadores (softwares) e a solução é a utilização dos padrões já conhecido Adapter e Facade. Perceba, que você poderia propor outra solução para este problema, o uso dos padrões é apenas sugestivo, pois este tipo de problema é bem conhecido na engenharia de software e atende bem às necessidades.

    []s
  • Todo mundo falou, mas não explicou o porque a questão está certa ou errada!

  • Façade -> Disponibiliza uma única interface para vários objetos, tornando o relacionamento entre eles mais simples. Define uma interface Superior.

    Adapter -> Como o própio nome diz, esse padrão permite que objetos de interfaces distintas se comuniquem, ou seja, faz-se ou cria-se uma interface para a adaptação entre eles.

  • Falando como um desenvolvedor como que o Façade e o Adapter me ajudaria no desenvolvimento front-end, considerando a "incompatilibidade entre multiplos navegadores" (IE 6,7,8,9,10 e 11/EDGE, chrome, firefox, etc), considerando que a família MSIE não da suporte ao que é padrão na internet? Não faz o menor sentido essa pergunta para mim


ID
255880
Banca
FCC
Órgão
TRT - 24ª REGIÃO (MS)
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Considere:

I. Fornecer uma interface para criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas. Possibilitar o adiamento da instanciação para as subclasses.

II. Garantir a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.

III. Possibilitar o armazenamento do estado interno de um objeto em um determinado momento, para que seja possível retorná-lo a este estado, caso necessário.

I, II e III são, respectivamente, objetivos dos design patterns intitulados:

Alternativas
Comentários
  • Factory Method e Singleton são padrões de projeto criacionais, ao lado de Prototype, Abstract Factory e Builder.

    Memento é um padrão de projeto comportamental ao lado de:

    - chain of responsability
    - command
    - visitor
    - observer
    - iterator
    - strategy
    - template method
    - interpreter
    - state
    - mediator
  • Eu não entendo porque a FCC mistura tanto as coisas...

    A descrição que a questão dá para o "Factory Method" é melhor atribuida ao design pattern "Abstract Factory" (apesar de estar mistrurada).

    Segundo o livro "Design Patterns: Elements of Reusable Object-Oriented Software" de Erich Gamma e John Vlissides, as descrições para esses dois design patterns são:

    Abstract Factory: Fornecer uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.

    Factory Method: Definir uma interface para criar um objeto, mas deixa as subclasses decidirem que classe instanciar. "Factory Method" permite a uma classe adiar a instanciação para subclasses.

    Apesar de as descrições para os design patterns "Singleton"  e "Memento" estarem indiscutivelmente certas, eu não concordo com a descrição para "Factory Method"...
  • a) Interpreter, Iterator e Memento.
    Interpreter - è um padrão comportamental  usado em soluções elegantes na interpretação de pequenas gramáticas.
    Iterator - é um padrão comportamental  que permite a interação e um modo de acesso a elementos de agregados de objetos sequencialmente, sem a exposição de estruturas internas.
    Memento - É um padrão comportamental que permite armazenar o estado interno dos objetos em um determinado momento para que seja possível retornar a esses estados, caso necessário.

    b) Command, Singleton e Iterator.
    Command - É um padrão comportamental que encapsula uma solicitação, como um objeto, permitindo que clientes parametrizem diferentes solicitações, enfileirem ou façam o registro (log) de solicitações e suportem operações que possam ser desfeitas.
    Singleton - é um padrão de criação que garante a existencia de apenas uma instância de uma classe, mantendo um ponto global de acesso ao objeto.

    d) Iterator, Factory Method e Flyweight.
    Factory Method - é um padrão de criação que fornece uma interface para a criação de famílias de objetos relacionados ou dependentes, sem especificr as suas classes concretas, permitindo adiar a instanciação para as subclasses.
    Flyweight - é um padrão estrututral apropriado quando vários objetos devem ser manipulados e esses não suportam dados adicionais.
  • forrest177,

    essa definição misturada de Abstract Factory com Factory Method
    é a definição que está no wikipedia http://pt.wikipedia.org/wiki/Factory_Method

    e como wikipedia é a principal fonte da FCC (infelizmente, o que é um absurdo), está ai sendo utilizada essa definição.

    pelo menos, nessa questão na tinha nenhuma alternativa com Abstract Factory no item I



  • Forest e Dirceu,
    A wikipedia já foi corrigida. srrs
    Acho que deveria ser feita uma reportagem sobre a mediocridade das questões da FCC e sobre sua fonte de consultas.
    Se não surtir efeito, pelo menos que os envergonhem perante a imprensa.
  • mais uma vez, repito: só por que a questão está igual da wiki, não significa que a banca tirou de lá. Ora, de onde vocês acham que o pessoal que publica na  wiki tiram o conteúdo? Muito provalvemente  (assim espero) de fontes seguras, como livros.
    ps: não estou defendendo a FCC, acho uma banca tosca, mas por motivos diferentes.
  • Questão ridícula mesmo. Erro grotesco.

  • Não há alternativas corretas. A questão deveria ser anulada. A questão, no item I, mistura características de Abstract Factory e Factory Method. A II é Singleton e III é Memento.


ID
257548
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue os itens que se seguem a respeito dos padrões de desenho e outras técnicas para reúso de software.

Os padrões: Controller; Polimorfismo; e Information Expert, são considerados do tipo GRASP porque cada um embute uma forma de atribuição de responsabilidades a objetos. No caso do Controller, a responsabilidade é concernente ao tratamento de eventos. No caso do Polimorfismo, a responsabilidade é concernente à variação de comportamento, conforme o tipo do objeto. No caso do Information Expert, a responsabilidade concerne à disponibilidade de informações que permitem o desempenho de uma responsabilidade.

Alternativas
Comentários
  • GRASP – General Responsability Assignment Software Patterns. Os padrões GRASP descrevem os princípios fundamentais para a atribuição
    de responsabilidades em projetos OO.
    Os padrões GRASP são: Controller, Creator, Expert, Law of Demeter, Low Coupling/High Cohesion, Polymorphism e Pure Fabrication.
  • "No caso do Information Expert, a responsabilidade concerne à disponibilidade de informações que permitem o desempenho de uma responsabilidade".

    Não me parece certa essa descrição do Expert. Pelo menos não clara.
    Que eu sei, o objetivo do Expert é:

    Assign a responsibility to the information expert; the class that has the information necessary to fulfill the responsibility.
     

    Ou seja, dar a responsabilidade a quem tem informações suficientes para cumpri-la.
    Não se de onde a banca tirou essa informação, mas, no material que tenho sobre os Padrões de Projeto GRASP, eu não achei!

  • Tudo correto.
    Controller atribui a responsabilidade do tratamento de um evento do sistema a uma classe.
    Polimorfismo atribui a responsabilidade de alternativas baseada no tipo de uma classe.
    Expert  atribui a responsabilidade ao especialista da informação – a classe que tem a informação necessária para satisfazer a
    responsabilidade.
  • Polimorfismo é um padrão?
  • Se tu pesquisar sobre o GRASP irá verificar que sim, que ele faz parte dos quatro padrões avançados.
  • Os padrões: Controller; Polimorfismo; e Information Expert, são considerados do tipo GRASP porque cada um embute uma forma de atribuição de responsabilidades a objetos. Corrreto, GRASP trata justamente sobre responsabilidades de classes e objetos.

    No caso do Controller, a responsabilidade é concernente ao tratamento de eventos. Correto, porque determina que deve haver uma classe ou camada responsável por receber e tratar eventos da camada de interface com o usuário, delegando as ações para as camadas inferiores.

    No caso do Polimorfismo, a responsabilidade é concernente à variação de comportamento, conforme o tipo do objeto. Correto.

    No caso do Information Expert, a responsabilidade concerne à disponibilidade de informações que permitem o desempenho de uma responsabilidade. Correto, é escolhida a classe que possuir mais informações a respeito da funcionalidade em questão para que seja a responsável por provê-la.

  • cespe ama o information expert

     

     

    2013

    O padrão Indirection é utilizado para atribuir responsabilidades à classe que tiver a informação necessária para satisfazer a responsabilidade

    Errada


     

    2013

    O padrão Pure Fabrication objetiva designar a responsabilidade unívoca pela criação de uma nova instância de uma classe.

    Errada


     

    2013

    Nos casos em que a solução oferecida pelo padrão Expert violar a alta coesão e o baixo acoplamento, o padrão adequado a ser aplicado será o Creator, que atribui um conjunto altamente coesivo de responsabilidades a uma classe artificial que não representa um conceito do domínio do problema.

    Errrada -- high cohesion


ID
260254
Banca
FCC
Órgão
TRT - 4ª REGIÃO (RS)
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

O catálogo de padrões de projeto (design patterns) do GoF contém

Alternativas
Comentários
  • Os padrões GoF estão organizados em três famílias de padrões:

    1. Criação
    Definem os padrões para criação de objetos

    2. Estrutural
    Definem os padrões padrões das associações entre as classes

    3. Comportamentais
    Definem os padrões para para interações e difisões de responsabilidade entre as classes ou objetos.


  • Mnemônicos

    Criação
    : Uma fábrica abstrata constrói um protótipo único!
    Estruturais: A ponte adaptada é composta de decorações na fachada para o peso mosca se aproxymar!
    Comportamento: IT - CCIMMOS-SV
  • Em 1995, com a publicação do livro Padrões de Design por Gamma, Helm, Johnson e Vlissides, também conhecido como a "Gangue dos quatro" (GoF).

    Padrões Criacionais: factory, builder, singleton e prototype.
    Padrões estruturais: bridge, adapter, composite, decorator, facad, e proxy.
    Padrões comportamentais: mediator, chain of responsibility, command, memento, observer, state e strategy.

    Um padrão tem 4 elementos essenciais:
    Nome do padrão, Problema, Solução e Consequências.
  • São 23 padrões, temos os criacionais (5):

    - Abstract Factory
    - Factory Method
    - Builder
    - Prototype
    - Singleton

    Os estruturais (7):

    - Bridge
    - Decorator
    - Facade
    - Flyweight
    - Adapter
    - Proxy
    - Composite

    E os comportamentais (11):

    - Chain of Responsability
    - Command
    - Visitor
    - Observer
    - Iterator
    - Strategy
    - Interpreter
    - State
    - Memento
    - Mediator
    - Template Method
  • Questão bobinha, não é necessário saber a quantidade, apenas sabendo a classificação já é possível matar a questão. Na verdade sabendo que são divididos em 3 grupos já da pra matar, visto que "structural" faz muito mais sentido que "spectral"

  • Os padrões "GoF" são organizados em 3 famílias :

    • Padrões de criação : relacionados à criação de objetos
    • Padrões estruturais : tratam das associações entre classes e objetos.
    • Padrões comportamentais : tratam das interações e divisões de responsabilidades entre as classes ou objetos.

    Padrões "GoF" organizados nas suas 3 famílias:

    Padrões de criação

    • Abstract Factory
    • Builder
    • Factory Method
    • Prototype
    • Singleton

    Padrões estruturais

    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Façade (ou Facade)
    • Flyweight
    • Proxy

    Padrões comportamentais

    • Chain of Responsibility
    • Command
    • Interpreter
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Template Method
    • Visitor

  • São 23 padrões de projeto e estão divididos quanto ao propósito em três tipos:

    1 - Criacionais. Exemplos: Factory Method, Builder, Abstract Factory, Singleton...

    2 - Estruturais. Exemplos: Bridge, Adapter, Flyweight...

    3 - Comportamentais. Exemplos: Visitor, Memento, Iterator...

  • d-

    creational:

    factory method

    abstract facrtory

    builder

    prototype

    singleton

    _________

    structure:

    adapter

    composite

    bridge

    decorator

    façade

    flyweight

    proxy

    _____________

    Behaviour:

    strategy

    iterator

    template method

    observer

    mediator

    command

    memento

    chain of responsability

    interpreter

    state

    visitor


ID
278152
Banca
CESPE / CEBRASPE
Órgão
TRT - 21ª Região (RN)
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Acerca dos padrões de projeto, julgue o próximo item.

Os padrões de projeto podem ser definidos como soluções já testadas para problemas que ocorrem frequentemente durante o projeto de software.

Alternativas
Comentários
  • Os padrões de projeto de software ou padrões de desenho de software, também muito conhecido pelo termo original em inglês, Design Patterns, descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas consequências.

  • Padrões de Projeto descreve uma solução geral reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos.

    Resposta: "Certo"

    Fonte: http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software

ID
283759
Banca
FUNIVERSA
Órgão
IPHAN
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Considerando os padrões de projetos (design patterns) da engenharia de software que utilizam as melhores práticas em orientação a objetos para atingir os resultados desejados, é correto afirmar que o padrão

Alternativas
Comentários
  • Decorator: Atribui responsabilidades adicionais a um objeto dinamicamente, adiciona responsabilidades a objetos individuais e não a toda classe.

    Composite: Representa um objeto que é construido pela composição de objetos similares a ele. Neste padrão, o objeto composto possui um conjunto de outros objetos que estão na mesma hierarquia de classe a que pertence.

    Memento: Permite armazenar o estado interno de um objeto em um determinado momento para queseja possível retornar a este estado, caso necessário.
  • a) decorator  iterator é utilizado para prover uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna.

    b) (certo) bridge  é utilizado para desacoplar uma abstração de sua implementação para que os dois possam variar independentemente.

    c) composite  Façade é utilizado para oferecer uma interface única para um conjunto de interfaces de um subsistema, definindo uma interface de nível mais elevado que torna o subsistema mais fácil de usar.

    d) memento   Visitor permite definir uma nova operação, sem mudar as classes dos elementos nos quais opera.

    e) aggregator Composite é utilizado para compor objetos em estruturas de árvore, para representar hierarquias.

ID
311875
Banca
FCC
Órgão
TRT - 14ª Região (RO e AC)
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

No contexto dos padrões de projeto:

I. Oferecer uma interface simples para uma coleção de classes.

II. Desacoplar uma abstração de sua implementação para que ambas possam variar independentemente.

Correspondem respectivamente a

Alternativas
Comentários
  • Facade simplifica a interface para um conjunto de classes, como se fosse um controle remoto, com alguns botoes você controla todos os sistemas e subsistemas da TV e é um padrão Estrutural.

    --

    Bridge a abstração da implementação e é um padrão Estrutural;

    --

    Adapter  encapsula um objeto e provê uma interface diferente para ele. Um exemplo disso é no java, a classe MouseListener, as vezes você quer capturar um único tipo de evento, como MouseMove, e tem que declarar todos os métodos da interface MouseListener. Para isso temos o MouseAdapter, você só declara o que você vai usar :)

    Adapter é um padrão de projeto Estrutural.

    --

    Composite  trata de coleções de objetos e objetos de maneira uniforme. Um exemplo é a API Swing do Java, você pode ter componentes que tem componentes ( JFrame, JPanel...) e componentes individuais ( JLabel, JButton), e trata-los com os mesmos métodos.

    Composite é um padrão de projeto Estrutural.


     

  • Façade: Oferecer uma interface única para um conjunto de interfaces de um subsistema.

    Bridge: Desacopla uma abstração de sua implementação de maneira que ambas possam variar independentemente.

    Resposta: "A"

    Fonte: http://www.pg.cefetpr.br/coinf/simone/patterns

  • A MDA é uma visão em como o software pode ser desenvolvido colocando a modelagem no centro do processo de desenvolvimento. A partir de um modelo abstrato do sistema é gerado um modelo mais concreto, através deste processo de refinamento dos modelos podemos gerar o código fonte a ser produzido.

  • Realmente caí na pegadinha, o cara coloca COLEÇÃO lá, mas do lado está CLASSES, coleção de classes, não de objetos, logo FACADE e não COMPOSITE, argh!

  • https://brizeno.wordpress.com/padroes/

  • a-

    façade - interface unificada para interfaces no subsistema, ocultando alguns componentes. altera/repõe subssitemas ocultos com inclsuao de interfaces

    bridge - separa abstração e implementação, para adicionar outras sem afetar as existentes.


ID
316363
Banca
FCC
Órgão
TRE-RN
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Na engenharia de software, os padrões de projetos comportamentais tratam das interações e divisões de responsabilidades entre as classes ou objetos. São exemplos típicos dessa família:

Alternativas
Comentários
  • Padrões de criação: Abstract Factory Builder; Factory Method; Prototype; Singleton;
    Padrões estruturais: Adapter; Bridge; Composite; Decorator; Façade; Flyweight; Proxy
    Padrões comportamentais: Chain of Responsibility; Command; Interpreter; Iterator; Mediator; Memento; Observer; State; Strategy; Template Method; Visitor
  • a) Cammand Command, Factory Method e Prototype.
    Command - Comportamental
    Factory Method - Criação
    Prototype - Criação

    b) Builder, Prototype e Singleton.
    Todos de criação     
     
    d) Adapter, Bridge e Façade.
    Todos estruturais

    e) Abstract Factory, Builder e Composite.
    Abstract Factory e Builder - De criação

    Composite - Estrutural.


  • Para conseguir acerta esse tipo de questão, eu fiz um post bem interessante:

    http://rogerioaraujo.wordpress.com/2010/02/25/mnemonicos-padroes-de-projetos-gof/

    []s

ID
319648
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Com relação aos design patterns, anti-patterns e projetos orientados a objeto, assinale a opção correta.

Alternativas
Comentários
  • Letra D

    Um anti-pattern ou anti-padrão, como o próprio significado do termo sugere , significa algo contrário ao padrão. Seria isso mesmo ???

    Em engenharia de software, um anti-padrão é uma solução semelhante a um padrão de projeto (Design Pattern) só que sua aplicação produz conseqüências negativas.

    Assim um anti-padrão é uma solução pois resolve um problema só que de uma forma ineficiente.

    Quem nunca viu ou ouviu falar na famosa 'gambiarra' ? Pois ela é o exemplo prático de um anti-padrão: resolve o problema mas é ineficiente e com certeza vai causar problemas a curto, médio e a longo prazo.


ID
321088
Banca
CESPE / CEBRASPE
Órgão
Correios
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

A respeito de desenvolvimento de projetos de sistemas, julgue os itens subsequentes.

O padrão singleton permite que uma classe Java tenha apenas uma instância e fornece múltiplos pontos de acesso à classe.

Alternativas
Comentários
  • o erro está em dizer que a classe possuí multiplos pontos de acesso.
  • Singleton  é um padrão de projeto de software. Este padrão garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.

  • Informação Extra:

    Singleton é classificado quanto ao escopo como de objeto e quanto ao propósito como de criação.

    Padrões de Projeto de Criação:
    1)Abstract Factory(escopo de objeto) = provê uma interface para criar uma família de objetos, mas não especifica as classes concretas.
    2)Factory Method(escopo de classe) = define uma interface para criar um objeto, mas as subclasses decidem que classe instanciar;
    3)Builder(escopo de objeto) = o mesmo processo de criação é utilizado para criar diferentes representações;
    4)Prototype(escopo de objeto) = usa uma instância como protótipo e cria novos objetos a partir dele.
    5)Singleton(escopo de objeto) = garantir que uma classe só tenha uma instância e um ponto global de acesso a ela.

ID
321091
Banca
CESPE / CEBRASPE
Órgão
Correios
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

A respeito de desenvolvimento de projetos de sistemas, julgue os itens subsequentes.

No padrão de desenvolvimento modelo-visualização- controlador (MVC), o controlador é o elemento responsável pela interpretação dos dados de entrada e pela manipulação do modelo, de acordo com esses dados

Alternativas
Comentários
  • Certo. O controlador (controller) recebe a entrada de dados e inicia a resposta ao utilizador ao invocar objetos do modelo, e por fim uma visão baseada na entrada. Ele também é responsável pela validação e filtragem da entrada de dados.

    Bons Estudos
    Marcelo
  • MVC x Modelo

    - validação de entrada em formulários, escrita, validação e leitura dos dados,
    - regras de negócios, lógica e funções, armazenamento de dados,
    - métodos e classes que acessam o banco de dados,
    - definição de propriedades e atributos de um programa.
    - JavaBeans, Getters e Setters
    - Classes utilizando Business Object   
    - Encapsula estado de aplicação ou dos objetos do conteúdo
    - Notifica views de mudança
    - Classes utilizando Data Access Object

     

    MVC x Visão
     
    - Páginas JSP, JSTL, HTML, FLASH, Imagens, JavaScript e CSS
    - Interação com usuário,  
    - Solicita atualização aos modelos, Renderiza informação dos modelos,
    - Envia ações de usuários ao controller,
    - Notifica os componentes de apresentação das mudanças efetuadas nos dados,
    - expõe a funcionalidade da aplicação

     

     

    MVC x Controle

    - Servlets, Filters
    - Tratamento de requisições,
    - Seleciona views para exibição,
    - Mapeia ações de usuário para atualizar modelo,
    - Faz a comunicação entre as interfaces e as regras de negócio

     

     


ID
321325
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Acerca dos padrões de criação e de padrões estruturais, assinale a opção correta.

Alternativas
Comentários
  • O uso do padrão singleton apresenta como consequências uma redução do uso de variáveis globais e uma melhor organização do espaço de nomes de um software orientado a objetos.


ID
321328
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Assinale a opção correta com referência aos padrões comportamentais e aos padrões GRASP.

Alternativas

ID
325330
Banca
FUNCAB
Órgão
SEJUS-RO
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

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 é:

Alternativas
Comentários
  • a) bridge.
    Segundo Trott e Shalloway, o princípio de projetar a partir de um contexto, é um conceito para criar a visão global (abstração) antes de se projetar os detalhes que aparecem nos componentes (implementação)

    Bridge
    Desacopla uma abstração de sua implementação, de modo que as duas possam variar independentemente. Esse padrão permite colocar as abstrações e suas implementações em diferentes hierarquias de classes, permitindo assim que possam ter alterações independentes. Esse padrão está relacionado ao princípio grasp low coupling.

    abstract factory
    Fornece uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas.

    Uma forma de diferençar esses dois padrões é o nível em que os dois se encontram.
    Bridge se encontra em um nível mais conceitual, mais abstrato, a relação entre abstração e implementação é muito fraca enquanto no abstract factory há uma relação mais forte entre classes.
  • Sinceramente, definição muito estranha de Bridge.


    "A estrada é longa, mas a vitória virá..."
  • "é um conceito para criar a visão global antes de se projetar os detalhes que aparecem nos componentes."

    BRIDGE -> possibilita DESVINCULAR uma interface de sua implementação.

    Ou seja, visão global (interface) pode ser projetada antes de seus detalhes (Implementação).


ID
328105
Banca
FUNCAB
Órgão
IDAF-ES
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

O procedimento de notificação de eventos utilizado em componentes Java Swing, tal como o JButton, é um exemplo de aplicação de qual dos Padrões de Projeto a seguir?

Alternativas
Comentários
  • Letra B

    O 'observer' é um design pattern que permite notificar outros objetos quando ocorre uma mudança de estado.

    Tbém chamado de 'publish-subscribe'.

    Classificação: comportamental.

    * Análogo ao 'Listener' do Java.

    https://pt.stackoverflow.com/questions/125624/listeners-s%C3%A3o-uma-implementa%C3%A7%C3%A3o-de-observer

  • Exemplo prático: Marque a letra B, aperte em responder. Ocorrerá a notificação através de eventos que irá:

    1) Verificar se foi certo ou errado sua opção

    2) Se certo ou errado, atualizará seu gráfico pessoal de resultados

    3) Atualizará o gráfico de estatísticas de barras e o circular.

    4) Irá atualizar no seu perfil a questão como resolvida e irá sair do seu filtro atual.

    E outras mais...


ID
339430
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Em relação aos padrões de projeto, é a categoria de padrões que atribui responsabilidade a objetos:

Alternativas
Comentários
  • Padrões Comportamentais:Tratam das interações e divisões de responsabilidades entre as classes ou objetos.

    Padrões Estruturais:Tratam das associações entre classes e objetos.

    Padrões Criacionais:Relacionados à criação de objetos.



ID
344047
Banca
FUNCAB
Órgão
DER-RO
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

A opção que contém somente padrões de projetos que tratamde comportamento é:

Alternativas
Comentários
  • e-

    creator: yudo que tem a ver com criar: abstract factory, method factory, prototype, singleton, builder.

    structure: estrutura doprojeto: adapter, bridge, composite, decorator, façade, flyweight,proxy

    behaviour: interação entre as classes. interpreter, template method, chain of responsability,. command, iterator, mediator, memento, observer. state, strategy, visitor.


ID
352483
Banca
FUNCAB
Órgão
SES-GO
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

São exemplos de aplicação do padrão de projeto “Façade”, EXCETO:

Alternativas
Comentários
  • e) quando você deseja converter a interface de uma classe em outra interface que os clientes desejam.

    Faz referência ao Padrão de Projeto Estrutural Adapter.

  • Façade-

    Interface unificada para conjunto de interfaces, ocultando alguns componentes.


ID
359998
Banca
FEPESE
Órgão
UDESC
Ano
2010
Provas
Disciplina
Arquitetura de Software
Assuntos

Relacione os padrões de projetos listados abaixo com suas respectivas finalidades:

Padrões de Projetos

1. Facade (fachada)
2. Decorator (decorador)
3. Memento (lembrança)
4. Proxy (procurador)
5. Observer (observador)

Finalidades

( ) Define uma dependência um para muitos entre objetos tal que, quando o estado de um objeto muda, todos os seus dependentes são notificados e atualizados automaticamente.
( ) Fornece uma interface unificada para um conjunto de objetos que constituem um subsistema. Define uma interface de mais alto nível que torna o subsistema mais fácil de usar.
( ) Sem violar o encapsulamento, captura e exterioriza o estado interno de um objeto, tal que o objeto possa ser restaurado a este estado mais tarde.
( ) Acrescenta responsabilidades adicionais a um objeto dinamicamente. Fornece uma alternativa flexível para a extensão de funcionalidade.
( ) Controla o acesso a um objeto através de outro objeto, que atua como seu substituto, ou como um envoltório.

Assinale a alternativa que indica a sequência correta, de cima para baixo.

Alternativas
Comentários
  • (5) Define uma dependência um para muitos entre objetos tal que, quando o estado de um objeto muda, todos os seus dependentes são notificados e atualizados automaticamente.
    (1) Fornece uma interface unificada para um conjunto de objetos que constituem um subsistema. Define uma interface de mais alto nível que torna o subsistema mais fácil de usar.
    (3) Sem violar o encapsulamento, captura e exterioriza o estado interno de um objeto, tal que o objeto possa ser restaurado a este estado mais tarde.
    (2) Acrescenta responsabilidades adicionais a um objeto dinamicamente. Fornece uma alternativa flexível para a extensão de funcionalidade.
    (4) Controla o acesso a um objeto através de outro objeto, que atua como seu substituto, ou como um envoltório.


ID
369823
Banca
CESPE / CEBRASPE
Órgão
TCE-RN
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Acerca de arquitetura orientada a serviços (SOA), análise de pontos de função e padrões de projeto, julgue o item a seguir.


O template method se aplica primariamente às classes, sendo um padrão de projeto com finalidade comportamental, ou seja, caracterizado pela maneira como as classes interagem e distribuem responsabilidades.

Alternativas
Comentários
  • Gabarito: CERTO

    Template Method: Define o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses.

    Questão perfeita! Alguns métodos se aplicam primariamente às classes, como: Template Method, Interpreter, Adapter e Factory Method. O restante se aplica primariamente a objetos.

  • Sempre penso que é estrutural.


ID
425140
Banca
COPEVE-UFAL
Órgão
UFAL
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

O padrão Observer

Alternativas
Comentários
    • a) usa os gerenciadores de layout predefinidos para controlar a interface gráfica.(errado)
      Não tem ligação com GUI.
       
    • b) usa o conceito de ouvintes (listeners) para notificá-los quando algo acontece a sua fonte de eventos (um botão por exemplo). (errado)
      O padrão observer prega o uso do grasp low coupling, ou seja, objetos levemente ligados, interagem, mas conhecem muito pouco um do outro. O uso de listeners quebraria esse princípio, pois insere uma ligação mais forte. Os objetos tipo observer não são listeners. O relacionamento entre estes objetos (observer) e o objeto que notifica alteração de seu estado (subject) é de agregação. Não há um evento para listeners capturar. Outro princípio que é notado no padrão observer e que os listeners violam é o de hollywood (Don't call us, we'll call you), reforçando assim o conceito do baixo acoplamento.
      No link, abaixo há um bom exemplo do observer implementado em java.
      http://java-x.blogspot.com/2007/01/implementing-observer-pattern-in-java.html
    • c) provê o serviço publish/subscribe de notificação entre objetos. (correto)
      Observer:  Define 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." [GoF]

      Quando vocês está tentando retratar o Padrão Observer, um serviço de assinatura de jornais com sua editora e seus assinantes (publish/subscribe) é uma boa maneira de visualizar o padrão.
       Use a Cabeça: Padrões de projeto
    • d) usa a arquitetura “modelo-visão-controlador” para manter a consistência entre várias visões de um mesmo objeto.(errado)
      O padrão observer pode ser inserido em um contexto maior que faz uso do MVC mas ele mesmo não utiliza essa arquitetura, pois como dito acima sua arquitetura é baseada no publish/subscribe, ou seja um escreve e vários lêem. 
    • e) é utilizado para a representação gráfica de um objeto.(errado)
      Não tem ligação com GUI.

ID
425191
Banca
COPEVE-UFAL
Órgão
UFAL
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Sobre padrões de projeto, é correto afirmar que

Alternativas
Comentários
  • Letra E não pode ser por se tratar da definição de :

    Observer
    é um padrão que define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente.
  • Mnemônicos criados por um TIMaster.
    Padrões de criação : A fabrica abstrata constrói um protótipo único
    Factory Method, Abstract Factory, Builder, Prototype, Singleton

    Padrões estruturais: A ponte adaptada é composta de decorações na fachada para o peso mosca se aproximar.
    Bridge, Adapter, Composite, Decorator, Facade, Flyweight, Proxy

    •  a) Façade é um padrão comportamental estrutual que disponibiliza uma interface única para acessar funcionalidades implementadas por diferentes classes.
    • b) Composite é um padrão estrutural utilizado para representar um objeto que é constituído pela composição de objetos similares a ele.
    • c) Command State é um padrão comportamental usado para permitir que um objeto altere o seu comportamento quando o seu estado muda.
    • d) Singleton Builder é um padrão comportamental criacional que permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.
    • e) Strategy Observer é um padrão que define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente.
  • a) E - Façada é padrão estrutural

    b) C

    c) E - Definição de State

    Command: padrão comportamental que permite encapsular solicitações como objetos de forma a permitir que sejam enfileiradas, parametrizadas, gerem log e sejam desfeitas. 

    d) E - Builder - que é padrão de criação e não comportamental

    Singleton - padrão de criação de objetos com o objetivo de garantir que haja uma única instância de um objeto e com ponto de acesso global.

    e) E - definição de Observer - padrão comportamental

    Strategy - padrão comportamental que permite que uma família de algoritmos seja encapsulados como objetos possam ser intercambiáveis dinamicamente. 


  • Excelente questão para aprender os Padrões de Projeto GoF:

    a) E. Embora a descrição esteja correta, Façade não é um padrão comportamental e sim de estrutura.

    b) C.

    c) E. Realmente é um padrão comportamental, porém o padrão que permite que altere o comportamento do objeto quando seu estado muda é o State e não o Command.

    d) E. Primeiramente Singleton é um padrão de criação e quem separação a construção ... é o padrão Builder. Singleton garante que uma classe tenha apenas uma instância e provê um ponto de acesso global a ela. 

    e) E. Está descrevendo o padrão Observer e não o Strategy. O padrão Strategy define uma família de algoritmos, encapsula cada um deles e permite trocar entre eles quando for necessário. 


ID
441349
Banca
FCC
Órgão
TRE-AP
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Padrão que encapsula a lógica de apresentação de dados de negócios dinâmicos ou, ainda, especifica que são usa- dos ajudantes para adaptar os dados do modelo para a camada de apresentação da aplicação. Trata-se de

Alternativas
Comentários
  • View Helper

    São classes auxiliares que tem como objetivo simplificar o código. Ou seja, auxiliam a camada de visão, no caso as VIEWS.
    É uma classe que faz a recuperação de dados para a exibição. O seu padrão desacopla classes de negócio de uma outra aplicação permitindo assim variar em suas próprias taxas. A dissociação também promove a reutilização, porque cada componente de negócio ou apresentação tem menos dependências. Assim, a VIEW pode se concentrar na formatação e lógica de apresentação, e deixar que o View Helper lidar com o processamento e recuperação de dados.
    No código podem ser chamadas como uma função direta e podem receber parâmetros.
    En síntese, é um padrão que encapsula a lógica de apresentação de dados de negócios dinâmicos ou, ainda, especifica quais são os agentes que serão usados como ajudantes para adaptar os dados do modelo para a camada de apresentação da aplicação.




  •     a) view helper. Separa a camada de visão da lógica de apresentação.

        b) dispatcher view. Lida com pedidos e gera respostas, com um mínimo de lógica do negócio.

        c) business delegate. Esconde do cliente a comunicação com os componentes de serviço.

        d) data access object. Dados são manipulados e tratados em camadas separadas.

        e) front controller. Ponto de acesso central para a camada de apresentação.
  • View Helper
    Objetivo: separar código e responsabilidades de formatação da interface do usuário do processamento de dados necessários à construção da View.
    Descrição do Problema
    - Mudanças na camada de apresentação são comuns
    - Alterações da interface do usuário
    - Se código de apresentação (HTML, JavaScript) estiver misturado com código de processamento e controle (Java) as mudanças são dificultadas
    - Menos flexibilidade, menos reuso, menos modularidade e mistura de papéis em um mesmo componente
    - É preciso identificar as responsabilidades de cada trecho de código e encapsulá-lo em objetos usados pela camada de apresentação
    Descrição da Solucação
    - O padrão View Helper recomenda soluções para dividir as responsabilidades do View
    - Uma View contém código relacionado apenas à formatação
    - Responsabilidades de processamento são delegados à classes ajudantes: View Helpers (implementadas como JavaBeans ou como Custom Tags)
    - Helpers também podem guardar modelo de dados intermediário usado pelo View e servir como adaptadores para dados oriundos da camada de negócios
    - Refatoramento pode sugerir separação de determinados trechos de código em objetos Controladores em vez de View Helpers
    - Há várias estratégias para implementação de Views em associação com View Helpers


ID
441421
Banca
FCC
Órgão
TRE-AP
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Considere os padrões de projeto divididos de acordo com as camadas a que eles pertencem. A camada de apresentação contém os padrões relacionados aos Servlets e páginas JSP. São padrões dessa camada:

Alternativas
Comentários
  • Presentation Tier
    • Intercepting Filter
    • Context Object
    • Front Controller
    • Application Controller
    • View Helper
    • Composite View
    • Dispatcher View
    • Service To Worker
       
  • Os padrões de projeto da camada de apresentação do J2EE são:
    - Intercepting Filter
    - Front Controller
    - View Helper
    - Composite View
    - Service To Worker
    - Dispatcher View

    Portanto, o item correto é o b).
  • Padrões da camada de apresentação:

    Intecepting filter; front controller; application controller; context object; composite view; view helper; service to work e dispatcher view.


ID
445819
Banca
COPEVE-UFAL
Órgão
UNEAL
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Definir uma interface para criar um objeto, mas deixar as subclasses decidirem que classe instanciar. Permite adiar a instanciação para subclasses.

Qual opção abaixo corresponde à descrição anterior?

Alternativas
Comentários
  • A confusão aí pode ser entre o padrão Factory Method, Builder e Abstract Factory.

    Factory Method:
    Você define uma interface como por exemplo
    ArquivoCompactado
    Esse arquivo compactado tem as operações de
    extrair( ) 
    listar( )

    Mas pode ser que se trata de um arquivo zip, ou rar, ou tar, ou tar.gz...

    Então você faz algo como

    ArquivoCompactado meuArquivo = Factory.createArquivo( "umarquivo.rar" );


    Builder:
    O padrão builder é responsável pela criação de um objeto complexo, de acordo com a necessidade da aplicação.
    Por exemplo, uma aplicação tem que gerar dois formularios diferentes, de acordo com o perfil do usuário cadastrado. 
    Se o usuário for particular, deve mostrar cpf, estado civil, filhos, salário, etc... Se for empresa deve mostrar cnpj, razão social, nome fantasia, etc...
    O padrão builder vai abstrair a construção do objeto Formulario, por exemplo.

    Abstract Factory:
    Constrói uma familia de objetos sem especificar suas classes concretas.
    Por exemplo, interfaces gráficas.
    Você pode programar Janelas, Botões, Widgets, como classes abstratas e escolher que o Abstract Factory devire isso para classes concretas de um tema Dark, ou tema Mac, ou o tema Rebeldes... Etc.
  • Gabarito: B

    Factory Method

    ======= RESUMO =====

    COMPORTAMENTAIS

    TSIO Chain State Visita e Interpreta Comando Med Mem

     

    * Strategy: define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis.

    * Chain of Responsibility: encadeia os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate.

    * Iterator: acessar sequencialmente os elementos de um objeto.

    * State: permite que um objeto mude o seu comportamento quando o seu estado interno mudar.

    * Command: encapsula uma requisição como um objeto, deixando-o parametrizar clientes com diferentes requisições.

    * Observer: quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.

    * Visitor: representa uma operação a ser executada sobre os elementos da estrutura de um objeto.

    * Memento: captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.

    * Mediator: encapsula a forma como um conjunto de objetos interage.

    * Template Method: esqueleto de um algoritmo em uma operação, deferindo alguns passos para as subclasses.

    * Interpreter: dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador para as sentenças dessa linguagem.

    == CRIACIONAIS ==

    Prototype FAB Singleton

    * Abstract Factory: interface para criar famílias de objetos relacionados.

    * Builder: criação de objeto complexo com representações diferentes, construindo partes de objetos passo a passo.

    * Factory Method: define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.

    * Prototype: cria objetos usando uma instância prototípica (clone).

    * Singleton: garante que uma classe possua apenas uma única instância e provê um ponto de acesso global a ela.

    == ESTRUTURAIS ==

    AFF Puta e Bridge Decora Composto

     

    * Adapter: converte a interface de uma classe em outra .

     

    * Bridge: desacopla uma interface de sua implementação.

     

    * Composite: compõe zero ou mais objetos similares de forma que eles possam ser manipulados como um só (montagem de árvore).

     

    * Decorator: anexa responsabilidades adicionais a um objeto dinamicamente.

     

    * Proxy: substituto ou ponto de acesso através do qual um objeto possa controlar o acesso a outro.

     

    * Façade: interface unificada para um conjunto de interfaces de um subsistema.

     

    * Flyweigth: usa compartilhamento para suportar grandes quantidades de objetos, tornando o objeto mais leve que o original.


ID
445843
Banca
COPEVE-UFAL
Órgão
UNEAL
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Definir um objeto que encapsula a forma como um conjunto de objetos interage. Promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente.

Qual opção abaixo corresponde à descrição anterior?

Alternativas
Comentários
  • Letra E. Mediator
    Propósito: Comportamental
    Escopo: Objeto
    Intenção: definir um objeto que encapsula como um conjunto de objetos interage e manter objetos fracamante acoplados impedindo-os de se referirem entre si explicitamente. Isso permite variar sua interação de modo independente.
  • Acredito ser sempre válido fazer uma analogia com o mundo real para tentarmos entender de forma mais "amigavel" o problema, eu particularmente utilizo a seguinte analogia para o Padão Mediator:

    Imagine que temos varios aviões (objetos) e estes decolam e aterrizam a todo momento em um determinado aeroporto. Perceba, que os avioes têm que trocar informações entre si para saberem onde estao, quando sairao, se estao chegando, se estao saindo, enfim, varias informações. Para nao permitir que estes avioes fiquem trocando informações diretamente entre eles (o que poderia ser um caos), existe a "torre de comando" que faz a mediação entre essas "informações" trocadas pelos aviões. Assim, o "caos" é controlado e todas as informações são transmitidas.

    Resumindo, os aviões seriam os objetos, que nao estão acoplados uns com os outros, e sim com a torre de comando apenas!!!

    Não sei se este comentário ajuda, mas é uma das maneiras que eu uso para "gravar" o padrão de projeto! Claro, a implementação e o intendimento na prática do Padão é imprescindivel para questões mais elaboradas.

    Bons Estudos!!!

ID
445846
Banca
COPEVE-UFAL
Órgão
UNEAL
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Descrição de conhecimento e experiência acumulados, uma solução bem-sucedida para um problema. Capta a experiência de uma maneira possível de ser reusada por outros.

Qual opção abaixo corresponde à descrição anterior?

Alternativas
Comentários
  • Padrões de projeto (Design Patterns)  são uma maneira testada ou documentada de alcançar um objetivo qualquer. É um padrão proposto para imitação e usada como um modelo para fazer coisas.

    Interessante, também, a visão do Christopher Alexander, sobre padrões em Arquitetura, quando o mesmo diz:

    "Cada padrão descreve um problema que ocorre repetidas vezes em nosso ambiente, e então descreve o núcleo da solução para aquele problema, de tal maneira que pode-se usar essa solução milhões de vezes sem nunca fazê-la da mesma forma duas vezes"

    Vamos em frente!

ID
450031
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Os padrões de projeto orientados a objeto podem ter finalidade de criação, estrutural ou comportamental. Os padrões de criação se preocupam com o processo de criação de objetos. Os padrões estruturais lidam com a composição de classes ou de objetos. Os padrões comportamentais caracterizam as maneiras pelas quais classes ou objetos interagem e distribuem responsabilidades. Assinale a alternativa que apresenta apenas padrões de projeto comportamentais.

Alternativas
Comentários
  • Comportamentais: Chain of Responsability, Command, Interpreter, Interator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor
    Estruturais: Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy
    Criação: Abstract Factory, Factory Method, Builder, Prototype, Singleton
  • a) Prototype, Abstract Factory e Builder.
    Todos de criação.

    b) Singleton, Composite e Interpreter.
    Singleton - criação
    Composite - estrutural
    Interpreter - comportamental

    d) Composite, Decorato e Proxy.
    Todos estruturais

    e) Proxy, Builder e Mediator.
    Proxy - Estrutural
    Builder - criação
    Mediador - Comportamental.
  • Para conseguir acerta esse tipo de questão, eu fiz um post bem interessante:

    http://rogerioaraujo.wordpress.com/2010/02/25/mnemonicos-padroes-de-projetos-gof/

    []s
  • c-

    padroes de criação - factory method, abstract factory, builder, prototype, singleton.  2 fabricas constroem um simples prototipo.

     

    padroes de estrutura - adapter, bridge, composite, decorator, façade, flyweight, proxy. adaptaram uma ponte composta para decorar a fachada das moscas no servidor de proxy.

     

    O resto sera comportamento.


ID
450034
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Em relação aos padrões de projeto de software assinale a alternativa correta.

Alternativas
Comentários
  • a) Singleton Builder é um padrão utilizado quando se deseja separar a construção de um objeto complexo de sua representação de modo que o mesmo processo de construção possa criar diferentes representações.

    b) Builder Prototype é um padrão utilizado quando se deseja especificar os tipos de objetos a serem criados usando uma instância protótipo e criar novos objetos pela cópia desse protótipo.

    c) Adapter Bridge é um padrão utilizado quando se deseja desacoplar uma abstração de sua implementação, de modo que as duas possam variar independentemente.

    d) Factory Method é um padrão utilizado quando se deseja definir uma interface para criar um objeto e deixar as subclasses decidirem que classe instanciar. (CORRETO)

    e) Proxy   Singleton é um padrão utilizado quando se quer garantir que uma classe tenha somente uma instância e fornecer um ponto global de acesso a mesma.

  • Padrão Singleton

    Tem a vantagem de permitir acesso controlado à instância de uma classe, uma vez que ele encapsula a classe, criando um ponto global único de acesso.

    Padrão Adaptar:

    Além de converter a interface de uma classe existente em outra interface esperada pelos clientes, permite que algumas classes com interfaces diferentes funcionem conjuntamente.

    Factory method:

    Definir uma interface para criar um objeto mas deixar que subclasses decidam que classe instanciar.

    Proxy:

    É encapsular um objeto através de um outro objeto que possui a mesma interface, de forma que o segundo objeto, conhecido Proxy, controla o acesso ao primeiro.


ID
459295
Banca
FCC
Órgão
INFRAERO
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Para fazer a modelagem de um padrão de projeto (design pattern) utilizando a UML é DESNECESSÁRIO

Alternativas
Comentários
  •  c) identificar as soluções específicas e particulares para o problema básico e reificá-la como um mecanismo.

    Algumas definições de padrão de projeto encontradas na web:

    Padrões de projetos são soluções elegantes e reutilizaveis para problemas recorrentes que encontramos diariamente no processo de desenvolvimento de aplicativos. Eles tratam da concepção e da interaçaõ entre objetos, definindo ao mesmo tempo um padrão de comunicação que é compartilhada por toda equipe de desenvolvimento.http://www.oodesign.com.br/patterns/

    Um padrão de projeto é uma estrutura recorrente no projeto de software orientada a objeto. Pelo fato de ser recorrente vale a pena se documentado e estudado http://s2i.das.ufsc.br/seminarios/apresentacoes/padroes_de_projeto/text3.html



    Essas soluções são desenvolvidas e conhecidas por especialistas, e tornam-se padrões por serem reutilizadas v árias vezes em vários projetos e por terem a sua eficácia comprovada.

    Fonte: http://www.macoratti.net/vbn5_dp1.htm
  • Não encontrei nenhuma referência para modelagem de design patterns em UML, porém é possível acertar por eliminação. Partindo do princípio que design patterns são abstrações genéricas para problemas recorrentes em desenvolvimento de software pode se concluir que as duas questões que tentam levar para o lado de "soluções específicas" podem estar erradas, no caso opção c) e d):
     
    c) identificar as soluções específicas e particulares para o problema básico e reificá-la como um mecanismo.
     
     De cara pode-se notar que a afirmação sugere soluções específicas e particulares, algo totalmente contrário ao princípio dos design patterns de soluções abstratas e genéricas.
     
    d) identificar os elementos do padrão de projeto que devem ser vinculados aos elementos em um contexto específico e representá-los como parâmetros para colaboração.
     
     Nesse caso, a afirmação sugere a identificação dos elementos do padrão que serão vinculados aos elementos de um contexto específico, ou seja, identificação de como um padrão se encaixa em um cenário específico da modelagem.
    Baseado nisto, é possível concluir que a alternativa c) é a incorreta
  • Essa questão é um pouco polêmica, na minha opinião, até porque não há literatura que fale especificamente sobre como representar um padrão de projeto em um diagrama UML, mas acertei por eliminação, já que a letra C fala sobre soluções específicas, e os padrões são soluções genéricas.

  • Modela-se padrões de projetos? Ou modela-se projetos com base em padrões?
    A meu ver, são coisas bem distintas. Gostaria da opinião dos colegas.

    Abs,
    MRB

  • FCC a gente vê de tudo. Eu entendi que a pessoa estava fazendo a modelagem do próprio padrão de projeto. Tipo o que é apresentando no GoF para explicar o projeto. Não dá pra saber ao certo que que passo na cabeça do examinador.

  •  

    C) identificar as soluções específicas e particulares genéricas para o problema básico e reificá-la como um mecanismo.

     

    "Em Engenharia de Software, um padrão de projeto é uma solução geral para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software. " (Wikipedia)


ID
464101
Banca
CESGRANRIO
Órgão
Transpetro
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Em uma aplicação para gerenciamento de currículos profissionais, deve haver uma funcionalidade para pesquisa (busca) por informações previamente registradas. Essa funcionalidade deve ser apresentada aos usuários como um formulário da interface gráfica da aplicação cuja composição deve ser diferente em cada uma das seguintes situações. Na primeira, o formulário deve apresentar ao usuário campos que permitam realizar buscas por empresas que oferecem vagas de emprego. Na segunda situação, o formulário deve apresentar campos para permitir aos usuários a realização de buscas por currículos de candidatos a vagas de emprego. O engenheiro de software, encarregado da implementação dessa funcionalidade, decidiu usar um padrão de projeto do catálogo GoF (Gang of Four). Esse padrão foi escolhido porque permite construir produtos com diferentes representações de tal forma que o mesmo processo de construção possa ser usado para criar diferentes produtos. No caso da funcionalidade descrita acima, os diferentes produtos a serem criados são as duas variantes do formulário de busca.

Dentre os listados abaixo, qual foi o padrão escolhido pelo engenheiro de software?

Alternativas
Comentários
  • ... permite construir produtos com diferentes representações de tal forma que o mesmo processo de construção possa ser usado para criar diferentes produtos..... Define o padrão GoF Builder.

    Abstract Factory:
    Cria famílias de objetos relacionados ou dependentes, através de uma única interface e sem que a classe concreta seja especificada.

    Brigder: Padrão estrutural (já pode ser eliminado por isso) é utilizado quando deseja que uma interface possa variar independente de suas implementações.

    Mediador: Padrão comportamental (já pode ser eliminado por isso) que pemite a unificação da interface do sistema. A comunicação entre os objetos é encapsulada com um objeto mediador, isso reduz  dependencia entre os objetos que estão se comunicando.

    Prototype: Criação de objetos a partir do modelo original.
  •  Builder
    Separar a construção de objeto complexo da representação para criar representações diferentes com mesmo processo.
  • Separar a construção de um objeto de sua respectiva representação, e desta maneira, a partir dessa mesma construção, produzir representações diferentes [Gamma, et al, 1994].

  • Eu associo o padrão Builder ao conceito de polimorfismo de OO. Como é um dos padrões mais cobrados, nunca mais esqueci associando esses dois conceitos.
  • Correção:

    a) E. O padrão Abstract Factory é usado quando temos um família de objetos relacionados tratando também as restrições de cada um.

    b) E. O padrão Bridge desacopla uma interface de sua implementação, de tal forma que ambos possam variar independentemente.

    c) C.

    d) E. O padrão Mediator encapsula a complexidade de um projeto, facilitando a manutenção. Complexidade aqui é a forma com que um conjunto de objetos se interagem.

    e) E. O padrão Prototype permite a construção de um protótipo pra ser usado na criação de cópias de objetos. Exemplo: protótipo Carro e os exemplos Corsa, Fusion.

  • c-

    o cara que falou que builder esta associado a diferentes representações nao estava brincando


ID
464128
Banca
CESGRANRIO
Órgão
Transpetro
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Relacione os padrões de projeto às suas indicações de uso.

I - Ponte
II - Observador
III - Decorador
P - Mostra como adicionar responsabilidades aos objetos dinamicamente.
Q - Separa a abstração de um objeto de sua implementação.
R - Define e mantém dependência entre objetos.
S - Define um objeto que encapsula como um conjunto de objetos que interagem.
As associações corretas são:

Alternativas
Comentários
  • Ponte - (Bridge) = Implementar um design que permita total desacoplamento entre interface e implementação.
    Observador - (Observer) = Desacopla um objeto do conhecimento de que outros objetos dependem dele.
    Decorador - (Decorator) = Adiciona responsabilidades a um objeto dinamicamente.
  • A letra S é o padrão Mediator.
  • I - Ponto - Desacopla uma abstração de sua implementação, de tal forma que ambas podem variar independentemente.
    II - Observer - Define um dependência um-para-muitos entre objetos de tal que quando um objeto muda de estado, todas suas dependências são notificadas e atualizadas automaticamente.
    III - Decorador - Anexa responsabilidades adicionais para um objeto dinamicamente. Provê uma alternativa flexível de "sub-classeamento" para uma funcionalidade extendida

     

    Observação: Descrição do padrão Observer está incompleta e confusa! Infelizmente temos que conviver com isso, e optar pela menos errada


ID
519559
Banca
Exército
Órgão
EsFCEx
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Segundo a classificação do Gang of Four (GoF), os padrões de projeto decorator, memento e singleton possuem respectivamente os seguintes propósitos:

Alternativas
Comentários
  • gabarito D Padrões de criação Abstract Factory Object pool Builder Factory Method Prototype Singleton Padrões estruturais Private class data Adapter Bridge Composite Decorator Façade (ou Facade) Business Delegate Flyweight Proxy Padrões comportamentais Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor fonte: Wikipedia

ID
531757
Banca
FESMIP-BA
Órgão
MPE-BA
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Segundo a classificação de Design Patterns apresentada pela GoF, identifique com V os padrões comportamentais e com F, os demais.

( ) Observer.
( ) Iterator.
( ) Façade.
( ) Composite.
( ) Visitor.

A alternativa que contém a sequência correta, de cima para baixo, é a

Alternativas
Comentários
  • Os Desing patterns do GoF são:
    Padrões de criação
        -Abstract Factory
        -Builder
        -Factory Method
        -Prototype
        -Singleton

    Padrões estruturais
        -Adapter
        -Bridge
        -Composite
        -Decorator
        -Façade
        -Flyweight
        -Proxy

    Padrões comportamentais
        -Chain of Responsibility
        -Command
        -Interpreter
        -Iterator
        -Mediator
        -Memento
        -Observer
        -State
        -Strategy
        -Template Method
        -Visitor
  • Complementando o comentário do #Bernardo:

    Há várias formas de classificar os padrões. Gamma et al
    [1] os classifica de duas formas
    •Por propósito: (1) criação de classes e objetos, (2)
    alteração da estrutura de um programa, (3) controle do
    seu comportamento
    •Por escopo: classe ou objeto
    • Metsker [2] os classifica em 5 grupos, por intenção
    (problema a ser solucionado):
    •(1) oferecer uma interface,
    •(2) atribuir uma responsabilidade,
    •(3) realizar a construção de classes ou objetos
    •(4) controlar formas de operação
    •(5) implementar uma extensão para a aplicação
    As finalidades dos padrões listados na questão são:
    Observer
    •Definir uma dependência um-para-muitos entre objetos
    para que quando um objeto mudar de estado, os seus
    dependentes sejam notificados e atualizados
    automaticamente.
    Iterator
    •Prover uma maneira de acessar elementos de um objeto
    agregado seqüencialmente sem expor sua representação
    interna.
    Façade
    •Oferecer uma interface única de nível mais elevado para
    um conjunto de interfaces de um subsistema.
    Composite
    •Permitir o tratamento de objetos individuais e
    composições desses objetos de maneira uniforme
    Visitor
    •Representar uma operação a ser realizada sobre os
    elementos de uma estrutura de objetos

    Fonte:Argo Navis J930 - Padrões de Design- Helder S. da Rocha



  • Para conseguir acerta esse tipo de questão, eu fiz um post bem interessante:

    http://rogerioaraujo.wordpress.com/2010/02/25/mnemonicos-padroes-de-projetos-gof/

    []s
  • É isso aí Jorge Kajuru (Hederson)
  • Rogério Araujo. As suas dicas são muito boas. Parbaéns!
  • muito bom, Rogério!!
  • Padrões de criação

    "Uma fábrica abstrata constrói um protótipo único"

    Mnemônicos: uma fábrica (Factory Method) abstrata (Abstract Factory) constrói (Builder) um protótipo (Prototype) único (Singleton).

     

    Padrões estruturais

    "FAB Comando Porra"

    Mnemônicos: F (Facade) A (Adapter) B (Brigde) Comando (Composite) Porra (Proxy)

    Obs: Atenção a primeira Letra!

     

    Conclusão

    Aprendendo quem são os padrões de criação e os estruturais, o restante são padrões comportamentais.

     

    Pode acreditar que funciona.

    Fontes: https://rogerioaraujo.wordpress.com/2010/02/25/mnemonicos-padroes-de-projetos-gof/ e Invenção Pessoal

  • Para conhecer todos os padrões de Estrutura use o seguinte mneumônico:

    A ponte adaptada é composta de declarações na fachada para o peso mosca se aproximar.

    1 - Ponte - Bridge

    2 - Adaptada - Adapter

    3 - Composta - Composite

    4 - Declarações - Decorator

    5 - Fachada - Façade

    6 - Peso Mosca - Flyweight

    7 - Aproximar - Proxy

     

    Os demais são comportamentais, isto é:

    1 - Chain of Responsability.

    2 - Command.

    3 - Interpreter.

    4 - Iterator.

    5 - Mediator.

    6 - Memento.

    7 - Observer.

    8 - State

    9 - Strategy

    10 - Template Method.

    11 - Visitor.

     


ID
531760
Banca
FESMIP-BA
Órgão
MPE-BA
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

O Design Patterns que tem a finalidade de usar compartilhamento para suportar grandes quantidades de objetos, de granularidade fina, de maneira eficiente, é denominado

Alternativas
Comentários
  • Flyweight
    "Usar compartilhamento para suportar grandes quantidades
    de objetos refinados eficientemente." [GoF]

    Quando usar Flyweight:
    •Quando o tamanho do conjunto de objetos for
    significativamente menor que a quantidade de vezes em
    que eles são usados na aplicação
    •Quando objetos podem ser usados em diferentes
    contextos ao mesmo tempo (agindo sempre como um
    objeto indepentente)
    Quando não usar:
    •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)
    •Quando for necessário elaborar um algoritmo ou algo
    complicado para separar objetos mutáveis de imutáveis.

    A finalidade dos demais é:
    Strategy:Definir uma família de algoritmos, encapsular cada um, e fazê-los
    intercambiáveis

    Composite:Permitir o tratamento de objetos individuais e
    composições desses objetos de maneira uniforme

    Builder: Separar a construção de objeto complexo da representação
    para criar representações diferentes com mesmo processo

    State:Permitir a um objeto alterar o seu comportamento quanto o seu
    estado interno mudar


  • Flyweight
    Usa compartilhamento para suportar grandes quantidades de objetos, de granularidade fina, de maneira eficiente.
    Quando usar:
     Uma aplicação utiliza grande número de objetos e o custo para armazená-los é muito alto.
    A maioria dos estados dos objetos pode ser tornada extrínseca.
  • Anotem isso ae "Falou em GRANULARIDADE falou em FLYWEIGHT"

    Quer prova disso? filtrem todas as quetões em que o gab É Flyweight

     

    Por exemplo: Q615766

  • c-

    Usa a distribuição para suportar varios objetos, salvando espaço pela distribuição de estados comuns entre objetos. Diferencia entre estados intrínsecos e extrínsecos.


ID
599674
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

O Padrão de Projeto Decorador é formado por uma hierarquia de classes cuja classe mais genérica representa um componente ou um componente abstrato. Para o padrão ser útil, essa classe deve ser diretamente especializada em, pelo menos, outras duas classes que representam um(a)

Alternativas
Comentários
  • a) [ERRADA] Não existe componente cliente
    b) [ERRADA] Não existe componente cliente
    c) [Correta]

    Component: define a interface para objetos que podem ter responsabilidades acrescentadas dinamicamente
    ConcreteComponent: define um objeto para o qual responsabilidades adicionais podem ser atribuídas
    Decorator: define uma interface que segue a de Component e mantém uma referência para um objeto Component
    d) [ERRADA] Não estamos falando de Adaptador
    e) [ERRADA] Não é limitada a uma única instância
     
  • File:Decorator-dpcd.png
    (Fonte: Padrões de Projeto, GOF, pag 172)
    Infelizmente a notação utilizada no livro dos GOF não é UML (é OMT), mas mesmo assim dá para entender que aquele triângulo representa uma relação de herança. No caso, as duas subclasses que herdam do componente são de fato o componente concreto e o decorador. Gabarito letra “C”.
  • Partes:
    1 - Componente
    2 - Decorator
    3 - Componente Concreto
    4 - Componente Decorator

ID
606196
Banca
CESGRANRIO
Órgão
FINEP
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Sabendo-se que os padrões de projeto podem ser classificados considerando-se o critério de escopo, qual, dentre os padrões de projeto abaixo, possui escopo de classe?

Alternativas
Comentários
  • O critério escopo especifica se o padrão trabalha com foco em classes, subclasses e seus relacionamentos (escopo classe), ou se o padrão trabalha com relacionamentos entre objetos (escopo objeto). O critério propósito reflete o papel do padrão.
    Todos os padrões Decorator, Mediator, Proxy e Observer trabalham com os objetos já criados enquanto que o adapter trabalha com a classe em si.
  • O padrão Adapter é o único que possui o escopo classe e objeto. Os demais citados, apenas o escopo objeto.
  • O padrão Adapter converte a interface de uma classe para outra interface que o cliente espera encontrar. O adaptador permite que classes com interfaces incompatíveis trabalhem juntas. (Fonte: Use a cabeça, Padrões de Projeto).

    Analogamente, pensem no novo padrão de tomadas utilizado no Brasil. Equipamentos eletro-eletrônicos mais antigos, precisam de tomadas adaptadoras para que seja possível que o equipamento seja ligado na tomada com energia. Essas tomadas adaptadoras são equivalentes ao padrão Adapter.

  • O escopo de Classes possui tais padrões: Factory Method(Criação), Adapter(Estrutural), Interpreter e Template Method (Comportamentais).

  • Escopo de classe: factory Method, Class Adapter, Interpreter e Template Method.

  • Outros padrões de escopo de classe: Factory Method (Criação); Interpreter e Template Method (Comportamentais). 

    http://wiki.dcc.ufba.br/pub/Aside/SeminariosDesignPatterns/GOF.JPG

  • Pra lembrar o escopo de classe é só METER na FATI 2 vezes....

    Ãhhhhh., cuma... que isso! Que conteúdo é esse... calma....

    Isso mesmo dois MET - Factory METhod, Template METhod

    E dois TERAdapTERInterpreTER

    E só METER na FATI, duas vezes e com certeza irá lembrar!

    As cores:

    Azul - Criacional

    Verde - Estrutural

    Vermelho - Comportamental

  • Só existem dois tipos de escopos: Classe e Objeto

    Escopo de Classe: Factory Method [criacional]; Adapter [estrutural]; Interpreter e Template Method [comportamental]

    O resto é Escopo de Objeto


ID
638158
Banca
FUMARC
Órgão
PRODEMGE
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

São padrões de projeto GoF (design patterns), EXCETO:

Alternativas
Comentários
  • Padrões de criação

        Abstract Factory
        Builder
        Factory Method
        Prototype
        Singleton

    Padrões estruturais

        Adapter
        Bridge
        Composite
        Decorator
        Façade
        Flyweight
        Proxy

    Padrões comportamentais

        Chain of Responsibility
        Command
        Interpreter
        Iterator
        Mediator
        Memento
        Observer
        State
        Strategy
        Template Method
        Visitor

    Se meu comentário for ruim é só fazer um melhor ;-)
  • Não sei se é melhor, mas, como complemento, acho mais prático assim: Letra B
  • Workflow por ser atribuí à: Aplicação, código, método ...

    design patterns = são apenas descrições, ñ relaciona-se a nenhum conceito citado acima.
  • Não sei o que foi pior, a questão ou a briguinha dos comentários.

  • Realmente o Fernando tem razão pois a pergunta está mal elaborada "Workflow" é uma categoria de padrões especiais e não um padrão. 

  • a) Strategy. define familia de algoritmos, encapsulando-os. exemplo: relacao view-controller o que é um objeto representando algortimo para encapsular estruturaas complexas de dados.

     

    b) Workfow. - nao  é design pattern

     

    c) Adapter. - "Converter a interface de uma classe em outra interface, fazendo-as trabalhem em conjunto"

     

    d) Facade. - interface unificada para conjunto de interfaces, escondendo alguns componentes.


ID
642304
Banca
FCC
Órgão
TCE-PR
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Para modelar sistemas que utilizam componentes reutilizáveis podem ser utilizados dois tipos de padrões de interesse - os design patterns e os frameworks.


Com relação ao tema, considere as asserções a seguir.


Nas aplicações Java EE, o design pattern JavaServer Faces utiliza o framework MVC para representar o fluxo sequencial de comunicação entre as camadas. O MVC permite representar e entender a comunicação existente entre os componentes da aplicação

PORQUE

quando se utiliza o MVC em aplicações web desenvolvidas com Java, a requisição do cliente é normalmente interceptada por uma servlet de controle (Controller). Essa servlet manipula o processamento inicial da requisição, acessa os componentes do modelo (Model) e geralmente determina qual será a página (View) que irá mostrar o conteúdo de resposta da requisição.

Acerca dessas asserções, é correto afirmar:

Alternativas
Comentários
  • Há um erro na primeira asserção:

    Nas aplicações Java EE, o
    design pattern JavaServer Faces utiliza o framework MVC para representar o fluxo sequencial de comunicação entre as camadas. O MVC permite representar e entender a comunicação existente entre os componentes da aplicação

    O correto seria:
    o framework JavaServer Faces utiliza o design pattern MVC.

    A segunda asserção está correta.
  • Corrigindo:

    Nas aplicações Java EE, o framework JavaServer Faces utiliza a arquitetura MVC para representar o fluxo sequencial de comunicação entre as camadas. O MVC permite representar e entender a comunicação existente entre os componentes da aplicação

    MVC é uma arquitetura e não um padrão de projeto. Cuidado!!!
  • Model-view-controller (MVC) é um modelo de desenvolvimento de Software, atualmente considerado um "Design_Patterns" (arquitetura padrão) utilizada na Engenharia de Software.

    http://pt.wikipedia.org/wiki/MVC
  • O MVC não utiliza um fluxo sequencial, está mais para uma comunicação triangular entre as partes, já que a camada de modelo pode atualizar diretamente uma visão.

  • É o contrário. 

    MVC é um design pattern e o JavaServer Faces é um framework.


ID
642307
Banca
FCC
Órgão
TCE-PR
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Os design patterns

Alternativas
Comentários
  • Os design patterns

    a) NÃO são projetos de arquitetura para um domínio específico de aplicação e sempre trazem componentes predefinidos que envolvem código de programação.
    b) NÃO consistem em conjuntos de classes que um usuário instancia para utilizar seus métodos. Após a chamada ao método, o controle do fluxo da aplicação retorna para o usuário.
    c) NÃO são de uso exclusivo em processos de desenvolvimento de soluções orientado a objetos, já que os objetos são a mais adequada abstração para o reúso.
    d) NÃO são aplicações propriamente ditas, normalmente construídas pela integração de diversos frameworks.
    e) podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar pa- drões de projeto representando-os como colaborações. CORRETA
  • a)  São apenas descrições, nada de código
    b) Não entra em detalhes de chamada de métodos, etc ... trabalha num nivel de generalidade mais alto.
    c) Normalmente associados com projetos orientado a objetos, não exclusivamente
    d) São descrições
    e) OK
  • Francisco,

    Em qual referência bibliográfica afirma que padrões de projeto são apenas descrições, SEM CÓDIGO?

    No dia a dia o que mais vejo é implementação de PP em Java e Python (Iterator, Command, Singleton, Facade, etc.).
  • Eu marcaria a E, que é a mais clara.
    Porém, com relação a letra C, eu não conheço nenhum padrão de projeto que não esteja associado a uma solução orientada a objetos.
    Alguém pode me dar um exemplo?
  • positivo, arrisco a dizer até que não existe nenhum padrão que não seja OO.
  • Olá Rodrigo e Izaias,

    Em relação à utilização de design patterns em outros paradigmas de programação é possível. O que acontece é que orientação à objetos é uma abstração do mundo real, portanto mais visível e aplicável a utilização de padrões. Um exemplo que cito são as linguagens funcionais que podem se beneficiar do uso dos mesmos padrões de projetos já consagrados em OO.

    Segue um link interessante sobre o assunto:
    http://www.ibm.com/developerworks/java/library/j-ft10/index.html 
  • complementando o comentario do  Rafael Freire...

    Por exemplo poderimos citar o Padrão de Projeto Singleton. Sera mesmo que só com orientação a objetos conseguiriamos implementar este padrão? Quando vemos um diagrama de classes na UML acreditamos que aquilo é apenas para Orientação a Objetos, mas percebam que a coisa é bem mais que isso... aquilo é só um conceito, que pode simplesmente ser implementada com outros paradigmas, talvez de forma não ta trivial, mas acredite pode.
  • Welkson Renny de Medeiros, na sua propria questão ja esta a resposta, veja:

    ..."No dia a dia o que mais vejo é implementação de PP em Java e Python (Iterator, Command, Singleton, Facade, etc.)."

    Exatamente! Ou seja, os padrões de projeto são conceitos (e não códigos), que são implementados em alguma Linguagem de Programação, entende?

    Bons Estudos!!!
  • 1 - Padrão de Projeto não é Projeto, não é de domínio específico, PODEM trazer código de programação.
  • Realmente eu achei a letra E) a mais correta...so não entendi a parte de  modelar padrões como colaborações...alguem poderia ajudar? 
  • Também não entendi a parte "representando-os como colaborações". Alguem conseguiria definir isso?

  • Os padrões de projeto são representados via UML utilizando COLABORAÇÕES. Vi que alguns ficaram confusos com o uso desse termo, entretanto acredito que ele esteja se referindo à ASSOCIAÇÕES entre as classes em um diagrama de classes. Geralmente uma boa explicação sobre um padrão de projeto orientado à objetos é acompanhada de um diagrama que mostra as relações/associações entre as classes compondo o padrão (generalizações, agregações, etc.).

  • e-

    Conceito originalmente usado por Christopher Alexander, design patterns sao soluções publicadas para problemas recorrentes em engenharia de sofwtare. Contêm soluções aplicaveis a situações comuns, com relevancia ao contexto em que ocorrem. 


ID
645385
Banca
AOCP
Órgão
BRDE
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

Em projetos orientados a objetos, temos vários padrões de projetos. Sobre o padrão Adaptador, analise as assertivas e assinale a alternativa que aponta a(s) correta(s).

I. Adaptador não é um padrão de projeto reconhecido.

II. Normalmente, o padrão adaptador aplica-se a qualquer contexto em que queiramos modificar uma classe existente de maneira que seus métodos se adaptem aos de uma classe ou interface relacionada, porém diferente.

III. A regra geral para aplicar o padrão Adaptador é definir a nova classe de maneira que ela contenha uma instância da classe antiga, como um campo escondido, e implemente os métodos da nova classe usando os métodos da varável de instância escondida.

IV. Adaptador garante através de um método público que somente uma instância da classe em questão existirá.

Alternativas
Comentários
  • Questão duvidosa.

    Na assertiva II diz que "Normalmente, o padrão adaptador aplica-se a qualquer contexto em que queiramos modificar uma classe existente de maneira que seus métodos se adaptem aos de uma classe ou interface relacionada, porém diferente. "

    O Adapter não tem como fundamento modificar uma classe existente para que ela se adapte a outra. Ele se aplica quando queremos construir um mecanismo que permita que classes com interfaces incompatíveis trabalhem juntas.

    Dizer que ele modifica a classe já existente é o mesmo que dizer que para ligar uma tomada macho com três pinos em uma fêmea com dois buracos, seria necessário "furar" mais um buraco na fêmea ao invés de se usar um adaptador com dois pinos macho em uma ponta e três buracos na outra.

ID
646168
Banca
FCC
Órgão
TJ-PE
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

Analise o texto:

É um design pattern que permite que uma aplicação seja desenvolvida de forma que a camada de acesso aos dados seja isolada das camadas superiores. Numa aplicação que utiliza a arquitetura MVC, todas as funcionalidades de bancos de dados, tais como estabelecimento de conexões, mapeamento de objetos Java para tipos de dados SQL ou execução de comandos SQL, devem ser feitas por classes representadas nesse design pattern.

O texto faz referência ao design pattern

Alternativas
Comentários
  • LETRA B.
    É o famoso DAO.
    O DAO abstrai a implementação de acesso a base de dados para o Business Object para permitir o acesso transparente à fonte de dados. O BO delega também dados de carga e operações de armazenamento para o DAO.
  • Para facilitar a manutenção da aplicação, há um design pattern que tem como objetivo principal centralizar o acesso aos dados em uma única camada. Essedesign pattern é o  

     a)

    DTO. 

     b)

    Business Object.

     c)

    DAO. 

     d)

    Application Service. 

     e)

    MVC. 

     


ID
646177
Banca
FCC
Órgão
TJ-PE
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

A maioria das aplicações web tem algumas funcionalidades (por exemplo, segurança), que são aplicáveis a todas as requisições da aplicação. Para adicionar essa funcionalidade separadamente para cada requisição da aplicação seria demorado, propenso a erros e difícil de manter. Para resolver esse problema pode ser utilizado o design pattern

Alternativas
Comentários
  • LETRA D.
    O intercepting filter é um padrão utilizado para verificar a validade da solicitação que está sendo feita para uma requisição de página na web. Toda vez que um usuário abre um navegador Internet (browser) e digita um endereço, uma solicitação é gerada e entregue a um servidor na web, que por sua vez interpreta a solicitação e devolve uma resposta (página web).
    Fonte: http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=1049
  • Eu entendo porque a resposta é intercepting filter.

    Só não entendo porque não poderia ser Front Controller. Front Controler é um ponto de entrada centralizado para todas as requisições.
    Dessa forma qualquer requisito "global" poderia ser colocado nele, correto?

    Alguem poderia explicar?
  • Respondendo ao Bernardo.
     
    Front controller serve para centralizar as requisicoes de forma "formal", influencia no fluxo de navegação ou workflow. 
     
    O intercept filtering serve para relizar outras tarefas (filters fazendo logins, internacionalizações) que nao influenciem diretamente na requisicao original e ao destino original, sendo como uma espécie de filtro para requisicoes HTTP. 
     
    Command = encapsula em um objeto um algoritmo que atua sobre o estado do sistema. Tb chamado de Action.
  • Desculpem a ignorância, mas... de quais padrões de projeto a questão está tratando? Conheço os padrões GoF e GRASP, quais outros existem e quais costumam cair em prova? Alguém poderia passar boas referências para estudo? Obrigada a quem puder ajudar.

  • @Tayse: talvez alguns sejam do Java. Nesse link há exemplos: http://www.oracle.com/technetwork/java/catalog-137601.html
  • Acredito que há duas respostas. Front Controller e Intercept Filter

  • Não pode ser Front Controller pois o enunciado diz que são necessárias funcionalidades a TODAS as requisições. Ambos os padrões são similares (FC e IF), mas servem papeis diferentes. O FC "despacha" as requsições para o destinatário correto respondê-la. Em tese, poderia ser usado, mas seria a ferramenta errada (:


ID
675541
Banca
CONSULPLAN
Órgão
TSE
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

O desenvolvimento de software é uma atividade que apresenta dificuldades, ligada ao entendimento do problema. Design Patterns surgiram na busca de soluções para as dificuldades, tornando-se um mecanismo eficiente no compartilhamento de conhecimento entre os desenvolvedores. Gamma propõe um modo de categorização dos DESIGN PATTERNS, definindo famílias de padrões relacionados, descritos a seguir.

I. Abrange a configuração e inicialização de objetos e classes.

II. Lida com as interfaces e a implementação das classes e dos objetos.

III. Lida com as interações dinâmicas entre grupos de classes e objetos.

Essas famílias são denominadas, respectivamente,

Alternativas
Comentários
  • Os padrões de projeto que tem a classificação pelo propósito são as seguintes:


    # Criação
             Abrange a configuração e inicialização de objetos e classes.(Um exemplo seria o padrão de projeto Builder)
    # Estrutura
             Lida com as interfaces e a implementação das classes e dos objetos.(Um exemplo da uma interface que lida com a implementação dos objetos seria o padrão de projeto Facade)
    #comportamento:
               Lida com as interações dinâmicas entre grupos de classes e objetos.(Um exemplo seria o padrão de projeto Observer no escuta um grupo de Objetos)
  • Só de saber que não existe Standard Patterns já dá pra matar a questão.
  • E pra ajudar eles colocaram na ordem:
    Criacional
    Estrutural
    Comportamental

ID
695263
Banca
FCC
Órgão
TRF - 2ª REGIÃO
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

Para facilitar a manutenção da aplicação, há um design pattern que tem como objetivo principal centralizar o acesso aos dados em uma única camada. Esse design pattern é o

Alternativas
Comentários
  • DAO (acrônimo de Data Access Object), é um padrão para persistência de dados que permite separar regras de negócio das regras de acesso a banco de dados. Numa aplicação que utilize a arquitetura MVC, todas as funcionalidades de bancos de dados, tais como obter as conexões, mapear objetos Java para tipos de dados SQL ou executar comandos SQL, devem ser feitas por classes de DAO.
  • Pensei que design pattern fosse sempre os definidos pelo GoF...  De qualquer maneira é um assunto recorrente.  Vejam a questão Q215387:

    Analise o texto:

    É um design pattern que permite que uma aplicação seja desenvolvida de forma que a camada de acesso aos dados seja isolada das camadas superiores. Numa aplicação que utiliza a arquitetura MVC, todas as funcionalidades de bancos de dados, tais como estabelecimento de conexões, mapeamento de objetos Java para tipos de dados SQL ou execução de comandos SQL, devem ser feitas por classes representadas nesse design pattern.

  • Temos o GoF, temos o Java EE e o GRASP, todos são Padrão de Projetos

     

    O GRASP, acrônimo de General Responsability Assignment Software Patterns (ou Principles), consiste em um conjunto de práticas que descrevem os princípios fundamentais de atribuição de responsabilidade a objetos, expressas na forma de padrões

  • Gabarito: C

    --

    Dava para matar a questão se você soubesse o que significa DAO (Data Access Object) e relacionasse com a frase: 'design pattern que tem como objetivo principal centralizar o acesso aos dados em uma única camada'


ID
704302
Banca
CESPE / CEBRASPE
Órgão
MPE-PI
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

Supondo que um sistema tenha sido desenvolvido e documentado
de acordo com os conceitos da análise e do projeto orientado a
objetos e tenha sido utilizada, como ferramenta para modelagem, a
UML (Unified Modeling Language), versão 2.0, julgue os próximos
itens.

O padrão de projeto conhecido como façade é indicado para a definição de uma interface de nível mais alto que torne mais fácil a comunicação entre os subsistemas de um sistema complexo.

Alternativas
Comentários
  • Vale lembrar que o Facade é um D.P do tipo estrutural.

    Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. This can be used to simplify a number of complicated object interactions into a single interface.


    Fonte: http://c2.com/cgi/wiki?FacadePattern

  • Façade: Classificado como estrutural e escopo objeto.
    Objetivo: Prover uma interface unificada para o conjunto de interfaces de um subsistema. Define uma interface de alto nível que faz um subsistema mais fácil de usar.
    Motivação: Estruturar um sistema em subsistemas contribui para reduzir sua complexidade. A dependência entre subsistemas pode ser minimizada através do uso de um objeto Fachada, o qual provê uma interface única e uniforme para as diversas funcionalidades de um subsistema.
    Consequências: Promove acoplamento fraco entre o subsistema e seus clientes; No entanto, não evita que aplicações possam acessar diretamente as subclasses do sistema, se assim o desejarem.

ID
720514
Banca
ESAF
Órgão
CGU
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Ao longo das últimas décadas, a engenharia de software fez progressos significativos no campo de padrões de projeto – arquiteturas comprovadas para construir software orientado a objetos flexível e fácil de manter. Com relação ao padrão Facade, é correto afirmar que

Alternativas
Comentários
  • Façade:do tipo estrutural, é um objeto que disponibiliza uma interface simplificada para uma das funcionalidades de uma API:

    -tornar uma biblioteca de software mais fácil de entender e usar;
    -tornar o código que utiliza esta biblioteca mais fácil de entender;
    -reduzir as dependências em relação às características internas de uma biblioteca, trazendo flexibilidade no desenvolvimento do sistema;
    -envolver uma interface com uma de melhor design.

  •    Um façade é um padrão de projeto (design pattern) do tipo estrutural. Os façades são muito comuns em projeto orientados a objeto. Por exemplo, a biblioteca padrão da linguagem Java contém dúzias de classes para processamento do arquivo fonte de um caractere, geração do seu desenho geométrico e dos pixels que formam este caractere. Entretanto, a maioria dos programadores Java não se preocupam com esses detalhes, pois a biblioteca contém as classes do tipo façade (Font e Graphics) que oferecem métodos simples para as operações relacionadas com fontes.

  •     a) fornece um objeto representante ou um marcador de outro objeto para controlar o acesso ao mesmo. (Proxy)

        b) define o esqueleto de um algoritmo em uma operação, postergando a definição de alguns passos para subclasses. - (Template Method)

        c) define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada. - (Factory Method)

        d) fornece uma interface unifucada para um conjunto de interfaces em um subsistema. (Facade)

        e) define uma dependência “um para muitos” entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes são automaticamente notificados e atualizados. (Observer)

ID
720517
Banca
ESAF
Órgão
CGU
Ano
2008
Provas
Disciplina
Arquitetura de Software
Assuntos

Quanto à finalidade, os padrões de projeto podem ser classificados em padrões de criação, padrões de estrutura ou padrões comportamentais. Correspondem à categoria de padrões estruturais:

Alternativas
Comentários
  • Questão bem decoreba
    Mas sem mimimi:
    Os padrões "GoF" são organizados em 3 famílias :
    1) Padrões de criação : relacionados à criação de objetos
    2) Padrões estruturais : tratam das associações entre classes e objetos.
    3) Padrões comportamentais : tratam das interações e divisões de responsabilidades entre as classes ou objetos.

    Letra A está errada porque Prototype é um padrão de criação
    Letra B está correta
    Letra C está errada porque Factory Method é de criação e Template Method é comportamental
    Letra D está errada porque Builder é de criação, Template Method e Strategy são comportamentais
    Letra E errada porque Singleton é de criação



    Fonte: http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software

    Abs e bons estudos
  • Frase para "fixar" os padrões Estruturais: 

    "Adaptação da ponte composta por 
    fachada com decoração aproxima peso-mosca."

    Padrões Estruturais: Adapter, Bridge, composite, facade, Decorator, Proxy e Flyweigth!Espero que o BIZÚ tenha ajudando!Bons estudos. 

  • Vai abaixo o meu resumo para quem quiser:

     

    1) Padrões Comportamentais: maneiras pelas quais classes e objetos interagem e distribuem responsabilidades.

    * Strategy: define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis.
    * Chain of Responsibility: encadeia os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate.
    * Iterator: acessar sequencialmente os elementos de um objeto.
    * State: permite que um objeto mude o seu comportamento quando o seu estado interno mudar.
    * Command: encapsula uma requisição como um objeto, deixando-o parametrizar clientes com diferentes requisições.
    * Observer: quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.
    * Visitor: representa uma operação a ser executada sobre os elementos da estrutura de um objeto.
    * Memento: captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.
    * Mediator: encapsula a forma como um conjunto de objetos interage.
    * Template Method: esqueleto de um algoritmo em uma operação, deferindo alguns passos para as subclasses.
    * Interpreter: dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador para as sentenças dessa linguagem.

    2) Padrões Criacionais: processo de criação de objetos:

    * Abstract Factory: interface para criar famílias de objetos relacionados.
    * Builder: criação de objeto complexo com representações diferentes, construindo partes de objetos passo a passo.
    * Factory Method: define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
    * Prototype: cria objetos usando uma instância prototípica (clone).
    * Singleton: garante que uma classe possua apenas uma única instância e provê um ponto de acesso global a ela.

     

    3) Padrões Estruturais: composição de classes e objetos:

    * Adapter: converte a interface de uma classe em outra .
    * Bridge: desacopla uma interface de sua implementação.
    * Composite: compõe zero ou mais objetos similares de forma que eles possam ser manipulados como um só (montagem de árvore).
    * Decorator: anexa responsabilidades adicionais a um objeto dinamicamente.
    * Proxy: substituto ou ponto de acesso através do qual um objeto possa controlar o acesso a outro.
    * Façade: interface unificada para um conjunto de interfaces de um subsistema.
    * Flyweigth: usa compartilhamento para suportar grandes quantidades de objetos, tornando o objeto mais leve que o original.


ID
748090
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

Um sistema está organizado segundo uma arquitetura em camadas, no qual cada camada corresponde a um pacote Java. A camada de serviços, ServiceLayer, possui dezenas de classes, que colaboram entre si para fornecer os serviços necessários. Para facilitar o acesso aos serviços disponíveis, o pacote em questão disponibiliza algumas interfaces, que agrupam operações de acordo com a natureza do serviço. As classes que implementam esses serviços, entretanto, não são visíveis fora do pacote. Dessa forma, o pacote fornece uma classe pública, Services, onde existem métodos estáticos que retornam objetos que implementam os serviços disponíveis. O código Java a seguir exemplifica o que foi descrito.

package ServiceLayer;
public interface ServiceA {
          int srvA1();
          int srvA2();
          int srvA3();
}
package ServiceLayer;
public interface ServiceB {
          int srvB1();
          int srvB2();
}
package ServiceLayer;
public class Services {
          private Services() {
          }
public static ServiceA serviceA() {
                    return new CL01();
          }
          public static ServiceB serviceB() {
                    return new CL01();
          }
}
package ServiceLayer;
class CL01 implements ServiceA, ServiceB{
          public int srvA1()
          { // código irrelevante }
          public int srvA2()
          { // código irrelevante }
          public int srvA3()
          { // código irrelevante }
          public int srvB1()
          { // código irrelevante }
          public int srvB2()
          { // código irrelevante }
}


O trecho de código a seguir mostra como os serviços disponíveis são executados.

{
          ServiceA s1=Services.serviceA();
          ServiceB s2=Services.serviceB();
          s1.srvA1();
          s2.srvB1();
          // código irrelevante
}



Essa arquitetura usou variações de dois padrões de projeto conhecidos, que são:

Alternativas
Comentários
  • Façade (Padrão de Projeto - Estrutural): 

    - Fornece uma interface unificada para um conjunto de interfaces de um subsistema;

    - Definir uma interface de nível mais alto que torna os subsistemas mais fáceis de serem utilizados

     

    Factory Method (Padrão de Projeto - Criacional): 

    - Definir uma interface para criação de um objeto, deixando as subclasses decidirem que classe instanciar

    - As subclasses determinam quais classes concretas serão criadas


ID
773449
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

A engenharia de software busca sistematizar a produção de
software com qualidade. No que concerne ao estágio de projeto,
julgue os seguintes itens.

O projeto de software deve identificar os possíveis desvios do comportamento de um sistema. Cada exceção pode ser tratada por meio de um dos seguintes modos: tentar realizar novamente um serviço que falhou, corrigir algum aspecto do serviço antes de tentar realizá-lo novamente ou relatar o serviço não realizado para outro componente de tratamento de erro.

Alternativas
Comentários
  • não sei da onde o examinador tirou isso, mas parece fazer sentido

  • MR. Robot, compartilho da mesma reflexão! rsrs


ID
776506
Banca
CESGRANRIO
Órgão
Chesf
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

Durante o desenvolvimento de um sistema para suporte a uma rede social, um desenvolvedor decidiu criar a facilidade de uma pessoa ter uma lista de amigos para poder enviar e-mails, postagens e/ou fotos. Essa lista pode conter um número indefinido de amigos ou de outras listas de amigos, criando uma estrutura recursiva.

O padrão de projeto que descreve essa estrutura é

Alternativas
Comentários
  • Composite é, normalmente, utilizado para representar listas recorrentes ou recursivas de elementos
  • Dá pra matar pelo final da questão "O padrão de projeto que descreve essa estrutura é". Composite é o único estrutural.

    Abstract Factory (Criação)
    Chain of Responsability (Comportamental)
    Composite (Estrutural)
    Iterator (Comportamental)
    Module (não exite, ou pelo menos não faz parte do GoF)
  • Discordo do Willian, pois a estrutura descrita podia ser relacionada à outro propósito, como de criação ou o comportamental. Então dessa forma eu posso concluir que quando se encontrar a descrição de uma estrutura de um padrão de projetos ele sempre sera do tipo estrutural?!?!?!?! Não né!!!!!

    Tem que entender que o padrão Composite trata todos os elementos como sendo do mesmo tipo, como sendo componentes, na forma de uma árvore, mas internamente são tratados de forma diferente, e quando necessário usará a recursividade como é o caso da questão onde a lista de amigos pode possuir uma outra lista de amigos e assim consecutivamente.
  • Falou de recursividade, árvore, estruturas semelhantes... só pode ser Composite!
  • E eu discordo do Marcelo Duarte!
    auhauhauahuhauahuahuahauhau

  • Discordo plenamente do Marcelo Duarte tb
    Totalmente equivocado auhahuhaua

  • Estrutura recursiva = árvore. Ficaria mais fácil se falassem sobre árvore


ID
783649
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue o item  que se segue, acerca de qualidade de software, linguagens de programação e padrões de projetos.

O padrão Singleton garante que uma classe tenha somente uma instância, fornecendo, assim, um ponto global de acesso a essa instância.

Alternativas

ID
783652
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue o item  que se segue, acerca de qualidade de software, linguagens de programação e padrões de projetos.

O padrão Facade assemelha-se ao Mediator no aspecto em que este abstrai um subsistema de objetos a fim de fornecer uma interface encapsulada na forma como um conjunto de objetos interage entre si.

Alternativas
Comentários
  • Gabarito: Errado

    --

    O Padrão Facade é do tipo estrutural . É usado quando um sistema é muito complexo ou difícil de entender, já que possui um grande número de classes independentes ou se trechos de código fonte estão indisponíveis. Este padrão esconde as complexidades de um sistema maior e provê uma interface simplificada ao cliente. Tipicamente envolve uma única classe responsável por englobar uma série de membros requeridos pelo cliente. Estes membros acessam o sistema em nome do Facade e escondem os detalhes de implementação.

    O padrão Façade é do tipo estrutural e o padrão mediator é do tipo comportamental.

    fonte:

  • Apenas para tecer algumas considerações:

    Sim, eles assemelham-se. Entretanto, a afirmação diz que o Mediator abstrai um subsistema de de objetos a fim de fornecer uma interface encapsulada na forma como um conjunto de objetos interage entre si.

    Ao meu ver, misturou as definições. Mediator modifica a forma como objetos (internos) interagem entre si. Entretanto, Façade abstrai a complexidade de um sistema interno com relação a um acesso de fora para dentro, se tornando a porta de entrada. Quem está fora não precisa saber como as coisas ocorrem dentro.


ID
783655
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue o item  que se segue, acerca de qualidade de software, linguagens de programação e padrões de projetos.

O padrão Prototype pode ser usado no desenvolvimento de programas escritos com a linguagem PHP 5.0, atuando como padrão estrutural que permite construir tanto classes quanto objetos.

Alternativas
Comentários
  • Padrão criacional e não estrutural.

     

    Gabarito: Errado

  • Padrão de projeto de software Criacional que permite a criação de novos objetos a partir de um modelo original ou protótipo que é clonado.


ID
783664
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue o item  que se segue, acerca de qualidade de software, linguagens de programação e padrões de projetos.

Os padrões de projeto são úteis tanto na fase de planejamento da arquitetura quanto na de desenvolvimento e codificação.

Alternativas
Comentários
  • 'Design patterns may be viewed as a structured approach to computer programming intermediate between the levels of a programming paradigm and a concrete algorithm." FONTE: https://www.wikiwand.com/en/Software_design_pattern


ID
783667
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Julgue o item  que se segue, acerca de qualidade de software, linguagens de programação e padrões de projetos.

O padrão Abstract Factory é corretamente aplicável, quando necessário, para fornecer uma biblioteca de classes e não revelar suas interfaces.

Alternativas
Comentários
  • Abstract Factory é um padrão de projeto de software (também conhecido como design pattern em inglês). Este padrão permite a criação de famílias de objetos relacionados ou dependentes por meio de uma única interface e sem que a classe concreta seja especificada.

     

    O padrão Abstract Factory pode ser utilizado na implementação de um toolkit que disponibilize controles que funcionem em diferentes interfaces gráficas, tal como Motif, GTK+ (GNOME) ou Qt (KDE). Estas GUIs possuem diferentes padrões de controles visuais e, para facilitar a construção de aplicativos que interajam facilmente com diferentes interfaces gráficas, é interessante que se defina interfaces comuns para acesso aos controles, independentemente da GUI utilizada. Este problema pode ser resolvido por meio de uma classe abstrata que declara uma interface genérica para criação dos controles visuais e de uma classe abstrata para criação de cada tipo de controle. O comportamento específico, de cada um dos padrões tecnológicos contemplados, é implementado por meio de uma classe concreta. O aplicativo, ou "cliente", interage com o toolkit por meio das classes abstratas sem ter conhecimento da implementação das classes concretas.

     

    FONTE: https://www.wikiwand.com/pt/Abstract_Factory


ID
784708
Banca
ESAF
Órgão
CGU
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

O padrão de projeto singleton é usado para restringir

Alternativas
Comentários
  • Singleton Pattern restringe instânciação de classes p/ 1 objet, quando somente 1 objeto irá coordenar ações no sistema. O termo em geral é usado p/ projetos que funcionam melhor com somente 1 objeto, suficiente p/ classe e disponível globalmente.
  • SINGLETON:
    Intenção:
    Garantir que uma classe tenha somente uma instância e fornecer um ponto global de acesso a mesma.

    (Fonte: Padrões de Projeto, GOF, pag 130)
    Gabarito letra "B".

ID
784714
Banca
ESAF
Órgão
CGU
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

O padrão de projeto Factory provê uma classe de decisão que retorna

Alternativas
Comentários
  •  Factory Method: Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar. Através de alguma condição, será decidida qual classe realmente será instanciada.
  • Eu não concordo que deve ter um parâmetro recebido. Pelo que eu entendi, o Factory Method é um método que retorna uma implementação de uma interface específica por exemplo Fruta. Podemos ter por exemplo uma super classe qualquer, com um método abstrato que retorna Fruta. Em cada uma das subclasses, este método irá retornar uma fruta diferente. 

    Fontes:
    http://en.wikipedia.org/wiki/Factory_method_pattern
    http://stackoverflow.com/questions/1001767/what-is-the-basic-difference-between-factory-and-abstract-factory-patterns
    http://stackoverflow.com/questions/5739611/differences-between-abstract-factory-pattern-and-factory-method
  • Guilherme,
    Concordo com você. Cada uma das subclasses vai retornar um tipo de objeto (fruta). Porém, como você vai informar qual subclasse irá retornar? Com a utilização de um parâmetro recebido.
  • Rosa, 
     
    Estudei mais sobre o assunto aqui, entendi melhor e tentarei explicar melhor.
     
    Fato é que Factory Method se refere a um método que funciona como uma fábrica de objeto. Pode criar vários objetos que são subclasse ou implementação de Fruta por exemplo. Pode criar Banana, Abaxi, etc. 
     
    A passagem de parâmetros para este método é irrelevante. Quem decide qual implementação de Fruta criar não é quaisquer parâmetros que sejam passados, e vou explicar abaixo o porquê. O único padrão criacional que exige parâmetros para criar objeto é o Builder, mas mesmo assim nem é para definir o tipo do objeto a ser criado e sim para definir suas características.
     
    Vamos agora à descrição geral para Factory Method descrita no livro dos GoF:
    "Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses."
     
    O exemplo é ruim, mas com a Fruta, nós teremos mais uma interface a Prateleira. Frutas ficam em prateleiras, mas cada prateleira armazena tipos de frutas diferentes. Temos então:
     
    public interface Prateleira(){
           public void criarFrutaNovaParaPorNaPrateleira();
           public Fruta getFruta();
    }
     
    public interface Fruta(){...}
     
     
    A fábrica então é o método criarFrutaNovaParaPorNaPrateleira. Em cada uma das implementações de Prateleira, poderá ter uma instanciação de Fruta diferente dentro do método criarFrutaNovaParaPorNaPrateleira(). Não tem nada haver com parâmetros. Quem define o tipo de objeto a ser criado são as diferentes implementações do método fábrica abstrato. Cada implementação de Prateleira, instancia um tipo de Fruta diferente.
     
    Agora se você quer passar um parâmetro para o método getFruta, para retornar por exemplo uma melancia com id tal, isso é irrelevante para o padrão. O padrão explica o processo de criação e não de retorno de objetos.
  • Suponha que tenho a classe abstrata Pessoa, e 2 subclasses Homen e Mulher que extendem a classe Pessoa. (abstrai a classe, o que vale é o conceito).

    Agora vamos a nossa CLASSE DE DECISÃO, conforme o enunciado:

    public class FactoryPessoa {
         public Pessoa getPessoa(String nome, String sexo){
              if(sexo.equals("H")){
                     return new Homem(nome);
              }
              if(sexo.equals("M")){
                     return new Mulher(nome);
              }
         }
    }

    percebeu o uso do parâmetro?

    Acredito que vc esteja se prendendo muito ao termo "INTERFACE" do conceito de Factory Method!

    Fonte: Prof. Pedrosa
  • Como já colocado, o FactoryMethod torna possível a criação de famílias de objetos relacionados sem especificar classes concretas(deixando para as subclasses decidirem quais objetos criar). Na situação colocada abaixo pelo colega, como eu vou saber como saudar corretamento o homem, do sexo masculino, Sr, e a mulher, do sexo feminino, Sra??? Hora, passando um parâmetro, M ou F.

    Poderiamos colocar essa logica em tempo de execuco; o ruim dissso são os vários ifs e elses no cliente q poluem e tornam o codigo de dificil manutencao. Assim, temos toda a logica de decisao na factory(mostrada abaixo).




  • Roger, 

    Acho que você quis dizer Abstract Factory não?




ID
792454
Banca
ESAF
Órgão
Receita Federal
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

Os padrões de projeto (Design Patterns) são classificados nas categorias:

Alternativas
Comentários
  • Podem ser classificados por propósito
    • Padrões de Criação: Abstraem o processo de criação de objetos a partir da instanciação de classes
    • Padrões Estruturais:Tratam da forma como classes e objetos estão organizados para formar estruturas maiores
    • Padrões Comportamentais: Preocupam-se com algoritmos e responsabilidades dos objetos

ID
800764
Banca
Exército
Órgão
EsFCEx
Ano
2011
Provas
Disciplina
Arquitetura de Software
Assuntos

Segundo a classificação do Gang of Four (GoF), os padrões de projeto que possuem respectivamente os propósitos COMPORTAMENTAL, CRIAÇÃO e ESTRUTURAL, são:

Alternativas

ID
814135
Banca
FAPERP
Órgão
TJ-PB
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

São exemplos de padrões comportamentais de projeto:

Alternativas
Comentários
  • Os padrões "GoF" são organizados em 3 famílias :

    Padrões de criação : relacionados à criação de objetos.

    Padrões estruturais : tratam das associações entre classes e objetos.
    Padrões comportamentais : tratam das interações e divisões de responsabilidades entre as classes ou objetos.

    Padrões "GoF" organizados nas suas 3 famílias:

    Padrões de criação

    Abstract Factory; Builder; Factory Method ; Prototype; Singleton

    Padrões estruturais

    Adapter; Bridge; Composite; Decorator; Façade (ou Facade); Flyweight; Proxy

    Padrões comportamentais

    Chain of Responsibility; Command; Interpreter; Iterator; Mediator; Memento; Observer; State; Strategy; Template Method; Visitor.
    Fonte: https://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software


ID
827920
Banca
CESPE / CEBRASPE
Órgão
TJ-RO
Ano
2012
Provas
Disciplina
Arquitetura de Software
Assuntos

O padrão de projeto JEE (J2EE patterns) que é utilizado para solucionar problemas de acesso e manipulação de dados em uma camada separada e que implementa mecanismos de acesso para persistência de dados, em arquitetura mainframes, LDAP ou sistemas gerenciadores de banco de dados relacionais é denominado

Alternativas
Comentários
  • Quando falamos de camada de dados em padrões de projeto, considere sempre o DAO. Mesmo quando a banca fala sobre outras tecnologias como LDAP e mainframes, provavelmente para confundir o candidato, apenas o DAO pode manipular dados em uma camada separada.


ID
898153
Banca
CESGRANRIO
Órgão
BNDES
Ano
2013
Provas
Disciplina
Arquitetura de Software
Assuntos

O padrão de projeto Proxy é uma solução adequada para alguns problemas de design, EXCETO:

Alternativas
Comentários
  • c)fornecer uma interface mais adequada do que a oferecida pelo objeto que ele representa. [Padrão de Projeto Adapter]


ID
913825
Banca
FCC
Órgão
DPE-SP
Ano
2013
Provas
Disciplina
Arquitetura de Software
Assuntos

Um design pattern descreve uma solução geral comprovada e reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos. Padrões de projeto ajudam a reconhecer e implementar boas soluções para problemas comuns. Dois dos principais design patterns utilizados atualmente são descritos a seguir:

I. Visa garantir que uma classe só tenha uma única instância e prover um ponto de acesso global a ela.

II. Visa definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado os seus dependentes sejam notificados e atualizados automaticamente.

Os design patterns descritos em I e II são, respectivamente:

Alternativas
Comentários
  • Singleton -
    Visa garantir que uma classe só tenha uma única instância e prover um ponto de acesso global a ela.
    Observer -
    Visa definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado os seus dependentes sejam notificados e atualizados automaticamente.
    Facade - Visa simplificar o acesso a diversas classes complexas (ex. uma API). Por exemplo, o envio de e-mail, ao invés de instanciar várias classes e executar diversos métodos, é criada um classe com o método enviarEmail(args[]) que faz tudo isto, encapsulando o restante para o programador.
    Adapter - Este padrão é utilizado para 'adaptar' a interface de uma classe. O Adapter permite que classes com interfaces incompatíveis possam interagir. Funciona como um adaptador, por exemplo, posso ter dados em um arquivo XML e em uma base de dados, crio adpatadores para acessar tanto a base quanto o XML que possuam os mesmos atributos e métodos, Depois posso criar uma classe que consolide estes dois adaptadores para ser usada pelo programador.
    Composite -
    é um padrão de projeto de software utilizado para representar um objeto que é constituído pela composição de objetos similares a ele. Neste padrão, o objeto composto possui um conjunto de outros objetos que estão na mesma hierarquia de classes a que ele pertence. O padrão composite é normalmente utilizado para representar listas recorrentes - ou recursivas - de elementos. Além disso, esta forma de representar elementos compostos em uma hierarquia de classes permite que os elementos contidos em um objeto composto sejam tratados como se fossem um único objeto. Desta forma, todos os métodos comuns às classes que representam objetos atômicos da hierarquia poderão ser aplicáveis também ao conjunto de objetos agrupados no objeto composto.
  • Os padrões de projetos do GOF são 23, divididos em três grupos: Criacionais (5), estruturais (7) e comportamentais (11)

    CRIACIONAL: Abrange a configuração e inicialização de objetos e classes. 
    ESTRUTURAL: Lida com as interfaces e a implementação das classes e dos objetos. 
    COMPORTAMENTAL: Lida com as interações dinâmicas entre grupos de classes e objetos. 

    Singleton pertence ao grupo criacional e o Observer ao comportamental.

    Facade, adapter, composite = estruturais

    Command = comportamental

    O ideal no estudo dos padrões é entendê-los, por isso recomendo videoaulas do www.provasdeti.com.br, pois são padrões difíceis de entender apenas estudando pelo livro Design Patterns, os exemplos do livro e a abordagem utilizada não é muito amigável.

  • a-

    Conforme os nomes dizem, singleton remete à simples instancia, enquanto que observer observa as dependencias e as atualiza em caso de alterações de estado.