SlideShare uma empresa Scribd logo
1 de 15
Grupo GWTED
Davidson S. Marques
Elias Rodrigues de Oliveira
Gabriela Borges Diniz Teixeira
Thiago César Eufrásio da Costa
Walter Freitas de Brito
É um padrão de projeto que permite a criação de objetos a partir de um
modelo original, ou seja, foi criado com o objetivo de especificar os tipos
de objetos a serem criados usando uma instância-protótipo e criar novos
objetos pela cópia desse protótipo. Efetivamente, cada objeto é um factory
especializado em construir objetos iguais a si mesmo.
O padrão Prototype contém os seguintes elementos:

• Prototype - uma classe que declara uma interface para objetos capazes
  de clonar a si mesmo;
• Prototype concreto - implementação de um prototype;
• Cliente - cria um novo objeto através de um prototype que é capaz de
  clonar a si mesmo.
O padrão Prototype exige a implementação de uma operação de clonagem
em cada uma das classes concretas do protótipo. Esta tarefa pode ser
inconveniente, no caso do reaproveitamento de classes pré-existentes que
não possuem tal operação, ou mesmo complexa, se for considerada a
possibilidade de existirem referências circulares nos atributos de um
objeto (um objeto possui um atributo que referência um objeto que, por
sua vez, referência o objeto original).
O padrão Prototype pode ser utilizado em sistemas que precisam ser
independentes da forma como os seus componentes são
criados, compostos e representados. O padrão Prototype pode ser útil em
sistemas com as seguintes características:

• Sistemas que utilizam classes definidas em tempo de execução;
• Sistemas que utilizam o padrão Abstract Factory para criação de objetos.
  Neste caso, a hierarquia de classes pode se tornar muito complexa e o
  padrão Prototype pode ser uma alternativa mais simples, por realizar a
  mesma tarefa com um número reduzido de classes;
• Sistemas que possuem componentes cujo estado inicial possui poucas
  variações e onde é conveniente disponibilizar um conjunto pré-estabelecido
  de protótipos que dão origem aos objetos que compõem o sistema.
Use o padrão Prototype quando um sistema tiver que ser independente de
como os seus produtos são criados, compostos e representados e:
Quando as classes a instanciar forem especificadas em tempo de
execução, por exemplo, por carga dinâmica;
Para evitar a construção de uma hierarquia de classes de fábricas paralela à
hierarquia de classes de produto;
Quando as instâncias de uma classe puderem ter uma dentre poucas
combinações diferentes de estados. Pode ser mais conveniente instalar um
número correspondente de protótipos e cloná-los, ao invés de instanciar a
classe manualmente, cada vez com um estado apropriado.
Cada subclasse de Prototype deve implementar a operação clone, o que
pode ser difícil. Por exemplo, acrescentar clone é difícil quando as classes
consideradas já existem. A implementação de clone pode ser complicada
quando uma estrutura interna da classe inclui objetos que não suportam
operação de cópia ou têm referencias circulares.
Diagrama de classe:
Classe Main – será responsável por fazer as solicitações de clones de ovelhas.
.
Classe PrototypeFactory – retorna o clone de objetos quando solicitado pela
classe Main.
Classe Ovelha – é o objeto que está sendo clonado. Ela implementa os
métodos da classe abstrata Animal.
Classe Animal – É uma classe
abstrata que implementa a
interface Cloneable do Java
que possui um método clone
responsável por retornar
clone de objetos quando
implementado corretamente.
Saída:
Prototype assim como os outros Padrões de Projetos podem ser
causadores de confiabilidade, reusabilidade e manutenibilidade de código.
Também podem ser capazes de economizar tempo e custo.
Podemos perceber que as vantagens são maiores que as desvantagens.
http://pt.wikipedia.org/wiki/Prototype
http://www.guj.com.br/content/articles/patterns/prototype_pattern_guj.pdf
http://www.devmedia.com.br/post-4597-Padroes-de-projeto-em--NET--Prototype.html

Mais conteúdo relacionado

Mais procurados

Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade IIJoão Lourenço
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClasseFelipe J. R. Vieira
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalizeArtur Todeschini
 
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDDABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDDRaphael Pacheco
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoMarconi Rodrigues
 

Mais procurados (16)

Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade II
 
Java básico
Java básicoJava básico
Java básico
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
v
vv
v
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
 
Aula5
Aula5Aula5
Aula5
 
OOP Java
OOP JavaOOP Java
OOP Java
 
Aula java[1]
Aula java[1]Aula java[1]
Aula java[1]
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalize
 
padrao de projeto0
padrao de projeto0padrao de projeto0
padrao de projeto0
 
Java 16
Java 16Java 16
Java 16
 
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDDABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
 
Semana 1 Technocorp
Semana 1 TechnocorpSemana 1 Technocorp
Semana 1 Technocorp
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 

Destaque

Aula 4 - Tecnicas de Prototipação I
Aula 4 - Tecnicas de Prototipação IAula 4 - Tecnicas de Prototipação I
Aula 4 - Tecnicas de Prototipação IPaolo Passeri
 
Técnica de prototipação - Aula 5
Técnica de prototipação - Aula 5Técnica de prototipação - Aula 5
Técnica de prototipação - Aula 5Guilherme Torres
 
Aula 5 - Tecnicas de Prototipação I
Aula 5 - Tecnicas de Prototipação IAula 5 - Tecnicas de Prototipação I
Aula 5 - Tecnicas de Prototipação IPaolo Passeri
 
Aula 6 - Tecnicas de Prototipação I
Aula 6 - Tecnicas de Prototipação IAula 6 - Tecnicas de Prototipação I
Aula 6 - Tecnicas de Prototipação IPaolo Passeri
 
Aula 2 - Técnicas de Prototipação I
Aula 2 - Técnicas de Prototipação IAula 2 - Técnicas de Prototipação I
Aula 2 - Técnicas de Prototipação IPaolo Passeri
 
Aula 3 - Técnicas de Prototipação I
Aula 3 - Técnicas de Prototipação IAula 3 - Técnicas de Prototipação I
Aula 3 - Técnicas de Prototipação IPaolo Passeri
 
Ferramentas de prototipação
Ferramentas de prototipaçãoFerramentas de prototipação
Ferramentas de prototipaçãoPaula P.
 
Aula 1 - Técnicas de PrototipaçãoI
Aula 1 - Técnicas de PrototipaçãoIAula 1 - Técnicas de PrototipaçãoI
Aula 1 - Técnicas de PrototipaçãoIPaolo Passeri
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de PrototipaçãoJuliano Pires
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de softwareMarcio Costa
 
Técnica de prototipação - Aula 1
Técnica de prototipação - Aula 1Técnica de prototipação - Aula 1
Técnica de prototipação - Aula 1Guilherme Torres
 
Prototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta FidelidadePrototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta FidelidadeErico Fileno
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de softwareleopp
 

Destaque (14)

Aula 4 - Tecnicas de Prototipação I
Aula 4 - Tecnicas de Prototipação IAula 4 - Tecnicas de Prototipação I
Aula 4 - Tecnicas de Prototipação I
 
Técnica de prototipação - Aula 5
Técnica de prototipação - Aula 5Técnica de prototipação - Aula 5
Técnica de prototipação - Aula 5
 
Aula 5 - Tecnicas de Prototipação I
Aula 5 - Tecnicas de Prototipação IAula 5 - Tecnicas de Prototipação I
Aula 5 - Tecnicas de Prototipação I
 
Aula 6 - Tecnicas de Prototipação I
Aula 6 - Tecnicas de Prototipação IAula 6 - Tecnicas de Prototipação I
Aula 6 - Tecnicas de Prototipação I
 
Aula 2 - Técnicas de Prototipação I
Aula 2 - Técnicas de Prototipação IAula 2 - Técnicas de Prototipação I
Aula 2 - Técnicas de Prototipação I
 
Aula 3 - Técnicas de Prototipação I
Aula 3 - Técnicas de Prototipação IAula 3 - Técnicas de Prototipação I
Aula 3 - Técnicas de Prototipação I
 
Ferramentas de prototipação
Ferramentas de prototipaçãoFerramentas de prototipação
Ferramentas de prototipação
 
Aula 1 - Técnicas de PrototipaçãoI
Aula 1 - Técnicas de PrototipaçãoIAula 1 - Técnicas de PrototipaçãoI
Aula 1 - Técnicas de PrototipaçãoI
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de Prototipação
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de software
 
Técnica de prototipação - Aula 1
Técnica de prototipação - Aula 1Técnica de prototipação - Aula 1
Técnica de prototipação - Aula 1
 
Prototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta FidelidadePrototipos de Baixa e Alta Fidelidade
Prototipos de Baixa e Alta Fidelidade
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de software
 
Prototipação
PrototipaçãoPrototipação
Prototipação
 

Semelhante a Prototype1 - thiago

Semelhante a Prototype1 - thiago (20)

Java7
Java7Java7
Java7
 
Padrão de Projetos singleton
Padrão de Projetos singletonPadrão de Projetos singleton
Padrão de Projetos singleton
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
 
padrao de projeto1
padrao de projeto1padrao de projeto1
padrao de projeto1
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
3- POO
3- POO3- POO
3- POO
 
Poo
PooPoo
Poo
 
padrao de projeto3
padrao de projeto3padrao de projeto3
padrao de projeto3
 
Refatorações
RefatoraçõesRefatorações
Refatorações
 
Java & orientação a objetos
Java & orientação a objetosJava & orientação a objetos
Java & orientação a objetos
 
java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
Abstract
AbstractAbstract
Abstract
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Construtor em Java
Construtor em JavaConstrutor em Java
Construtor em Java
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
 

Prototype1 - thiago

  • 1. Grupo GWTED Davidson S. Marques Elias Rodrigues de Oliveira Gabriela Borges Diniz Teixeira Thiago César Eufrásio da Costa Walter Freitas de Brito
  • 2. É um padrão de projeto que permite a criação de objetos a partir de um modelo original, ou seja, foi criado com o objetivo de especificar os tipos de objetos a serem criados usando uma instância-protótipo e criar novos objetos pela cópia desse protótipo. Efetivamente, cada objeto é um factory especializado em construir objetos iguais a si mesmo.
  • 3. O padrão Prototype contém os seguintes elementos: • Prototype - uma classe que declara uma interface para objetos capazes de clonar a si mesmo; • Prototype concreto - implementação de um prototype; • Cliente - cria um novo objeto através de um prototype que é capaz de clonar a si mesmo.
  • 4. O padrão Prototype exige a implementação de uma operação de clonagem em cada uma das classes concretas do protótipo. Esta tarefa pode ser inconveniente, no caso do reaproveitamento de classes pré-existentes que não possuem tal operação, ou mesmo complexa, se for considerada a possibilidade de existirem referências circulares nos atributos de um objeto (um objeto possui um atributo que referência um objeto que, por sua vez, referência o objeto original).
  • 5. O padrão Prototype pode ser utilizado em sistemas que precisam ser independentes da forma como os seus componentes são criados, compostos e representados. O padrão Prototype pode ser útil em sistemas com as seguintes características: • Sistemas que utilizam classes definidas em tempo de execução; • Sistemas que utilizam o padrão Abstract Factory para criação de objetos. Neste caso, a hierarquia de classes pode se tornar muito complexa e o padrão Prototype pode ser uma alternativa mais simples, por realizar a mesma tarefa com um número reduzido de classes; • Sistemas que possuem componentes cujo estado inicial possui poucas variações e onde é conveniente disponibilizar um conjunto pré-estabelecido de protótipos que dão origem aos objetos que compõem o sistema.
  • 6. Use o padrão Prototype quando um sistema tiver que ser independente de como os seus produtos são criados, compostos e representados e: Quando as classes a instanciar forem especificadas em tempo de execução, por exemplo, por carga dinâmica; Para evitar a construção de uma hierarquia de classes de fábricas paralela à hierarquia de classes de produto; Quando as instâncias de uma classe puderem ter uma dentre poucas combinações diferentes de estados. Pode ser mais conveniente instalar um número correspondente de protótipos e cloná-los, ao invés de instanciar a classe manualmente, cada vez com um estado apropriado.
  • 7. Cada subclasse de Prototype deve implementar a operação clone, o que pode ser difícil. Por exemplo, acrescentar clone é difícil quando as classes consideradas já existem. A implementação de clone pode ser complicada quando uma estrutura interna da classe inclui objetos que não suportam operação de cópia ou têm referencias circulares.
  • 9. Classe Main – será responsável por fazer as solicitações de clones de ovelhas. .
  • 10. Classe PrototypeFactory – retorna o clone de objetos quando solicitado pela classe Main.
  • 11. Classe Ovelha – é o objeto que está sendo clonado. Ela implementa os métodos da classe abstrata Animal.
  • 12. Classe Animal – É uma classe abstrata que implementa a interface Cloneable do Java que possui um método clone responsável por retornar clone de objetos quando implementado corretamente.
  • 14. Prototype assim como os outros Padrões de Projetos podem ser causadores de confiabilidade, reusabilidade e manutenibilidade de código. Também podem ser capazes de economizar tempo e custo. Podemos perceber que as vantagens são maiores que as desvantagens.