SlideShare uma empresa Scribd logo
 
	
  
Especialização	
  em	
  Desenvolvimento	
  Java	
  	
  
UML	
  e	
  Padrões	
  de	
  Projetos	
  	
  
AULA	
  05	
  –	
  PADRÕES	
  DE	
  CRIAÇÃO	
  	
  
Prof.	
  Vinícius	
  de	
  Paula	
  -­‐	
  viniciusdepaula@unitri.edu.br	
  
Padrões	
  de	
  Criação	
  	
  
Factory	
  Method	
  
ObjeNvo	
  segundo	
  o	
  GoF:	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 3
Factory	
  Method	
  
ObjeNvo	
  segundo	
  o	
  GoF:	
  
•  Definir	
   uma	
   interface	
   para	
   criar	
   um	
   objeto	
   mas	
   deixar	
   que	
   subclasses	
  
decidam	
  que	
  classe	
  instanciar.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 4
Factory	
  Method	
  
ObjeNvo	
  segundo	
  o	
  GoF:	
  
•  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	
  
instanciação	
  às	
  subclasses.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 5
Factory	
  Method	
  
ObjeNvo	
  segundo	
  o	
  GoF:	
  
•  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	
  
instanciação	
  às	
  subclasses.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 6
Encapsular a escolha da classe concreta a ser utilizada na criação
de objetos de um determinado tipo.
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 7
Estrutura do Factory Method, segundo GoF (pág. 122)
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 8
Estrutura do Factory Method, segundo GoF (pág. 122)
Classe	
  ou	
  interface	
  
que	
  define	
  o	
  objeto	
  a	
  
ser	
  criado	
  	
  
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 9
Estrutura do Factory Method, segundo GoF (pág. 122)
Classe	
  ou	
  interface	
  
que	
  define	
  o	
  objeto	
  a	
  
ser	
  criado	
  	
  
Uma	
  implementação	
  
parNcular	
  do	
  Npo	
  de	
  
objeto	
  a	
  ser	
  criado	
  	
  
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 10
Estrutura do Factory Method, segundo GoF (pág. 122)
Uma	
  implementação	
  
parNcular	
  do	
  Npo	
  de	
  
objeto	
  a	
  ser	
  criado	
  	
  
Classe	
  ou	
  interface	
  
que	
  define	
  o	
  objeto	
  a	
  
ser	
  criado	
  	
  
Classe	
  ou	
  interface	
  que	
  
define	
  a	
  assinatura	
  do	
  
método	
  responsável	
  pela	
  
criação	
  do	
  produto	
  	
  
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 11
Estrutura do Factory Method, segundo GoF (pág. 122)
Uma	
  implementação	
  
parNcular	
  do	
  Npo	
  de	
  
objeto	
  a	
  ser	
  criado	
  	
  
Classe	
  ou	
  interface	
  
que	
  define	
  o	
  objeto	
  a	
  
ser	
  criado	
  	
  
Classe	
  ou	
  interface	
  que	
  
define	
  a	
  assinatura	
  do	
  
método	
  responsável	
  pela	
  
criação	
  do	
  produto	
  	
  
Classe	
  que	
  implementa	
  
ou	
  sobrescreve	
  o	
  
método	
  de	
  criação	
  do	
  
produto	
  	
  	
  
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Considere	
   um	
   sistema	
   bancário	
   que	
   precisa	
   enviar	
   mensagens	
   aos	
   seus	
  
clientes.	
   Por	
   exemplo,	
   após	
   a	
   realização	
   de	
   uma	
   compra	
   com	
   cartão	
   de	
  
crédito,	
   uma	
   mensagem	
   contendo	
   informações	
   sobre	
   a	
   compra	
   pode	
   ser	
  
enviada	
  ao	
  cliente.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 12
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Considere	
   um	
   sistema	
   bancário	
   que	
   precisa	
   enviar	
   mensagens	
   aos	
   seus	
  
clientes.	
   Por	
   exemplo,	
   após	
   a	
   realização	
   de	
   uma	
   compra	
   com	
   cartão	
   de	
  
crédito,	
   uma	
   mensagem	
   contendo	
   informações	
   sobre	
   a	
   compra	
   pode	
   ser	
  
enviada	
  ao	
  cliente.	
  
Se	
   esse	
   cliente	
   for	
   uma	
   pessoa	
   sica,	
   poderá́	
   optar	
   pelo	
   recebimento	
   da	
  
mensagem	
   através	
   de	
   e-­‐mail	
   ou	
   SMS.	
   Por	
   outro	
   lado,	
   se	
   for	
   uma	
   pessoa	
  
jurídica,	
  poderá́	
  também	
  receber	
  a	
  mensagem	
  através	
  de	
  JMS.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 13
Factory	
  Method	
  
Cenário	
  Prá9co	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 14
Factory	
  Method	
  
Cenário	
  Prá9co	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 15
Cada mecanismo de envio será implementado por uma classe.
Podemos criar uma interface para padronizar essas classes e obter
polimorfismo entre seus objetos.
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Neste	
   aspecto	
   quando	
   for	
   necessário	
   enviar	
   uma	
   mensagem,	
   podemos	
  
uNlizar	
  diretamente	
  	
  os	
  emissores.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 16
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Neste	
   aspecto	
   quando	
   for	
   necessário	
   enviar	
   uma	
   mensagem,	
   podemos	
  
uNlizar	
  diretamente	
  	
  os	
  emissores.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 17
Emissor emissor = new EmissorSMS();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorEmail();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorJMS();
emissor.envia("UML e Padrões de Projeto");
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Neste	
   aspecto	
   quando	
   for	
   necessário	
   enviar	
   uma	
   mensagem,	
   podemos	
  
uNlizar	
  diretamente	
  	
  os	
  emissores.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 18
Emissor emissor = new EmissorSMS();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorEmail();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorJMS();
emissor.envia("UML e Padrões de Projeto");
Enviando	
  uma	
  
mensagem	
  por	
  SMS	
  
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Neste	
   aspecto	
   quando	
   for	
   necessário	
   enviar	
   uma	
   mensagem,	
   podemos	
  
uNlizar	
  diretamente	
  	
  os	
  emissores.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 19
Emissor emissor = new EmissorSMS();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorEmail();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorJMS();
emissor.envia("UML e Padrões de Projeto");
Enviando	
  uma	
  
mensagem	
  por	
  SMS	
  
Enviando	
  uma	
  
mensagem	
  por	
  Email	
  
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Neste	
   aspecto	
   quando	
   for	
   necessário	
   enviar	
   uma	
   mensagem,	
   podemos	
  
uNlizar	
  diretamente	
  	
  os	
  emissores.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 20
Emissor emissor = new EmissorSMS();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorEmail();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorJMS();
emissor.envia("UML e Padrões de Projeto");
Enviando	
  uma	
  
mensagem	
  por	
  SMS	
  
Enviando	
  uma	
  
mensagem	
  por	
  JMS	
  
Enviando	
  uma	
  
mensagem	
  por	
  Email	
  
Factory	
  Method	
  
Cenário	
  Prá9co	
  
Neste	
   aspecto	
   quando	
   for	
   necessário	
   enviar	
   uma	
   mensagem,	
   podemos	
  
uNlizar	
  diretamente	
  	
  os	
  emissores.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 21
Emissor emissor = new EmissorSMS();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorEmail();
emissor.envia("UML e Padrões de Projeto");
Emissor emissor = new EmissorJMS();
emissor.envia("UML e Padrões de Projeto");
Crie uma classe para testar os emissores.
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 22
public class TestaEmissor1 {
public static void main(String[] args) {
Emissor emissor;
emissor = new EmissorSMS();
emissor.envia("UML e Padrões de Projeto");
emissor = new EmissorEmail();
emissor.envia("UML e Padrões de Projeto");
emissor = new EmissorJMS();
emissor.envia("UML e Padrões de Projeto");
}
}
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 23
public class TestaEmissor1 {
public static void main(String[] args) {
Emissor emissor;
emissor = new EmissorSMS();
emissor.envia("UML e Padrões de Projeto");
emissor = new EmissorEmail();
emissor.envia("UML e Padrões de Projeto");
emissor = new EmissorJMS();
emissor.envia("UML e Padrões de Projeto");
}
}
Utilizando esta abordagem, o código que deseja enviar uma
mensagem referencia diretamente as classes que implementam
os mecanismos de envio.
Factory	
  Method	
  
•  Para	
  eliminar	
  essa	
  referência	
  direta	
  podemos	
  adicionar	
  um	
  
intermediário	
   entre	
   o	
   código	
   que	
   deseja	
   enviar	
   uma	
  
mensagem	
  e	
  as	
  classes	
  que	
  implementam	
  os	
  emissores.	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 24
Factory	
  Method	
  
•  Para	
  eliminar	
  essa	
  referência	
  direta	
  podemos	
  adicionar	
  um	
  
intermediário	
   entre	
   o	
   código	
   que	
   deseja	
   enviar	
   uma	
  
mensagem	
  e	
  as	
  classes	
  que	
  implementam	
  os	
  emissores.	
  
•  Esse	
  intermediário	
  será	
  responsável	
  pela	
  escolha	
  da	
  classe	
  
concreta	
   a	
   ser	
   uNlizada	
   para	
   criar	
   o	
   Npo	
   de	
   emissor	
  
adequado.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 25
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 26
public class EmissorCreator {
public static final int SMS = 0;
public static final int EMAIL = 1;
public static final int JMS = 2;
public Emissor create(int tipoEmissor) {
if(tipoEmissor == EmissorCreator.SMS) {
return new EmissorSMS();
} else if (tipoEmissor == EmissorCreator.EMAIL){
return new EmissorEmail();
} else if (tipoEmissor == EmissorCreator.JMS){
return new EmissorJMS();
} else {
throw new IllegalArgumentException("Tipo de Emissor não suportado");
}
}
}
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 27
public class EmissorCreator {
public static final int SMS = 0;
public static final int EMAIL = 1;
public static final int JMS = 2;
public Emissor create(int tipoEmissor) {
if(tipoEmissor == EmissorCreator.SMS) {
return new EmissorSMS();
} else if (tipoEmissor == EmissorCreator.EMAIL){
return new EmissorEmail();
} else if (tipoEmissor == EmissorCreator.JMS){
return new EmissorJMS();
} else {
throw new IllegalArgumentException("Tipo de Emissor não suportado");
}
}
}
Definimos uma classe intermediária que será responsável pela
criação dos emissores, tornando a classe que utiliza os emissores
menos dependente dos mecanismos de envio.
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 28
public class EmissorCreator {
public static final int SMS = 0;
public static final int EMAIL = 1;
public static final int JMS = 2;
public Emissor create(int tipoEmissor) {
if(tipoEmissor == EmissorCreator.SMS) {
return new EmissorSMS();
} else if (tipoEmissor == EmissorCreator.EMAIL){
return new EmissorEmail();
} else if (tipoEmissor == EmissorCreator.JMS){
return new EmissorJMS();
} else {
throw new IllegalArgumentException("Tipo de Emissor não suportado");
}
}
}
Altere a classe de teste dos emissores
para utilizar a classe EmissorCreator.
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 29
public class TestaEmissor2 {
public static void main(String[] args) {
Emissor emissor1, emissor2, emissor3;
EmissorCreator creator = new EmissorCreator();
emissor1 = creator.create(EmissorCreator.SMS);
emissor1.envia("UML e Padrões de Projeto");
emissor2 = creator.create(EmissorCreator.EMAIL);
emissor2.envia("UML e Padrões de Projeto");
emissor3 = creator.create(EmissorCreator.JMS);
emissor3.envia("UML e Padrões de Projeto");
}
}
Factory	
  Method	
  
•  E	
  se	
  a	
  parNr	
  de	
  agora	
  o	
  sistema	
  Nvesse	
  que	
  trabalhar	
  com	
  dois	
  
Npos	
   diferentes	
   de	
   envio	
   de	
   mensagens:	
   síncrono	
   e	
  
assíncrono.	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 30
Factory	
  Method	
  
•  E	
  se	
  a	
  parNr	
  de	
  agora	
  o	
  sistema	
  Nvesse	
  que	
  trabalhar	
  com	
  dois	
  
Npos	
   diferentes	
   de	
   envio	
   de	
   mensagens:	
   síncrono	
   e	
  
assíncrono.	
  
•  Como	
  poderíamos	
  especializar	
  o	
  criador	
  de	
  emissores?	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 31
Factory	
  Method	
  
•  E	
  se	
  a	
  parNr	
  de	
  agora	
  o	
  sistema	
  Nvesse	
  que	
  trabalhar	
  com	
  dois	
  
Npos	
   diferentes	
   de	
   envio	
   de	
   mensagens:	
   síncrono	
   e	
  
assíncrono.	
  
•  Como	
  poderíamos	
  especializar	
  o	
  criador	
  de	
  emissores?	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 32
Factory	
  Method	
  
•  E	
  se	
  a	
  parNr	
  de	
  agora	
  o	
  sistema	
  Nvesse	
  que	
  trabalhar	
  com	
  dois	
  
Npos	
   diferentes	
   de	
   envio	
   de	
   mensagens:	
   síncrono	
   e	
  
assíncrono.	
  
•  Como	
  poderíamos	
  especializar	
  o	
  criador	
  de	
  emissores?	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 33
Definindo subclasses
Factory	
  Method	
  
•  Com	
   base	
   no	
   novo	
   cenário,	
   novos	
   produtos	
   precisam	
   ser	
  
implementados.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 34
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 35
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 36
Implemente as classes necessárias para
testar a especialização do criador de
emissores.
Estrutura	
  do	
  Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 37
Estrutura	
  do	
  Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 38
Emissor
Estrutura	
  do	
  Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 39
Emissor
EmissorAssincronoSMS
EmissorAssincronoJMS
EmissorAssincronoEmail
Estrutura	
  do	
  Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 40
Emissor
EmissorAssincronoSMS
EmissorAssincronoEmail
EmissorAssincronoJMS
EmissorSincronoSMS
EmissorSincronoEmail
EmissorSincronoJMS
Estrutura	
  do	
  Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 41
Emissor
EmissorAssincronoSMS
EmissorAssincronoEmail
EmissorAssincronoJMS
EmissorSincronoSMS
EmissorSincronoEmail
EmissorSincronoJMS
EmissorCreator
Estrutura	
  do	
  Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 42
Emissor
EmissorAssincronoSMS
EmissorAssincronoEmail
EmissorAssincronoJMS
EmissorSincronoSMS
EmissorSincronoEmail
EmissorSincronoJMS
EmissorCreator
EmissorAssincronoCreator
EmissorSincronoCreator
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 43
public class TestaEmissor3 {
public static void main(String[] args) {
Emissor emissor1, emissor2, emissor3;
EmissorCreator creator = new EmissorSincronoCreator();
emissor1 = creator.create(EmissorCreator.SMS);
emissor1.envia("UML e Padrões de Projeto");
emissor2 = creator.create(EmissorCreator.EMAIL);
emissor2.envia("UML e Padrões de Projeto");
emissor3 = creator.create(EmissorCreator.JMS);
emissor3.envia("UML e Padrões de Projeto");
}
}
Factory	
  Method	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 44
public class TestaEmissor3 {
public static void main(String[] args) {
Emissor emissor1, emissor2, emissor3;
EmissorCreator creator = new EmissorSincronoCreator();
emissor1 = creator.create(EmissorCreator.SMS);
emissor1.envia("UML e Padrões de Projeto");
emissor2 = creator.create(EmissorCreator.EMAIL);
emissor2.envia("UML e Padrões de Projeto");
emissor3 = creator.create(EmissorCreator.JMS);
emissor3.envia("UML e Padrões de Projeto");
}
}
Factory Method permite que uma classe delegue a
responsabilidade de instanciação às subclasses.
Onde	
  podemos	
  ver	
  o	
  uso	
  do	
  Factory	
  Method?	
  
•  javax.xml.parsers	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 45
Onde	
  podemos	
  ver	
  o	
  uso	
  do	
  Factory	
  Method?	
  
•  java.sql.DriverManager	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 46
Abstract	
  Factory	
  
Abstract	
  Factory	
  
ObjeNvo	
  segundo	
  o	
  GoF:	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 48
Abstract	
  Factory	
  
ObjeNvo	
  segundo	
  o	
  GoF:	
  
•  Prover	
   uma	
   interface	
   para	
   criar	
   famílias	
   de	
   objetos	
   relacionados	
   ou	
  
dependentes	
  sem	
  especificar	
  suas	
  classes	
  concretas.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 49
Abstract	
  Factory	
  
ObjeNvo	
  segundo	
  o	
  GoF:	
  
•  Prover	
   uma	
   interface	
   para	
   criar	
   famílias	
   de	
   objetos	
   relacionados	
   ou	
  
dependentes	
  sem	
  especificar	
  suas	
  classes	
  concretas.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 50
Encapsular a escolha das classes concretas a serem utilizadas na
criação de objetos de diversas famílias.
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 51
Estrutura do Abstract Factory, segundo GoF (pág. 101)
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 52
Estrutura do Abstract Factory, segundo GoF (pág. 101)
Interface	
  que	
  define	
  as	
  
assinaturas	
  dos	
  métodos	
  
responsáveis	
  pela	
  criação	
  
dos	
  objetos	
  de	
  uma	
  família.	
  	
  
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 53
Estrutura do Abstract Factory, segundo GoF (pág. 101)
Interface	
  que	
  define	
  as	
  
assinaturas	
  dos	
  métodos	
  
responsáveis	
  pela	
  criação	
  
dos	
  objetos	
  de	
  uma	
  família.	
  	
  
Classe	
  que	
  implementa	
  os	
  
métodos	
  de	
  criação	
  dos	
  
objetos	
  de	
  uma	
  família.	
  	
  	
  
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 54
Estrutura do Abstract Factory, segundo GoF (pág. 101)
Interface	
  que	
  define	
  as	
  
assinaturas	
  dos	
  métodos	
  
responsáveis	
  pela	
  criação	
  
dos	
  objetos	
  de	
  uma	
  família.	
  	
  
Classe	
  que	
  implementa	
  os	
  
métodos	
  de	
  criação	
  dos	
  
objetos	
  de	
  uma	
  família.	
  	
  	
  
Interface	
  que	
  
define	
  um	
  Npo	
  de	
  
produto	
  	
  	
  
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 55
Estrutura do Abstract Factory, segundo GoF (pág. 101)
Interface	
  que	
  define	
  as	
  
assinaturas	
  dos	
  métodos	
  
responsáveis	
  pela	
  criação	
  
dos	
  objetos	
  de	
  uma	
  família.	
  	
  
Classe	
  que	
  implementa	
  os	
  
métodos	
  de	
  criação	
  dos	
  
objetos	
  de	
  uma	
  família.	
  	
  	
  
Implementação	
  
parNcular	
  de	
  um	
  
Npo	
  de	
  produto	
  	
  	
  
Interface	
  que	
  
define	
  um	
  Npo	
  de	
  
produto	
  	
  	
  
Abstract	
  Factory	
  
Cenário	
  Prá9co	
  
Estabelecimentos	
   comerciais	
   normalmente	
   oferecem	
   aos	
   clientes	
   diversas	
  
opções	
  de	
  pagamento.	
  Por	
  exemplo,	
  clientes	
  podem	
  efetuar	
  pagamentos	
  com	
  
dinheiro,	
  cartões	
  de	
  crédito	
  ou	
  débito,	
  entre	
  outros.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 56
Abstract	
  Factory	
  
Cenário	
  Prá9co	
  
Estabelecimentos	
   comerciais	
   normalmente	
   oferecem	
   aos	
   clientes	
   diversas	
  
opções	
  de	
  pagamento.	
  Por	
  exemplo,	
  clientes	
  podem	
  efetuar	
  pagamentos	
  com	
  
dinheiro,	
  cartões	
  de	
  crédito	
  ou	
  débito,	
  entre	
  outros.	
  
Pagamentos	
  com	
  cartão	
  são	
  realizados	
  por	
  meio	
  de	
  uma	
  máquina	
  de	
  cartão,	
  
oferecida	
  e	
  instaladas	
  por	
  empresas	
  como	
  Cielo	
  e	
  Redecard.	
  Geralmente,	
  essa	
  
máquina	
  é	
  capaz	
  de	
  lidar	
  com	
  cartões	
  de	
  diferentes	
  bandeiras	
  (como	
  Visa	
  e	
  
Mastercard).	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 57
Abstract	
  Factory	
  
Cenário	
  Prá9co	
  
Nosso	
   objeNvo	
   é	
   programar	
   essas	
   máquinas,	
   isto	
   é,	
   desenvolver	
   uma	
  
aplicação	
   capaz	
   de	
   se	
   comunicar	
   com	
   as	
   diferentes	
   bandeiras	
   e	
   registrar	
  
pagamentos.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 58
Abstract	
  Factory	
  
Cenário	
  Prá9co	
  
Nosso	
   objeNvo	
   é	
   programar	
   essas	
   máquinas,	
   isto	
   é,	
   desenvolver	
   uma	
  
aplicação	
   capaz	
   de	
   se	
   comunicar	
   com	
   as	
   diferentes	
   bandeiras	
   e	
   registrar	
  
pagamentos.	
  
No	
  momento	
  do	
  pagamento,	
  a	
  máquina	
  de	
  cartão	
  deve	
  enviar	
  informações	
  
relaNvas	
  à	
  transação	
  (como	
  valor	
  e	
  senha)	
  para	
  a	
  bandeira	
  correspondente	
  ao	
  
cartão	
   uNlizado.	
   Além	
   disso,	
   a	
   máquina	
   deve	
   aguardar	
   uma	
   resposta	
   de	
  
confirmação	
  ou	
  recusa	
  do	
  pagamento.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 59
Abstract	
  Factory	
  
•  Nossa	
   aplicação	
   será	
   composta	
   por	
   objetos	
   emissores	
   e	
  
receptores	
  de	
  mensagens.	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 60
Abstract	
  Factory	
  
•  Nossa	
   aplicação	
   será	
   composta	
   por	
   objetos	
   emissores	
   e	
  
receptores	
  de	
  mensagens.	
  
•  Como	
   o	
   protocolo	
   de	
   comunicação	
   de	
   cada	
   bandeira	
   é	
  
diferente,	
   teremos	
   um	
   emissor	
   e	
   um	
   receptor	
   para	
   cada	
  
bandeira.	
  
	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 61
Abstract	
  Factory	
  
•  Nossa	
   aplicação	
   será	
   composta	
   por	
   objetos	
   emissores	
   e	
  
receptores	
  de	
  mensagens.	
  
•  Como	
   o	
   protocolo	
   de	
   comunicação	
   de	
   cada	
   bandeira	
   é	
  
diferente,	
   teremos	
   um	
   emissor	
   e	
   um	
   receptor	
   para	
   cada	
  
bandeira.	
  
•  Criaremos	
   fábricas	
   específicas	
   para	
   cada	
   bandeira	
   que	
  
serão	
   responsáveis	
   pela	
   criação	
   dos	
   emissores	
   e	
  
receptores.	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 62
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 63
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 64
Implemente as classes necessárias para
testar o cenário proposto.
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 65
1
2
3
4
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 66
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 67
Interface que todas as fábricas
concretas devem implementar, o
que consiste em um conjunto de
métodos para fabricar produtos.
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 68
Interface que todas as fábricas
concretas devem implementar, o
que consiste em um conjunto de
métodos para fabricar produtos.
As fábricas concretas implementam as diferentes
famílias de produtos. Para criar um produto o
cliente usa uma destas fábricas.
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 69
Interface que todas as fábricas
concretas devem implementar, o
que consiste em um conjunto de
métodos para fabricar produtos.
As fábricas concretas implementam as diferentes
famílias de produtos. Para criar um produto o
cliente usa uma destas fábricas.
Esta é a família de produtos, cada
fábrica concreta pode produzir um
conjunto inteiro de produtos.
Abstract	
  Factory	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 70
public class TestaComunicadorFactory {
public static void main(String[] args) {
ComunicadorFactory comunicadorFactory = new VisaComunicadorFactory();
Emissor emissor = comunicadorFactory.createEmissor();
String transacao = "Valor=100;Senha=1234";
emissor.envia(transacao);
Receptor receptor = comunicadorFactory.createReceptor();
String mensagem = receptor.recebe();
System.out.println(mensagem);
}
}
Abstract	
  Factory	
  +	
  Factory	
  Method	
  
E	
  se	
  quiséssemos	
  combinar	
  os	
  dois	
  padrões?	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 71
Abstract	
  Factory	
  +	
  Factory	
  Method	
  
E	
  se	
  quiséssemos	
  combinar	
  os	
  dois	
  padrões?	
  
•  As	
   implementações	
   de	
   Abstract	
   Factory	
   podem	
  
acionar	
   os	
   Factory	
   Methods	
   para	
   criar	
   emissores	
   e	
  
receptores.	
  
	
  UML e Padrões de Projeto Centro Universitário do Triângulo 72
Abstract	
  Factory	
  +	
  Factory	
  Method	
  
E	
  se	
  quiséssemos	
  combinar	
  os	
  dois	
  padrões?	
  
•  As	
   implementações	
   de	
   Abstract	
   Factory	
   podem	
  
acionar	
   os	
   Factory	
   Methods	
   para	
   criar	
   emissores	
   e	
  
receptores.	
  
	
  UML e Padrões de Projeto Centro Universitário do Triângulo 73
public class VisaComunicadorFactory implements ComunicadorFactory {
private EmissorCreator emissorCreator = new EmissorCreator();
private ReceptorCreator receptorCreator = new ReceptorCreator();
public Emissor createEmissor() {
return emissorCreator.create(EmissorCreator.VISA);
}
public Receptor createReceptor() {
return receptorCreator.create(ReceptorCreator.VISA);
}
}
Abstract	
  Factory	
  +	
  Factory	
  Method	
  
E	
  se	
  quiséssemos	
  combinar	
  os	
  dois	
  padrões?	
  
•  As	
   implementações	
   de	
   Abstract	
   Factory	
   podem	
  
acionar	
   os	
   Factory	
   Methods	
   para	
   criar	
   emissores	
   e	
  
receptores.	
  
	
  UML e Padrões de Projeto Centro Universitário do Triângulo 74
public class VisaComunicadorFactory implements ComunicadorFactory {
private EmissorCreator emissorCreator = new EmissorCreator();
private ReceptorCreator receptorCreator = new ReceptorCreator();
public Emissor createEmissor() {
return emissorCreator.create(EmissorCreator.VISA);
}
public Receptor createReceptor() {
return receptorCreator.create(ReceptorCreator.VISA);
}
}
Altere a implementação de forma que os
emissores e receptores sejam criados por
Factory Methods
Padrão	
  DAO	
  
•  O	
   padrão	
   DAO	
   (Data	
   Access	
   Object)	
   tem	
   como	
   objeNvo	
   construir	
   uma	
  
camada	
   de	
   acesso	
   aos	
   dados	
   de	
   forma	
   a	
   isolar	
   a	
   camada	
   do	
   modelo	
   da	
  
camada	
  de	
  persistência.	
  	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 75
DB
LDAP
M1
M2
Persistência	
  Classes	
  do	
  Modelo	
  
DAO	
  
Padrão	
  DAO	
  
Alguns	
  beneMcios	
  de	
  se	
  u9lizar	
  o	
  padrão	
  DAO:	
  
•  O	
   mecanismo	
   de	
   persistência	
   pode	
   ser	
   alterado	
   a	
   qualquer	
   momento	
  
sem	
  ter	
  que	
  modificar	
  a	
  camada	
  de	
  modelo.	
  
•  Vários	
   mecanismos	
   de	
   persistência	
   podem	
   ser	
   uNlizados	
   de	
   forma	
  
transparente	
  para	
  o	
  cliente.	
  
•  Com	
  o	
  padrão	
  DAO,	
  podemos	
  abstrair	
  e	
  encapsular	
  o	
  acesso	
  às	
  fontes	
  de	
  
dados.	
  
- Gerencia	
  a	
  conexão	
  com	
  a	
  fonte	
  e	
  sabe	
  como	
  obter	
  os	
  dados.	
  	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 76
Trabalho	
  
Construa	
   uma	
   aplicação	
   contendo	
   operações	
   CRUD	
   para	
  
um	
  determinado	
  cenário	
  de	
  negócio.	
  
	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 77
Trabalho	
  
Construa	
   uma	
   aplicação	
   contendo	
   operações	
   CRUD	
   para	
  
um	
  determinado	
  cenário	
  de	
  negócio.	
  
ü Deverá	
   ser	
   implementado	
   um	
   DAO	
   Factory	
   para	
  
instanciar	
   as	
   formas	
   de	
   persistência	
   suportadas	
   pela	
  
aplicação,	
  no	
  contexto	
  do	
  trabalho,	
  pelo	
  menos	
  duas.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 78
Trabalho	
  
Construa	
   uma	
   aplicação	
   contendo	
   operações	
   CRUD	
   para	
  
um	
  determinado	
  cenário	
  de	
  negócio.	
  
ü Deverá	
   ser	
   implementado	
   um	
   DAO	
   Factory	
   para	
  
instanciar	
   as	
   formas	
   de	
   persistência	
   suportadas	
   pela	
  
aplicação,	
  no	
  contexto	
  do	
  trabalho,	
  pelo	
  menos	
  duas.	
  
ü Uma	
  interface	
  gráfica	
  amigável	
  deverá	
  ser	
  construída.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 79
Trabalho	
  
Construa	
   uma	
   aplicação	
   contendo	
   operações	
   CRUD	
   para	
  
um	
  determinado	
  cenário	
  de	
  negócio.	
  
ü Deverá	
   ser	
   implementado	
   um	
   DAO	
   Factory	
   para	
  
instanciar	
   as	
   formas	
   de	
   persistência	
   suportadas	
   pela	
  
aplicação,	
  no	
  contexto	
  do	
  trabalho,	
  pelo	
  menos	
  duas.	
  
ü Uma	
  interface	
  gráfica	
  amigável	
  deverá	
  ser	
  construída.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 80
Artigo para auxiliar na definição da arquitetura da aplicação.
http://www.informit.com/guides/content.aspx?g=java&seqNum=442
Bibliografia	
  
•  Gamma,	
   Erich;	
   Richard	
   Helm,	
   Ralph	
   Johnson,	
   John	
   M.	
   Vlissides	
   .	
   Design	
  
pagerns:	
  elements	
  of	
  reusable	
  object-­‐oriented	
  sohware.	
  Reading:	
  Addison-­‐
Wesley,	
  1995.	
  
•  Erich	
   Freeman,	
   Elizabeth	
   Freeman.	
   HeadFirst	
   –	
   Design	
   Pagerns.	
   O	
   ́REILLY	
  
2004.	
  
•  METSKER,	
  J.	
  Design	
  Pagerns	
  Java	
  Workbook.	
  EUA:	
  Addison-­‐Wesley	
  2002.	
  
•  K19	
  Treinamentos,	
  “Design	
  Pagerns	
  em	
  Java”.	
  
UML e Padrões de Projeto Centro Universitário do Triângulo 81

Mais conteúdo relacionado

Mais procurados

Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
Natanael Fonseca
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da Disciplina
Daniel Arndt Alves
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
Cloves da Rocha
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
Adir Kuhn
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
Elmano Cavalcanti
 
Visão geral do sistema operacional
Visão geral do sistema operacionalVisão geral do sistema operacional
Visão geral do sistema operacional
Luciano Crecente
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de Software
Aragon Vieira
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
elliando dias
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
Fabio Moura Pereira
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01
thomasdacosta
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
Nécio de Lima Veras
 
Fundamentos de arquitetura Web
Fundamentos de arquitetura WebFundamentos de arquitetura Web
Fundamentos de arquitetura Web
Denis L Presciliano
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
Professor Samuel Ribeiro
 
Evaluacion de arquitecturas
Evaluacion de arquitecturasEvaluacion de arquitecturas
Evaluacion de arquitecturas
Samis Ambrocio
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
Alexandre Augusto Giron
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de Prototipação
Juliano Pires
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
Nécio de Lima Veras
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
Albert Belchior
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
Bruno Grange
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
Gleydson Sousa
 

Mais procurados (20)

Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da Disciplina
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Visão geral do sistema operacional
Visão geral do sistema operacionalVisão geral do sistema operacional
Visão geral do sistema operacional
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
Fundamentos de arquitetura Web
Fundamentos de arquitetura WebFundamentos de arquitetura Web
Fundamentos de arquitetura Web
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Evaluacion de arquitecturas
Evaluacion de arquitecturasEvaluacion de arquitecturas
Evaluacion de arquitecturas
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de Prototipação
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 

Destaque

Padrões de Projeto WEB e o MVC
Padrões de Projeto WEB e o MVCPadrões de Projeto WEB e o MVC
Padrões de Projeto WEB e o MVC
Almir Neto
 
UML - Historia e Diagrmas
UML - Historia e DiagrmasUML - Historia e Diagrmas
UML - Historia e Diagrmas
Bruno Bazoti
 
Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...
Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...
Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...
Anderson Kanegae Soares Rocha
 
Projeto de sistemas com UML - Parte 1
Projeto de sistemas com UML - Parte 1Projeto de sistemas com UML - Parte 1
Projeto de sistemas com UML - Parte 1
Natanael Simões
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
Vinícius de Paula
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
Eliseu Castelo
 
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoAula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Rudson Kiyoshi Souza Carvalho
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Lorran Pegoretti
 
Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
Jéssica Nathany Carvalho Freitas
 
Introdução ao TelEduc
Introdução ao TelEducIntrodução ao TelEduc
Introdução ao TelEduc
André Constantino da Silva
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
ejdn1
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
Herval Freire
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UML
Rildo (@rildosan) Santos
 

Destaque (13)

Padrões de Projeto WEB e o MVC
Padrões de Projeto WEB e o MVCPadrões de Projeto WEB e o MVC
Padrões de Projeto WEB e o MVC
 
UML - Historia e Diagrmas
UML - Historia e DiagrmasUML - Historia e Diagrmas
UML - Historia e Diagrmas
 
Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...
Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...
Arquitetura de Software Baseada em Componentes: Um Estudo de Caso para o Cont...
 
Projeto de sistemas com UML - Parte 1
Projeto de sistemas com UML - Parte 1Projeto de sistemas com UML - Parte 1
Projeto de sistemas com UML - Parte 1
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoAula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
 
Introdução ao TelEduc
Introdução ao TelEducIntrodução ao TelEduc
Introdução ao TelEduc
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UML
 

Semelhante a Aula 05 - UML e Padrões de Projeto

Aula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoAula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de Projeto
Vinícius de Paula
 
Apostila Software Arena
Apostila Software ArenaApostila Software Arena
Apostila Software Arena
Paola Beatriz Barroso
 
Um framework para validação automática de modelos aplicado ao subsistema de e...
Um framework para validação automática de modelos aplicado ao subsistema de e...Um framework para validação automática de modelos aplicado ao subsistema de e...
Um framework para validação automática de modelos aplicado ao subsistema de e...
Italo Pinto Rodrigues
 
Aula1
Aula1Aula1
Aula1
mentrixmax
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
Eduardo Jorge
 
Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01
Walney Negreiros
 
Produtor Consumidor com Semaforo
Produtor Consumidor com SemaforoProdutor Consumidor com Semaforo
Produtor Consumidor com Semaforo
gicaazevedo
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
elliando dias
 
Basico dovba excel_tutorial1
Basico dovba excel_tutorial1Basico dovba excel_tutorial1
Basico dovba excel_tutorial1
Carlos Adriano Rosa
 
TEES - MDA Apresentação Final
TEES - MDA Apresentação FinalTEES - MDA Apresentação Final
TEES - MDA Apresentação Final
guestc7f5eb
 
Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)
marcondes da luz barros
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: Adapter
Messias Batista
 
Live Templates Para Otimização de Tempo no Android Studio
Live Templates Para Otimização de Tempo no Android StudioLive Templates Para Otimização de Tempo no Android Studio
Live Templates Para Otimização de Tempo no Android Studio
Vinícius Thiengo
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
Opakus - Soluções Inteligentes
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
biandamakengo08
 
ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16
ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16
ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16
Jorge Santos
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
Natanael Simões
 
Java5
Java5Java5
Revista programar 20
Revista programar 20Revista programar 20
Revista programar 20
Filipe Bezerra Sousa
 

Semelhante a Aula 05 - UML e Padrões de Projeto (20)

Aula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoAula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de Projeto
 
Apostila Software Arena
Apostila Software ArenaApostila Software Arena
Apostila Software Arena
 
Um framework para validação automática de modelos aplicado ao subsistema de e...
Um framework para validação automática de modelos aplicado ao subsistema de e...Um framework para validação automática de modelos aplicado ao subsistema de e...
Um framework para validação automática de modelos aplicado ao subsistema de e...
 
Aula1
Aula1Aula1
Aula1
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01
 
Produtor Consumidor com Semaforo
Produtor Consumidor com SemaforoProdutor Consumidor com Semaforo
Produtor Consumidor com Semaforo
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 
Basico dovba excel_tutorial1
Basico dovba excel_tutorial1Basico dovba excel_tutorial1
Basico dovba excel_tutorial1
 
TEES - MDA Apresentação Final
TEES - MDA Apresentação FinalTEES - MDA Apresentação Final
TEES - MDA Apresentação Final
 
Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: Adapter
 
Live Templates Para Otimização de Tempo no Android Studio
Live Templates Para Otimização de Tempo no Android StudioLive Templates Para Otimização de Tempo no Android Studio
Live Templates Para Otimização de Tempo no Android Studio
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16
ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16
ArcGIS 10.3: Iniciante no ModelBuilder - Conversão de Float32 para UInt16
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
 
Java5
Java5Java5
Java5
 
Revista programar 20
Revista programar 20Revista programar 20
Revista programar 20
 

Último

Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Falcão Brasil
 
Escola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdfEscola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdf
Falcão Brasil
 
Relatório do Ministério da Defesa (MD) 2017.pdf
Relatório do Ministério da Defesa (MD) 2017.pdfRelatório do Ministério da Defesa (MD) 2017.pdf
Relatório do Ministério da Defesa (MD) 2017.pdf
Falcão Brasil
 
Uma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da TerraUma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da Terra
Luiz C. da Silva
 
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
principeandregalli
 
17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...
17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...
17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...
Estuda.com
 
APRESENTAÇÃO CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdf
APRESENTAÇÃO  CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdfAPRESENTAÇÃO  CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdf
APRESENTAÇÃO CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdf
portaladministradores
 
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.pptAnálise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
Falcão Brasil
 
Administração Em Enfermagem.pptx caala - Cópia-1.pptx
Administração Em Enfermagem.pptx caala - Cópia-1.pptxAdministração Em Enfermagem.pptx caala - Cópia-1.pptx
Administração Em Enfermagem.pptx caala - Cópia-1.pptx
helenawaya9
 
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptxSlides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
LuizHenriquedeAlmeid6
 
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdfGeotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Falcão Brasil
 
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIALA GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
ArapiracaNoticiasFat
 
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdfA Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
Falcão Brasil
 
P0107 do aluno da educação municipal.pdf
P0107 do aluno da educação municipal.pdfP0107 do aluno da educação municipal.pdf
P0107 do aluno da educação municipal.pdf
Ceiça Martins Vital
 
UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...
UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...
UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...
Manuais Formação
 
Que Pena Amor! Eugénio de Sá - Soneto.ppsx
Que Pena Amor! Eugénio de Sá - Soneto.ppsxQue Pena Amor! Eugénio de Sá - Soneto.ppsx
Que Pena Amor! Eugénio de Sá - Soneto.ppsx
Luzia Gabriele
 
Aula 3 CURSO LETRANDO (classes gramaticais).pdf
Aula 3 CURSO LETRANDO (classes gramaticais).pdfAula 3 CURSO LETRANDO (classes gramaticais).pdf
Aula 3 CURSO LETRANDO (classes gramaticais).pdf
ProfessoraSilmaraArg
 
O Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdf
O Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdfO Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdf
O Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdf
Falcão Brasil
 

Último (20)

Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
Endereços — Centro Gestor e Operacional do Sistema de Proteção da Amazônia - ...
 
Escola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdfEscola de Especialistas de Aeronáutica (EEAR).pdf
Escola de Especialistas de Aeronáutica (EEAR).pdf
 
Relatório do Ministério da Defesa (MD) 2017.pdf
Relatório do Ministério da Defesa (MD) 2017.pdfRelatório do Ministério da Defesa (MD) 2017.pdf
Relatório do Ministério da Defesa (MD) 2017.pdf
 
Uma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da TerraUma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da Terra
 
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
Guia Genealógico da Principesca e Ducal Casa de Mesolcina, 2024
 
17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...
17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...
17 Coisas que seus alunos deveriam saber sobre TRI para melhorar sua nota no ...
 
APRESENTAÇÃO CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdf
APRESENTAÇÃO  CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdfAPRESENTAÇÃO  CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdf
APRESENTAÇÃO CURSO FORMAÇÃO EXPERT EM MODERAÇÃO DE FOCUS GROUP.pdf
 
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.pptAnálise dos resultados do desmatamento obtidos pelo SIAD.ppt
Análise dos resultados do desmatamento obtidos pelo SIAD.ppt
 
Festa dos Finalistas .
Festa dos Finalistas                    .Festa dos Finalistas                    .
Festa dos Finalistas .
 
Administração Em Enfermagem.pptx caala - Cópia-1.pptx
Administração Em Enfermagem.pptx caala - Cópia-1.pptxAdministração Em Enfermagem.pptx caala - Cópia-1.pptx
Administração Em Enfermagem.pptx caala - Cópia-1.pptx
 
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptxSlides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
 
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdfGeotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
Geotecnologias Aplicadas na Gestão de Riscos e Desastres Hidrológicos.pdf
 
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIALA GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
A GEOPOLÍTICA ATUAL E A INTEGRAÇÃO ECONÔMICA E SOCIAL
 
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdfA Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
 
P0107 do aluno da educação municipal.pdf
P0107 do aluno da educação municipal.pdfP0107 do aluno da educação municipal.pdf
P0107 do aluno da educação municipal.pdf
 
UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...
UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...
UFCD_7224_Prevenção de acidentes em contexto domiciliário e institucional_índ...
 
Que Pena Amor! Eugénio de Sá - Soneto.ppsx
Que Pena Amor! Eugénio de Sá - Soneto.ppsxQue Pena Amor! Eugénio de Sá - Soneto.ppsx
Que Pena Amor! Eugénio de Sá - Soneto.ppsx
 
VIAGEM AO PASSADO -
VIAGEM AO PASSADO                        -VIAGEM AO PASSADO                        -
VIAGEM AO PASSADO -
 
Aula 3 CURSO LETRANDO (classes gramaticais).pdf
Aula 3 CURSO LETRANDO (classes gramaticais).pdfAula 3 CURSO LETRANDO (classes gramaticais).pdf
Aula 3 CURSO LETRANDO (classes gramaticais).pdf
 
O Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdf
O Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdfO Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdf
O Ministério da Defesa e a Sociedade no Tema de Defesa Nacional.pdf
 

Aula 05 - UML e Padrões de Projeto

  • 1.     Especialização  em  Desenvolvimento  Java     UML  e  Padrões  de  Projetos     AULA  05  –  PADRÕES  DE  CRIAÇÃO     Prof.  Vinícius  de  Paula  -­‐  viniciusdepaula@unitri.edu.br  
  • 3. Factory  Method   ObjeNvo  segundo  o  GoF:   UML e Padrões de Projeto Centro Universitário do Triângulo 3
  • 4. Factory  Method   ObjeNvo  segundo  o  GoF:   •  Definir   uma   interface   para   criar   um   objeto   mas   deixar   que   subclasses   decidam  que  classe  instanciar.   UML e Padrões de Projeto Centro Universitário do Triângulo 4
  • 5. Factory  Method   ObjeNvo  segundo  o  GoF:   •  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   instanciação  às  subclasses.   UML e Padrões de Projeto Centro Universitário do Triângulo 5
  • 6. Factory  Method   ObjeNvo  segundo  o  GoF:   •  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   instanciação  às  subclasses.   UML e Padrões de Projeto Centro Universitário do Triângulo 6 Encapsular a escolha da classe concreta a ser utilizada na criação de objetos de um determinado tipo.
  • 7. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 7 Estrutura do Factory Method, segundo GoF (pág. 122)
  • 8. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 8 Estrutura do Factory Method, segundo GoF (pág. 122) Classe  ou  interface   que  define  o  objeto  a   ser  criado    
  • 9. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 9 Estrutura do Factory Method, segundo GoF (pág. 122) Classe  ou  interface   que  define  o  objeto  a   ser  criado     Uma  implementação   parNcular  do  Npo  de   objeto  a  ser  criado    
  • 10. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 10 Estrutura do Factory Method, segundo GoF (pág. 122) Uma  implementação   parNcular  do  Npo  de   objeto  a  ser  criado     Classe  ou  interface   que  define  o  objeto  a   ser  criado     Classe  ou  interface  que   define  a  assinatura  do   método  responsável  pela   criação  do  produto    
  • 11. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 11 Estrutura do Factory Method, segundo GoF (pág. 122) Uma  implementação   parNcular  do  Npo  de   objeto  a  ser  criado     Classe  ou  interface   que  define  o  objeto  a   ser  criado     Classe  ou  interface  que   define  a  assinatura  do   método  responsável  pela   criação  do  produto     Classe  que  implementa   ou  sobrescreve  o   método  de  criação  do   produto      
  • 12. Factory  Method   Cenário  Prá9co   Considere   um   sistema   bancário   que   precisa   enviar   mensagens   aos   seus   clientes.   Por   exemplo,   após   a   realização   de   uma   compra   com   cartão   de   crédito,   uma   mensagem   contendo   informações   sobre   a   compra   pode   ser   enviada  ao  cliente.   UML e Padrões de Projeto Centro Universitário do Triângulo 12
  • 13. Factory  Method   Cenário  Prá9co   Considere   um   sistema   bancário   que   precisa   enviar   mensagens   aos   seus   clientes.   Por   exemplo,   após   a   realização   de   uma   compra   com   cartão   de   crédito,   uma   mensagem   contendo   informações   sobre   a   compra   pode   ser   enviada  ao  cliente.   Se   esse   cliente   for   uma   pessoa   sica,   poderá́   optar   pelo   recebimento   da   mensagem   através   de   e-­‐mail   ou   SMS.   Por   outro   lado,   se   for   uma   pessoa   jurídica,  poderá́  também  receber  a  mensagem  através  de  JMS.   UML e Padrões de Projeto Centro Universitário do Triângulo 13
  • 14. Factory  Method   Cenário  Prá9co   UML e Padrões de Projeto Centro Universitário do Triângulo 14
  • 15. Factory  Method   Cenário  Prá9co   UML e Padrões de Projeto Centro Universitário do Triângulo 15 Cada mecanismo de envio será implementado por uma classe. Podemos criar uma interface para padronizar essas classes e obter polimorfismo entre seus objetos.
  • 16. Factory  Method   Cenário  Prá9co   Neste   aspecto   quando   for   necessário   enviar   uma   mensagem,   podemos   uNlizar  diretamente    os  emissores.   UML e Padrões de Projeto Centro Universitário do Triângulo 16
  • 17. Factory  Method   Cenário  Prá9co   Neste   aspecto   quando   for   necessário   enviar   uma   mensagem,   podemos   uNlizar  diretamente    os  emissores.   UML e Padrões de Projeto Centro Universitário do Triângulo 17 Emissor emissor = new EmissorSMS(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorEmail(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorJMS(); emissor.envia("UML e Padrões de Projeto");
  • 18. Factory  Method   Cenário  Prá9co   Neste   aspecto   quando   for   necessário   enviar   uma   mensagem,   podemos   uNlizar  diretamente    os  emissores.   UML e Padrões de Projeto Centro Universitário do Triângulo 18 Emissor emissor = new EmissorSMS(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorEmail(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorJMS(); emissor.envia("UML e Padrões de Projeto"); Enviando  uma   mensagem  por  SMS  
  • 19. Factory  Method   Cenário  Prá9co   Neste   aspecto   quando   for   necessário   enviar   uma   mensagem,   podemos   uNlizar  diretamente    os  emissores.   UML e Padrões de Projeto Centro Universitário do Triângulo 19 Emissor emissor = new EmissorSMS(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorEmail(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorJMS(); emissor.envia("UML e Padrões de Projeto"); Enviando  uma   mensagem  por  SMS   Enviando  uma   mensagem  por  Email  
  • 20. Factory  Method   Cenário  Prá9co   Neste   aspecto   quando   for   necessário   enviar   uma   mensagem,   podemos   uNlizar  diretamente    os  emissores.   UML e Padrões de Projeto Centro Universitário do Triângulo 20 Emissor emissor = new EmissorSMS(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorEmail(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorJMS(); emissor.envia("UML e Padrões de Projeto"); Enviando  uma   mensagem  por  SMS   Enviando  uma   mensagem  por  JMS   Enviando  uma   mensagem  por  Email  
  • 21. Factory  Method   Cenário  Prá9co   Neste   aspecto   quando   for   necessário   enviar   uma   mensagem,   podemos   uNlizar  diretamente    os  emissores.   UML e Padrões de Projeto Centro Universitário do Triângulo 21 Emissor emissor = new EmissorSMS(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorEmail(); emissor.envia("UML e Padrões de Projeto"); Emissor emissor = new EmissorJMS(); emissor.envia("UML e Padrões de Projeto"); Crie uma classe para testar os emissores.
  • 22. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 22 public class TestaEmissor1 { public static void main(String[] args) { Emissor emissor; emissor = new EmissorSMS(); emissor.envia("UML e Padrões de Projeto"); emissor = new EmissorEmail(); emissor.envia("UML e Padrões de Projeto"); emissor = new EmissorJMS(); emissor.envia("UML e Padrões de Projeto"); } }
  • 23. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 23 public class TestaEmissor1 { public static void main(String[] args) { Emissor emissor; emissor = new EmissorSMS(); emissor.envia("UML e Padrões de Projeto"); emissor = new EmissorEmail(); emissor.envia("UML e Padrões de Projeto"); emissor = new EmissorJMS(); emissor.envia("UML e Padrões de Projeto"); } } Utilizando esta abordagem, o código que deseja enviar uma mensagem referencia diretamente as classes que implementam os mecanismos de envio.
  • 24. Factory  Method   •  Para  eliminar  essa  referência  direta  podemos  adicionar  um   intermediário   entre   o   código   que   deseja   enviar   uma   mensagem  e  as  classes  que  implementam  os  emissores.     UML e Padrões de Projeto Centro Universitário do Triângulo 24
  • 25. Factory  Method   •  Para  eliminar  essa  referência  direta  podemos  adicionar  um   intermediário   entre   o   código   que   deseja   enviar   uma   mensagem  e  as  classes  que  implementam  os  emissores.   •  Esse  intermediário  será  responsável  pela  escolha  da  classe   concreta   a   ser   uNlizada   para   criar   o   Npo   de   emissor   adequado.   UML e Padrões de Projeto Centro Universitário do Triângulo 25
  • 26. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 26 public class EmissorCreator { public static final int SMS = 0; public static final int EMAIL = 1; public static final int JMS = 2; public Emissor create(int tipoEmissor) { if(tipoEmissor == EmissorCreator.SMS) { return new EmissorSMS(); } else if (tipoEmissor == EmissorCreator.EMAIL){ return new EmissorEmail(); } else if (tipoEmissor == EmissorCreator.JMS){ return new EmissorJMS(); } else { throw new IllegalArgumentException("Tipo de Emissor não suportado"); } } }
  • 27. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 27 public class EmissorCreator { public static final int SMS = 0; public static final int EMAIL = 1; public static final int JMS = 2; public Emissor create(int tipoEmissor) { if(tipoEmissor == EmissorCreator.SMS) { return new EmissorSMS(); } else if (tipoEmissor == EmissorCreator.EMAIL){ return new EmissorEmail(); } else if (tipoEmissor == EmissorCreator.JMS){ return new EmissorJMS(); } else { throw new IllegalArgumentException("Tipo de Emissor não suportado"); } } } Definimos uma classe intermediária que será responsável pela criação dos emissores, tornando a classe que utiliza os emissores menos dependente dos mecanismos de envio.
  • 28. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 28 public class EmissorCreator { public static final int SMS = 0; public static final int EMAIL = 1; public static final int JMS = 2; public Emissor create(int tipoEmissor) { if(tipoEmissor == EmissorCreator.SMS) { return new EmissorSMS(); } else if (tipoEmissor == EmissorCreator.EMAIL){ return new EmissorEmail(); } else if (tipoEmissor == EmissorCreator.JMS){ return new EmissorJMS(); } else { throw new IllegalArgumentException("Tipo de Emissor não suportado"); } } } Altere a classe de teste dos emissores para utilizar a classe EmissorCreator.
  • 29. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 29 public class TestaEmissor2 { public static void main(String[] args) { Emissor emissor1, emissor2, emissor3; EmissorCreator creator = new EmissorCreator(); emissor1 = creator.create(EmissorCreator.SMS); emissor1.envia("UML e Padrões de Projeto"); emissor2 = creator.create(EmissorCreator.EMAIL); emissor2.envia("UML e Padrões de Projeto"); emissor3 = creator.create(EmissorCreator.JMS); emissor3.envia("UML e Padrões de Projeto"); } }
  • 30. Factory  Method   •  E  se  a  parNr  de  agora  o  sistema  Nvesse  que  trabalhar  com  dois   Npos   diferentes   de   envio   de   mensagens:   síncrono   e   assíncrono.     UML e Padrões de Projeto Centro Universitário do Triângulo 30
  • 31. Factory  Method   •  E  se  a  parNr  de  agora  o  sistema  Nvesse  que  trabalhar  com  dois   Npos   diferentes   de   envio   de   mensagens:   síncrono   e   assíncrono.   •  Como  poderíamos  especializar  o  criador  de  emissores?     UML e Padrões de Projeto Centro Universitário do Triângulo 31
  • 32. Factory  Method   •  E  se  a  parNr  de  agora  o  sistema  Nvesse  que  trabalhar  com  dois   Npos   diferentes   de   envio   de   mensagens:   síncrono   e   assíncrono.   •  Como  poderíamos  especializar  o  criador  de  emissores?     UML e Padrões de Projeto Centro Universitário do Triângulo 32
  • 33. Factory  Method   •  E  se  a  parNr  de  agora  o  sistema  Nvesse  que  trabalhar  com  dois   Npos   diferentes   de   envio   de   mensagens:   síncrono   e   assíncrono.   •  Como  poderíamos  especializar  o  criador  de  emissores?     UML e Padrões de Projeto Centro Universitário do Triângulo 33 Definindo subclasses
  • 34. Factory  Method   •  Com   base   no   novo   cenário,   novos   produtos   precisam   ser   implementados.   UML e Padrões de Projeto Centro Universitário do Triângulo 34
  • 35. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 35
  • 36. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 36 Implemente as classes necessárias para testar a especialização do criador de emissores.
  • 37. Estrutura  do  Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 37
  • 38. Estrutura  do  Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 38 Emissor
  • 39. Estrutura  do  Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 39 Emissor EmissorAssincronoSMS EmissorAssincronoJMS EmissorAssincronoEmail
  • 40. Estrutura  do  Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 40 Emissor EmissorAssincronoSMS EmissorAssincronoEmail EmissorAssincronoJMS EmissorSincronoSMS EmissorSincronoEmail EmissorSincronoJMS
  • 41. Estrutura  do  Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 41 Emissor EmissorAssincronoSMS EmissorAssincronoEmail EmissorAssincronoJMS EmissorSincronoSMS EmissorSincronoEmail EmissorSincronoJMS EmissorCreator
  • 42. Estrutura  do  Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 42 Emissor EmissorAssincronoSMS EmissorAssincronoEmail EmissorAssincronoJMS EmissorSincronoSMS EmissorSincronoEmail EmissorSincronoJMS EmissorCreator EmissorAssincronoCreator EmissorSincronoCreator
  • 43. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 43 public class TestaEmissor3 { public static void main(String[] args) { Emissor emissor1, emissor2, emissor3; EmissorCreator creator = new EmissorSincronoCreator(); emissor1 = creator.create(EmissorCreator.SMS); emissor1.envia("UML e Padrões de Projeto"); emissor2 = creator.create(EmissorCreator.EMAIL); emissor2.envia("UML e Padrões de Projeto"); emissor3 = creator.create(EmissorCreator.JMS); emissor3.envia("UML e Padrões de Projeto"); } }
  • 44. Factory  Method   UML e Padrões de Projeto Centro Universitário do Triângulo 44 public class TestaEmissor3 { public static void main(String[] args) { Emissor emissor1, emissor2, emissor3; EmissorCreator creator = new EmissorSincronoCreator(); emissor1 = creator.create(EmissorCreator.SMS); emissor1.envia("UML e Padrões de Projeto"); emissor2 = creator.create(EmissorCreator.EMAIL); emissor2.envia("UML e Padrões de Projeto"); emissor3 = creator.create(EmissorCreator.JMS); emissor3.envia("UML e Padrões de Projeto"); } } Factory Method permite que uma classe delegue a responsabilidade de instanciação às subclasses.
  • 45. Onde  podemos  ver  o  uso  do  Factory  Method?   •  javax.xml.parsers   UML e Padrões de Projeto Centro Universitário do Triângulo 45
  • 46. Onde  podemos  ver  o  uso  do  Factory  Method?   •  java.sql.DriverManager   UML e Padrões de Projeto Centro Universitário do Triângulo 46
  • 48. Abstract  Factory   ObjeNvo  segundo  o  GoF:   UML e Padrões de Projeto Centro Universitário do Triângulo 48
  • 49. Abstract  Factory   ObjeNvo  segundo  o  GoF:   •  Prover   uma   interface   para   criar   famílias   de   objetos   relacionados   ou   dependentes  sem  especificar  suas  classes  concretas.   UML e Padrões de Projeto Centro Universitário do Triângulo 49
  • 50. Abstract  Factory   ObjeNvo  segundo  o  GoF:   •  Prover   uma   interface   para   criar   famílias   de   objetos   relacionados   ou   dependentes  sem  especificar  suas  classes  concretas.   UML e Padrões de Projeto Centro Universitário do Triângulo 50 Encapsular a escolha das classes concretas a serem utilizadas na criação de objetos de diversas famílias.
  • 51. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 51 Estrutura do Abstract Factory, segundo GoF (pág. 101)
  • 52. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 52 Estrutura do Abstract Factory, segundo GoF (pág. 101) Interface  que  define  as   assinaturas  dos  métodos   responsáveis  pela  criação   dos  objetos  de  uma  família.    
  • 53. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 53 Estrutura do Abstract Factory, segundo GoF (pág. 101) Interface  que  define  as   assinaturas  dos  métodos   responsáveis  pela  criação   dos  objetos  de  uma  família.     Classe  que  implementa  os   métodos  de  criação  dos   objetos  de  uma  família.      
  • 54. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 54 Estrutura do Abstract Factory, segundo GoF (pág. 101) Interface  que  define  as   assinaturas  dos  métodos   responsáveis  pela  criação   dos  objetos  de  uma  família.     Classe  que  implementa  os   métodos  de  criação  dos   objetos  de  uma  família.       Interface  que   define  um  Npo  de   produto      
  • 55. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 55 Estrutura do Abstract Factory, segundo GoF (pág. 101) Interface  que  define  as   assinaturas  dos  métodos   responsáveis  pela  criação   dos  objetos  de  uma  família.     Classe  que  implementa  os   métodos  de  criação  dos   objetos  de  uma  família.       Implementação   parNcular  de  um   Npo  de  produto       Interface  que   define  um  Npo  de   produto      
  • 56. Abstract  Factory   Cenário  Prá9co   Estabelecimentos   comerciais   normalmente   oferecem   aos   clientes   diversas   opções  de  pagamento.  Por  exemplo,  clientes  podem  efetuar  pagamentos  com   dinheiro,  cartões  de  crédito  ou  débito,  entre  outros.   UML e Padrões de Projeto Centro Universitário do Triângulo 56
  • 57. Abstract  Factory   Cenário  Prá9co   Estabelecimentos   comerciais   normalmente   oferecem   aos   clientes   diversas   opções  de  pagamento.  Por  exemplo,  clientes  podem  efetuar  pagamentos  com   dinheiro,  cartões  de  crédito  ou  débito,  entre  outros.   Pagamentos  com  cartão  são  realizados  por  meio  de  uma  máquina  de  cartão,   oferecida  e  instaladas  por  empresas  como  Cielo  e  Redecard.  Geralmente,  essa   máquina  é  capaz  de  lidar  com  cartões  de  diferentes  bandeiras  (como  Visa  e   Mastercard).   UML e Padrões de Projeto Centro Universitário do Triângulo 57
  • 58. Abstract  Factory   Cenário  Prá9co   Nosso   objeNvo   é   programar   essas   máquinas,   isto   é,   desenvolver   uma   aplicação   capaz   de   se   comunicar   com   as   diferentes   bandeiras   e   registrar   pagamentos.   UML e Padrões de Projeto Centro Universitário do Triângulo 58
  • 59. Abstract  Factory   Cenário  Prá9co   Nosso   objeNvo   é   programar   essas   máquinas,   isto   é,   desenvolver   uma   aplicação   capaz   de   se   comunicar   com   as   diferentes   bandeiras   e   registrar   pagamentos.   No  momento  do  pagamento,  a  máquina  de  cartão  deve  enviar  informações   relaNvas  à  transação  (como  valor  e  senha)  para  a  bandeira  correspondente  ao   cartão   uNlizado.   Além   disso,   a   máquina   deve   aguardar   uma   resposta   de   confirmação  ou  recusa  do  pagamento.   UML e Padrões de Projeto Centro Universitário do Triângulo 59
  • 60. Abstract  Factory   •  Nossa   aplicação   será   composta   por   objetos   emissores   e   receptores  de  mensagens.     UML e Padrões de Projeto Centro Universitário do Triângulo 60
  • 61. Abstract  Factory   •  Nossa   aplicação   será   composta   por   objetos   emissores   e   receptores  de  mensagens.   •  Como   o   protocolo   de   comunicação   de   cada   bandeira   é   diferente,   teremos   um   emissor   e   um   receptor   para   cada   bandeira.       UML e Padrões de Projeto Centro Universitário do Triângulo 61
  • 62. Abstract  Factory   •  Nossa   aplicação   será   composta   por   objetos   emissores   e   receptores  de  mensagens.   •  Como   o   protocolo   de   comunicação   de   cada   bandeira   é   diferente,   teremos   um   emissor   e   um   receptor   para   cada   bandeira.   •  Criaremos   fábricas   específicas   para   cada   bandeira   que   serão   responsáveis   pela   criação   dos   emissores   e   receptores.     UML e Padrões de Projeto Centro Universitário do Triângulo 62
  • 63. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 63
  • 64. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 64 Implemente as classes necessárias para testar o cenário proposto.
  • 65. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 65 1 2 3 4
  • 66. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 66
  • 67. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 67 Interface que todas as fábricas concretas devem implementar, o que consiste em um conjunto de métodos para fabricar produtos.
  • 68. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 68 Interface que todas as fábricas concretas devem implementar, o que consiste em um conjunto de métodos para fabricar produtos. As fábricas concretas implementam as diferentes famílias de produtos. Para criar um produto o cliente usa uma destas fábricas.
  • 69. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 69 Interface que todas as fábricas concretas devem implementar, o que consiste em um conjunto de métodos para fabricar produtos. As fábricas concretas implementam as diferentes famílias de produtos. Para criar um produto o cliente usa uma destas fábricas. Esta é a família de produtos, cada fábrica concreta pode produzir um conjunto inteiro de produtos.
  • 70. Abstract  Factory   UML e Padrões de Projeto Centro Universitário do Triângulo 70 public class TestaComunicadorFactory { public static void main(String[] args) { ComunicadorFactory comunicadorFactory = new VisaComunicadorFactory(); Emissor emissor = comunicadorFactory.createEmissor(); String transacao = "Valor=100;Senha=1234"; emissor.envia(transacao); Receptor receptor = comunicadorFactory.createReceptor(); String mensagem = receptor.recebe(); System.out.println(mensagem); } }
  • 71. Abstract  Factory  +  Factory  Method   E  se  quiséssemos  combinar  os  dois  padrões?     UML e Padrões de Projeto Centro Universitário do Triângulo 71
  • 72. Abstract  Factory  +  Factory  Method   E  se  quiséssemos  combinar  os  dois  padrões?   •  As   implementações   de   Abstract   Factory   podem   acionar   os   Factory   Methods   para   criar   emissores   e   receptores.    UML e Padrões de Projeto Centro Universitário do Triângulo 72
  • 73. Abstract  Factory  +  Factory  Method   E  se  quiséssemos  combinar  os  dois  padrões?   •  As   implementações   de   Abstract   Factory   podem   acionar   os   Factory   Methods   para   criar   emissores   e   receptores.    UML e Padrões de Projeto Centro Universitário do Triângulo 73 public class VisaComunicadorFactory implements ComunicadorFactory { private EmissorCreator emissorCreator = new EmissorCreator(); private ReceptorCreator receptorCreator = new ReceptorCreator(); public Emissor createEmissor() { return emissorCreator.create(EmissorCreator.VISA); } public Receptor createReceptor() { return receptorCreator.create(ReceptorCreator.VISA); } }
  • 74. Abstract  Factory  +  Factory  Method   E  se  quiséssemos  combinar  os  dois  padrões?   •  As   implementações   de   Abstract   Factory   podem   acionar   os   Factory   Methods   para   criar   emissores   e   receptores.    UML e Padrões de Projeto Centro Universitário do Triângulo 74 public class VisaComunicadorFactory implements ComunicadorFactory { private EmissorCreator emissorCreator = new EmissorCreator(); private ReceptorCreator receptorCreator = new ReceptorCreator(); public Emissor createEmissor() { return emissorCreator.create(EmissorCreator.VISA); } public Receptor createReceptor() { return receptorCreator.create(ReceptorCreator.VISA); } } Altere a implementação de forma que os emissores e receptores sejam criados por Factory Methods
  • 75. Padrão  DAO   •  O   padrão   DAO   (Data   Access   Object)   tem   como   objeNvo   construir   uma   camada   de   acesso   aos   dados   de   forma   a   isolar   a   camada   do   modelo   da   camada  de  persistência.     UML e Padrões de Projeto Centro Universitário do Triângulo 75 DB LDAP M1 M2 Persistência  Classes  do  Modelo   DAO  
  • 76. Padrão  DAO   Alguns  beneMcios  de  se  u9lizar  o  padrão  DAO:   •  O   mecanismo   de   persistência   pode   ser   alterado   a   qualquer   momento   sem  ter  que  modificar  a  camada  de  modelo.   •  Vários   mecanismos   de   persistência   podem   ser   uNlizados   de   forma   transparente  para  o  cliente.   •  Com  o  padrão  DAO,  podemos  abstrair  e  encapsular  o  acesso  às  fontes  de   dados.   - Gerencia  a  conexão  com  a  fonte  e  sabe  como  obter  os  dados.     UML e Padrões de Projeto Centro Universitário do Triângulo 76
  • 77. Trabalho   Construa   uma   aplicação   contendo   operações   CRUD   para   um  determinado  cenário  de  negócio.     UML e Padrões de Projeto Centro Universitário do Triângulo 77
  • 78. Trabalho   Construa   uma   aplicação   contendo   operações   CRUD   para   um  determinado  cenário  de  negócio.   ü Deverá   ser   implementado   um   DAO   Factory   para   instanciar   as   formas   de   persistência   suportadas   pela   aplicação,  no  contexto  do  trabalho,  pelo  menos  duas.   UML e Padrões de Projeto Centro Universitário do Triângulo 78
  • 79. Trabalho   Construa   uma   aplicação   contendo   operações   CRUD   para   um  determinado  cenário  de  negócio.   ü Deverá   ser   implementado   um   DAO   Factory   para   instanciar   as   formas   de   persistência   suportadas   pela   aplicação,  no  contexto  do  trabalho,  pelo  menos  duas.   ü Uma  interface  gráfica  amigável  deverá  ser  construída.   UML e Padrões de Projeto Centro Universitário do Triângulo 79
  • 80. Trabalho   Construa   uma   aplicação   contendo   operações   CRUD   para   um  determinado  cenário  de  negócio.   ü Deverá   ser   implementado   um   DAO   Factory   para   instanciar   as   formas   de   persistência   suportadas   pela   aplicação,  no  contexto  do  trabalho,  pelo  menos  duas.   ü Uma  interface  gráfica  amigável  deverá  ser  construída.   UML e Padrões de Projeto Centro Universitário do Triângulo 80 Artigo para auxiliar na definição da arquitetura da aplicação. http://www.informit.com/guides/content.aspx?g=java&seqNum=442
  • 81. Bibliografia   •  Gamma,   Erich;   Richard   Helm,   Ralph   Johnson,   John   M.   Vlissides   .   Design   pagerns:  elements  of  reusable  object-­‐oriented  sohware.  Reading:  Addison-­‐ Wesley,  1995.   •  Erich   Freeman,   Elizabeth   Freeman.   HeadFirst   –   Design   Pagerns.   O   ́REILLY   2004.   •  METSKER,  J.  Design  Pagerns  Java  Workbook.  EUA:  Addison-­‐Wesley  2002.   •  K19  Treinamentos,  “Design  Pagerns  em  Java”.   UML e Padrões de Projeto Centro Universitário do Triângulo 81