SlideShare a Scribd company logo
1 of 52
ANÁLISE E PROJETO ORIENTADO A
OBJETOS COM MODELAGEM
WEB UTILIZANDO UML
M.Sc. Engº Alex Pinheiro das Graças
CONCEITOS AVANÇADOS DE
ORIENTAÇÃO A OBJETOS
Padrões de Projetos ou Design Patterns
PADRÃO DE PROJETOS
Cada padrão descreve um problema que ocorre e se
 repete em nosso ambiente e então descreve o
 núcleo de uma solução para aquele problema de
 forma que você pode utilizar esta solução um
 milhão de vezes sem repeti-la duas vezes que seja.
     (Alexander, 77 apud Gamma et. al, 1995, pg. 2)




                   M.Sc. Alex Pinheiro das Graças - 2012
PADRÃO DE PROJETOS
   Ganhou popularidade, na área da computação,
    com o livro Design Patterns: Elements of Reusable
    Object-Oriented Software lançado em 1995 por
    Erich Gamma, Richard Helm, Ralph Johnson e
    John Vlisfsides.
       Conhecidos como Gang of Four




                       M.Sc. Alex Pinheiro das Graças - 2012
TIPOS DE PADRÕES
                                        Process Patterns: Building Large-Scale
            De processos               Systems Using Object TechnologyScott W.
             de Software              Amblerhttp://www.ambysoft.com/books/proces
                                                     sPatterns.html



                                       Core J2EE™ Patterns: Best Practices and
             Arquiteturais            Design Strategies Deepak Alur, John Crupi e
                                                      Dan Malks


  Padrões
            De Modelagem                Analysis Patterns: Reusable
                O.O.                    Object Models Martin Fowler


                                      Design Patterns Erich Gamma
              De Projeto               Erich Gamma, Richard Helm,
                                      Ralph Johnson e John Vlissides


            Orientados a                Patterns in Java™, Volume 1
            Linguagens                          Mark Grand


                  M.Sc. Alex Pinheiro das Graças - 2012
PADRÃO DE PROJETOS
   Um Padrão de Projeto é uma solução consolidada
    para um problema recorrente no desenvolvimento e
    manutenção de software orientado a objetos.




                    M.Sc. Alex Pinheiro das Graças - 2012
BENEFÍCIOS
   Padrões de Projetos possuem dois benefícios
    principais:
     1.   Fornecem uma forma de resolver problemas
          relacionados com o desenvolvimento de software
          utilizando soluções comprovadas.
     2.   Design patterns tornam a comunicação entre
          projetistas/arquitetos mais eficiente.




                       M.Sc. Alex Pinheiro das Graças - 2012
BENEFÍCIOS
   Resposta às perguntas
     Qual a Granularidade?
     Quais Classes implementar?
     Qual a interface das Classes?
     Implementação?




                       M.Sc. Alex Pinheiro das Graças - 2012
ENTRETANTO...
   Padrões de projetos adicionam flexibilidade no seu
    software entretanto adicionam camadas extras;
     PODE Complicar o projeto;
     PODE Impactar a Performance;




                     M.Sc. Alex Pinheiro das Graças - 2012
PADRÕES DE PROJETOS
   Os padrões de projetos são divididos em três
    grandes famílias:
     De Criação
     Estrutural
     Comportamental




                       M.Sc. Alex Pinheiro das Graças - 2012
CRIAÇÃO
 Encapsula qual a classe concreta que o sistema
  utiliza;
 Aumenta a flexibilidade
     Qual objeto é criado?
     Como o objeto é criado?




                      M.Sc. Alex Pinheiro das Graças - 2012
CRIAÇÃO - CATÁLOGO
 Abstract Factory
 Builder

 Factory Method

 Prototype

 Singleton




                     M.Sc. Alex Pinheiro das Graças - 2012
FACTORY METHOD

Define uma interface para criar um objeto, mas deixa
a subclasse decidir qual classe instanciar. Factory
Method adia a instanciação das classes, deixando
essa tarefa para as subclasses.




                  M.Sc. Alex Pinheiro das Graças - 2012
FACTORY METHOD




            M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY
   Problema:
     Criar famílias de objetos relacionados entre si.
     O sistema pode escolher famílias de objetos diferentes.
     Não podem ser instanciados partes de famílias
      diferentes.
   Exemplo:
       Um jogo que de corrida com várias épocas,
        dependendo da época que é escolhida, os carros terão
        determinada aparência e propriedades.




                        M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY

Provê uma interface para criar famílias de Objetos
relacionados ou dependentes sem especificar as
classes concretas.




                  M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY




             M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY
   AbstractFactory
       Declara uma interface para operações de criação;
   ConcreteFactory
       Implementa as operações de criação
   AbstractProduct
       Declara uma interface para o objeto criado
   ConcreteProduct
       Define o objeto a ser criado por uma ConcreteFactory




                          M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY
   Quando usar
     Um sistema deve ser configurado com múltiplas
      famílias de produtos;
     Uma família de classes deve ser usada juntas;
     Você deseja revelar apenas os produtos e não suas
      implementações;




                      M.Sc. Alex Pinheiro das Graças - 2012
SINGLETON

Força a existência de apenas uma instância da
classe e provê um ponto padrão de acesso.




                  M.Sc. Alex Pinheiro das Graças - 2012
SINGLETON

   Construtor é privado;
   O atributo singleton e o método
    getInstance são estáticos;
   Os outros atributos e
    operações da Classe não são
    estáticos

   Cada vez que esse método for chamado,
    ele deve checar se já existe uma
    instância da classe e retorná-la, caso
    contrário, ele deve instanciar a classe,
    guardar a referência ao objeto no atributo
    estático da classe e então retorná-lo.
SINGLETON




            M.Sc. Alex Pinheiro das Graças - 2012
PADRÕES ESTRUTURAIS
   Esses padrões de projeto estão interessados em
    como classes e objetos estão dispostos para
    formar estruturas maiores.




                    M.Sc. Alex Pinheiro das Graças - 2012
PADRÕES ESTRUTURAIS - CATÁLOGO
 Adapter
 Bridge

 Composite

 Decorator

 Facade

 Flyweight

 Proxy




              M.Sc. Alex Pinheiro das Graças - 2012
PROXY

Provê um substituto ou um espaço reservado para
outro objeto com o intuito de controlar o acesso a
este objeto.




                  M.Sc. Alex Pinheiro das Graças - 2012
PROXY




        M.Sc. Alex Pinheiro das Graças - 2012
PROXY
   Proxy
     Mantém uma referência que deixa o proxy acessar o
      objeto real.
     Prove uma interface identica ao objeto real.
     Controla acesso para o objeto real e pode ser
      responsável por criá-lo.
   Subject
       Define uma interface comum.
   RealSubject
       Define o objeto real que será representado pelo Proxy




                         M.Sc. Alex Pinheiro das Graças - 2012
PROXY
   Exemplos de utilização
     Hibernate: quando o hibernate carrega objetos em
      modo lazy ele traz proxy dos objetos.
     Java RMI cria proxies para fazer acesso remoto.
     Quando estamos utilizando uma conexão lenta e vemos
      somente uma quadrado para a figura estamos vendo
      um proxy.
     Segurança, o proxy pode ser utilizado para averiguar o
      usuário autenticado e somente após a verificação
      chamar a função pretendida.




                       M.Sc. Alex Pinheiro das Graças - 2012
COMPOSITE

Compões objetos em árvore para representar
hierarquias todo-parte. Composições leva clientes a
tratar objetos individuais e composições da mesma
maneira.




                  M.Sc. Alex Pinheiro das Graças - 2012
COMPOSITE




            M.Sc. Alex Pinheiro das Graças - 2012
COMPOSITE
   Participantes
     Componente
        Interface dos componentes

     Folha
        Representa folhas da árvore

     Composição
        Define o comportamento de componentes que tem

         filhos
     Cliente
        Manipula os objetos a partir da interface de

         Componente



                      M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR
   Problema
       Necessidade de adicionar responsabilidade em tempo
        de execução a um objeto.
   Exemplo
       Uma feijoada é adicionado diversos ingredientes.
        Quando um ingrediente é adicionado é necessário
        modificar o calculo de valor da feijoada.




                        M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR

Adiciona responsabilidades para um objeto
dinamicamente. Oferece uma alternativa flexível por
meio de subclasses para extender funcionalidade dos
objetos.




                  M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR




            M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR
   Component
       Define a interface para o objeto que poderá ter
        funcionalidades adicionadas.
   ConcreteComponent
       O objeto que poderá ter responsabilidades adicionadas
   Decorator
       Mantêm uma referência para um objeto Component e
        define uma interface conforme a interface Component.
   ConcreteDecorator
       Adiciona responsabilidade ao Componente




                          M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR




            M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR
   As classes de I/O do JAVA utilizam o padrão
    decorator
     As classes básicas são InputStream, OutputStream,
      Reader.
     Os comportamentos adicionais são por meio de
      decorações
         BufferedStream: adiciona buffers para o Stream
         Data Stream: permite o I/O de tipos primitivos

         Pushback Stream: permite a operação Undo




                          M.Sc. Alex Pinheiro das Graças - 2012
COMPORTAMENTAL
   Padrões de Projeto comportamentais trabalham
    com algoritmos e definição de responsabilidade
    entre objetos.




                     M.Sc. Alex Pinheiro das Graças - 2012
COMPORTAMENTAL - CATÁLOGO
 Command                          Visitor
 Observer

 Chain of Responsability

 Interpreter

 Iterator

 Mediator

 Memento

 State

 Strategy

 Template Method



                   M.Sc. Alex Pinheiro das Graças - 2012
COMMAND
   Problema
       Não é possível prever com antecedência qual a ação de
        um objeto;
           Exemplo um controle remoto custumizável
       Necessidade de implementar o comando desfazer;




                            M.Sc. Alex Pinheiro das Graças - 2012
COMMAND

 Encapsula requisições em objetos, possibilitando a
 parametrização de clientes para diferente
 requisições. Além disso possibilita a criação de
 logs, filas e a ação “desfazer”.




                 M.Sc. Alex Pinheiro das Graças - 2012
COMMAND




          M.Sc. Alex Pinheiro das Graças - 2012
COMMAND
   Command
       Declara uma interface para executar uma operação
   ConcreteCommand
       Define um relacionamento entre um objeto Receiver e
        uma ação
   Cliente
       Cria um ConcreteCommand e atribui ao receptor
   Invoker
       Pede o comando para executar a requisição
   Receiver
       Sabe como executar as operações. Qualquer classe pode
        ser um Receiver

                         M.Sc. Alex Pinheiro das Graças - 2012
COMMAND - EXTENSÕES
   Criação de filas:
       Utilizado em aplicações síncronas, onde um executor
        de comandos pode receber um novo comando
        enquanto ainda está executando um comando anterior.
           Exemplo: Native Command Queuing. O HardDisk recebe
            várias ações. Podendo ordenar a fila dos comandos para
            otimizar o acesso ao disco.




                            M.Sc. Alex Pinheiro das Graças - 2012
COMMAND - EXTENSÕES
   Desfazer e Refazer:
       Necessidade de criar a funcionalidade de desfazer e
        refazer em uma aplicação.
           Exemplo: Criação do comando desfazer em um editor de
            Texto.




                            M.Sc. Alex Pinheiro das Graças - 2012
COMMAND - EXTENSÕES




             M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER
   Problema
       Quando um objeto X é modificado, outros objetos
        devem ser atualizados para refletir o estado do objeto X
        atualizado.




                         M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER

Define uma dependência um para muitos entre
objetos então quando o estado de um objeto é
modificado, todos os objetos dependentes são
atualizados automaticamente.




                 M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER




           M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER
   Observer
       Define uma interface de atualização para objetos que
        devem ser notificados da alteração
   Subject
       Conhece os seus observadores. Qualquer observer pode
        observar um Subject
   ConcreteObserver
       Mantem uma referência para um ConcreteSubject
       Implementa a interface de atualização
   ConcreteSubject
       Envia notificação quando o estado do objeto é alterado



                          M.Sc. Alex Pinheiro das Graças - 2012
EXERCÍCIO
   Modifique as classes,
    principalmente o método
    measurementsChanged
    para utilizar o objeto
    WeatherData para
    atualizar três exibições:
    condições atuais,
    Estatísticas e uma
    previsão.
   O método atualizar
    mostra os valores na
    tela.

Baseado no Livro Use a Cabeça - Padrões de Projeto
RESPOSTA EXERCÍCIO
 O conhecimento de
  padrões de projetos
  leva-nos a encontrar
  soluções rapidamente.
 Soluções amplamente
  testadas
 Facilitam o
  entendimento por
  outros programadores.

More Related Content

What's hot

design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introduçãoelliando dias
 
Analise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UMLAnalise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UMLRildo (@rildosan) Santos
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetosSliedesharessbarbosa
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosPaulo Carvalho
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelRyan Padilha
 
Engenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLEngenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLAlessandro Almeida
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto AdapterMatheus Andrade
 
07 diagrama de classes de análise
07  diagrama de classes de análise07  diagrama de classes de análise
07 diagrama de classes de análiseFilipe Soares
 
Visibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLVisibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLufpb
 
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareCesar Rocha
 
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 UMLEliseu Castelo
 

What's hot (20)

Aula diagrama de classes
Aula diagrama de classesAula diagrama de classes
Aula diagrama de classes
 
Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 
Analise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UMLAnalise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UML
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetos
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 
Engenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLEngenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UML
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
 
Uml ppoint
Uml ppointUml ppoint
Uml ppoint
 
07 diagrama de classes de análise
07  diagrama de classes de análise07  diagrama de classes de análise
07 diagrama de classes de análise
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Componentes
ComponentesComponentes
Componentes
 
Visibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UMLVisibilidade e Diagrama de Classe de Projeto na UML
Visibilidade e Diagrama de Classe de Projeto na UML
 
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
 
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
 
A Linguagem UML
A Linguagem UMLA Linguagem UML
A Linguagem UML
 

Viewers also liked

Análise e Projeto Orientado a Objetos
Análise e Projeto Orientado a ObjetosAnálise e Projeto Orientado a Objetos
Análise e Projeto Orientado a ObjetosSaulo Arruda
 
Estudo de caso_com_modelagem_de_software_halan
Estudo de caso_com_modelagem_de_software_halanEstudo de caso_com_modelagem_de_software_halan
Estudo de caso_com_modelagem_de_software_halanHalan Ridolphi
 
Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ Francke Peixoto
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google AndroidIury Teixeira
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoCapítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoMarcio Palheta
 
Capítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasCapítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasMarcio Palheta
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
Git - Controle de Versões do Jeito Certo
Git - Controle de Versões do Jeito CertoGit - Controle de Versões do Jeito Certo
Git - Controle de Versões do Jeito CertoArthur Zapparoli
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteMarcio Palheta
 
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013Vic Fernandes
 

Viewers also liked (14)

Análise e Projeto Orientado a Objetos
Análise e Projeto Orientado a ObjetosAnálise e Projeto Orientado a Objetos
Análise e Projeto Orientado a Objetos
 
Estudo de caso_com_modelagem_de_software_halan
Estudo de caso_com_modelagem_de_software_halanEstudo de caso_com_modelagem_de_software_halan
Estudo de caso_com_modelagem_de_software_halan
 
Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoCapítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
 
Capítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasCapítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telas
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Git - Controle de Versões do Jeito Certo
Git - Controle de Versões do Jeito CertoGit - Controle de Versões do Jeito Certo
Git - Controle de Versões do Jeito Certo
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLite
 
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
 

Similar to UML OO Design Patterns

Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patternsAndre Baltieri
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.pptssuser7025cf
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5oliveiraprog
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
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 PatternsHerval Freire
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Javaalexmacedo
 

Similar to UML OO Design Patterns (20)

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
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
UMLIntro.pptx
UMLIntro.pptxUMLIntro.pptx
UMLIntro.pptx
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
UMLIntro.pdf
UMLIntro.pdfUMLIntro.pdf
UMLIntro.pdf
 
Travalho versao final
Travalho versao finalTravalho versao final
Travalho versao final
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Hello ReactJs
Hello ReactJsHello ReactJs
Hello ReactJs
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.ppt
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Aula1
Aula1Aula1
Aula1
 
Apresentação versão 1.5
Apresentação   versão 1.5Apresentação   versão 1.5
Apresentação versão 1.5
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
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
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
DCI com PHP
DCI com PHPDCI com PHP
DCI com PHP
 

UML OO Design Patterns

  • 1. ANÁLISE E PROJETO ORIENTADO A OBJETOS COM MODELAGEM WEB UTILIZANDO UML M.Sc. Engº Alex Pinheiro das Graças
  • 2. CONCEITOS AVANÇADOS DE ORIENTAÇÃO A OBJETOS Padrões de Projetos ou Design Patterns
  • 3. PADRÃO DE PROJETOS Cada padrão descreve um problema que ocorre e se repete em nosso ambiente e então descreve o núcleo de uma solução para aquele problema de forma que você pode utilizar esta solução um milhão de vezes sem repeti-la duas vezes que seja. (Alexander, 77 apud Gamma et. al, 1995, pg. 2) M.Sc. Alex Pinheiro das Graças - 2012
  • 4. PADRÃO DE PROJETOS  Ganhou popularidade, na área da computação, com o livro Design Patterns: Elements of Reusable Object-Oriented Software lançado em 1995 por Erich Gamma, Richard Helm, Ralph Johnson e John Vlisfsides.  Conhecidos como Gang of Four M.Sc. Alex Pinheiro das Graças - 2012
  • 5. TIPOS DE PADRÕES Process Patterns: Building Large-Scale De processos Systems Using Object TechnologyScott W. de Software Amblerhttp://www.ambysoft.com/books/proces sPatterns.html Core J2EE™ Patterns: Best Practices and Arquiteturais Design Strategies Deepak Alur, John Crupi e Dan Malks Padrões De Modelagem Analysis Patterns: Reusable O.O. Object Models Martin Fowler Design Patterns Erich Gamma De Projeto Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides Orientados a Patterns in Java™, Volume 1 Linguagens Mark Grand M.Sc. Alex Pinheiro das Graças - 2012
  • 6. PADRÃO DE PROJETOS  Um Padrão de Projeto é uma solução consolidada para um problema recorrente no desenvolvimento e manutenção de software orientado a objetos. M.Sc. Alex Pinheiro das Graças - 2012
  • 7. BENEFÍCIOS  Padrões de Projetos possuem dois benefícios principais: 1. Fornecem uma forma de resolver problemas relacionados com o desenvolvimento de software utilizando soluções comprovadas. 2. Design patterns tornam a comunicação entre projetistas/arquitetos mais eficiente. M.Sc. Alex Pinheiro das Graças - 2012
  • 8. BENEFÍCIOS  Resposta às perguntas  Qual a Granularidade?  Quais Classes implementar?  Qual a interface das Classes?  Implementação? M.Sc. Alex Pinheiro das Graças - 2012
  • 9. ENTRETANTO...  Padrões de projetos adicionam flexibilidade no seu software entretanto adicionam camadas extras;  PODE Complicar o projeto;  PODE Impactar a Performance; M.Sc. Alex Pinheiro das Graças - 2012
  • 10. PADRÕES DE PROJETOS  Os padrões de projetos são divididos em três grandes famílias:  De Criação  Estrutural  Comportamental M.Sc. Alex Pinheiro das Graças - 2012
  • 11. CRIAÇÃO  Encapsula qual a classe concreta que o sistema utiliza;  Aumenta a flexibilidade  Qual objeto é criado?  Como o objeto é criado? M.Sc. Alex Pinheiro das Graças - 2012
  • 12. CRIAÇÃO - CATÁLOGO  Abstract Factory  Builder  Factory Method  Prototype  Singleton M.Sc. Alex Pinheiro das Graças - 2012
  • 13. FACTORY METHOD Define uma interface para criar um objeto, mas deixa a subclasse decidir qual classe instanciar. Factory Method adia a instanciação das classes, deixando essa tarefa para as subclasses. M.Sc. Alex Pinheiro das Graças - 2012
  • 14. FACTORY METHOD M.Sc. Alex Pinheiro das Graças - 2012
  • 15. ABSTRACT FACTORY  Problema:  Criar famílias de objetos relacionados entre si.  O sistema pode escolher famílias de objetos diferentes.  Não podem ser instanciados partes de famílias diferentes.  Exemplo:  Um jogo que de corrida com várias épocas, dependendo da época que é escolhida, os carros terão determinada aparência e propriedades. M.Sc. Alex Pinheiro das Graças - 2012
  • 16. ABSTRACT FACTORY Provê uma interface para criar famílias de Objetos relacionados ou dependentes sem especificar as classes concretas. M.Sc. Alex Pinheiro das Graças - 2012
  • 17. ABSTRACT FACTORY M.Sc. Alex Pinheiro das Graças - 2012
  • 18. ABSTRACT FACTORY  AbstractFactory  Declara uma interface para operações de criação;  ConcreteFactory  Implementa as operações de criação  AbstractProduct  Declara uma interface para o objeto criado  ConcreteProduct  Define o objeto a ser criado por uma ConcreteFactory M.Sc. Alex Pinheiro das Graças - 2012
  • 19. ABSTRACT FACTORY  Quando usar  Um sistema deve ser configurado com múltiplas famílias de produtos;  Uma família de classes deve ser usada juntas;  Você deseja revelar apenas os produtos e não suas implementações; M.Sc. Alex Pinheiro das Graças - 2012
  • 20. SINGLETON Força a existência de apenas uma instância da classe e provê um ponto padrão de acesso. M.Sc. Alex Pinheiro das Graças - 2012
  • 21. SINGLETON  Construtor é privado;  O atributo singleton e o método getInstance são estáticos;  Os outros atributos e operações da Classe não são estáticos  Cada vez que esse método for chamado, ele deve checar se já existe uma instância da classe e retorná-la, caso contrário, ele deve instanciar a classe, guardar a referência ao objeto no atributo estático da classe e então retorná-lo.
  • 22. SINGLETON M.Sc. Alex Pinheiro das Graças - 2012
  • 23. PADRÕES ESTRUTURAIS  Esses padrões de projeto estão interessados em como classes e objetos estão dispostos para formar estruturas maiores. M.Sc. Alex Pinheiro das Graças - 2012
  • 24. PADRÕES ESTRUTURAIS - CATÁLOGO  Adapter  Bridge  Composite  Decorator  Facade  Flyweight  Proxy M.Sc. Alex Pinheiro das Graças - 2012
  • 25. PROXY Provê um substituto ou um espaço reservado para outro objeto com o intuito de controlar o acesso a este objeto. M.Sc. Alex Pinheiro das Graças - 2012
  • 26. PROXY M.Sc. Alex Pinheiro das Graças - 2012
  • 27. PROXY  Proxy  Mantém uma referência que deixa o proxy acessar o objeto real.  Prove uma interface identica ao objeto real.  Controla acesso para o objeto real e pode ser responsável por criá-lo.  Subject  Define uma interface comum.  RealSubject  Define o objeto real que será representado pelo Proxy M.Sc. Alex Pinheiro das Graças - 2012
  • 28. PROXY  Exemplos de utilização  Hibernate: quando o hibernate carrega objetos em modo lazy ele traz proxy dos objetos.  Java RMI cria proxies para fazer acesso remoto.  Quando estamos utilizando uma conexão lenta e vemos somente uma quadrado para a figura estamos vendo um proxy.  Segurança, o proxy pode ser utilizado para averiguar o usuário autenticado e somente após a verificação chamar a função pretendida. M.Sc. Alex Pinheiro das Graças - 2012
  • 29. COMPOSITE Compões objetos em árvore para representar hierarquias todo-parte. Composições leva clientes a tratar objetos individuais e composições da mesma maneira. M.Sc. Alex Pinheiro das Graças - 2012
  • 30. COMPOSITE M.Sc. Alex Pinheiro das Graças - 2012
  • 31. COMPOSITE  Participantes  Componente  Interface dos componentes  Folha  Representa folhas da árvore  Composição  Define o comportamento de componentes que tem filhos  Cliente  Manipula os objetos a partir da interface de Componente M.Sc. Alex Pinheiro das Graças - 2012
  • 32. DECORATOR  Problema  Necessidade de adicionar responsabilidade em tempo de execução a um objeto.  Exemplo  Uma feijoada é adicionado diversos ingredientes. Quando um ingrediente é adicionado é necessário modificar o calculo de valor da feijoada. M.Sc. Alex Pinheiro das Graças - 2012
  • 33. DECORATOR Adiciona responsabilidades para um objeto dinamicamente. Oferece uma alternativa flexível por meio de subclasses para extender funcionalidade dos objetos. M.Sc. Alex Pinheiro das Graças - 2012
  • 34. DECORATOR M.Sc. Alex Pinheiro das Graças - 2012
  • 35. DECORATOR  Component  Define a interface para o objeto que poderá ter funcionalidades adicionadas.  ConcreteComponent  O objeto que poderá ter responsabilidades adicionadas  Decorator  Mantêm uma referência para um objeto Component e define uma interface conforme a interface Component.  ConcreteDecorator  Adiciona responsabilidade ao Componente M.Sc. Alex Pinheiro das Graças - 2012
  • 36. DECORATOR M.Sc. Alex Pinheiro das Graças - 2012
  • 37. DECORATOR  As classes de I/O do JAVA utilizam o padrão decorator  As classes básicas são InputStream, OutputStream, Reader.  Os comportamentos adicionais são por meio de decorações  BufferedStream: adiciona buffers para o Stream  Data Stream: permite o I/O de tipos primitivos  Pushback Stream: permite a operação Undo M.Sc. Alex Pinheiro das Graças - 2012
  • 38. COMPORTAMENTAL  Padrões de Projeto comportamentais trabalham com algoritmos e definição de responsabilidade entre objetos. M.Sc. Alex Pinheiro das Graças - 2012
  • 39. COMPORTAMENTAL - CATÁLOGO  Command  Visitor  Observer  Chain of Responsability  Interpreter  Iterator  Mediator  Memento  State  Strategy  Template Method M.Sc. Alex Pinheiro das Graças - 2012
  • 40. COMMAND  Problema  Não é possível prever com antecedência qual a ação de um objeto;  Exemplo um controle remoto custumizável  Necessidade de implementar o comando desfazer; M.Sc. Alex Pinheiro das Graças - 2012
  • 41. COMMAND Encapsula requisições em objetos, possibilitando a parametrização de clientes para diferente requisições. Além disso possibilita a criação de logs, filas e a ação “desfazer”. M.Sc. Alex Pinheiro das Graças - 2012
  • 42. COMMAND M.Sc. Alex Pinheiro das Graças - 2012
  • 43. COMMAND  Command  Declara uma interface para executar uma operação  ConcreteCommand  Define um relacionamento entre um objeto Receiver e uma ação  Cliente  Cria um ConcreteCommand e atribui ao receptor  Invoker  Pede o comando para executar a requisição  Receiver  Sabe como executar as operações. Qualquer classe pode ser um Receiver M.Sc. Alex Pinheiro das Graças - 2012
  • 44. COMMAND - EXTENSÕES  Criação de filas:  Utilizado em aplicações síncronas, onde um executor de comandos pode receber um novo comando enquanto ainda está executando um comando anterior.  Exemplo: Native Command Queuing. O HardDisk recebe várias ações. Podendo ordenar a fila dos comandos para otimizar o acesso ao disco. M.Sc. Alex Pinheiro das Graças - 2012
  • 45. COMMAND - EXTENSÕES  Desfazer e Refazer:  Necessidade de criar a funcionalidade de desfazer e refazer em uma aplicação.  Exemplo: Criação do comando desfazer em um editor de Texto. M.Sc. Alex Pinheiro das Graças - 2012
  • 46. COMMAND - EXTENSÕES M.Sc. Alex Pinheiro das Graças - 2012
  • 47. OBSERVER  Problema  Quando um objeto X é modificado, outros objetos devem ser atualizados para refletir o estado do objeto X atualizado. M.Sc. Alex Pinheiro das Graças - 2012
  • 48. OBSERVER Define uma dependência um para muitos entre objetos então quando o estado de um objeto é modificado, todos os objetos dependentes são atualizados automaticamente. M.Sc. Alex Pinheiro das Graças - 2012
  • 49. OBSERVER M.Sc. Alex Pinheiro das Graças - 2012
  • 50. OBSERVER  Observer  Define uma interface de atualização para objetos que devem ser notificados da alteração  Subject  Conhece os seus observadores. Qualquer observer pode observar um Subject  ConcreteObserver  Mantem uma referência para um ConcreteSubject  Implementa a interface de atualização  ConcreteSubject  Envia notificação quando o estado do objeto é alterado M.Sc. Alex Pinheiro das Graças - 2012
  • 51. EXERCÍCIO  Modifique as classes, principalmente o método measurementsChanged para utilizar o objeto WeatherData para atualizar três exibições: condições atuais, Estatísticas e uma previsão.  O método atualizar mostra os valores na tela. Baseado no Livro Use a Cabeça - Padrões de Projeto
  • 52. RESPOSTA EXERCÍCIO  O conhecimento de padrões de projetos leva-nos a encontrar soluções rapidamente.  Soluções amplamente testadas  Facilitam o entendimento por outros programadores.