Análise e Projeto Orientados a Objetos -...
Transcript of Análise e Projeto Orientados a Objetos -...
![Page 2: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/2.jpg)
Padrões de Projeto
•Um padrão de projeto é o projeto de solução um problema comum (que se repete no desenvolvimento de sistemas)
•Catalogados pela GoF (Gamma, Helm, Johnson, Vlissides)
•Categorias:• Criacionais• Estruturais• Comportamentais
![Page 3: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/3.jpg)
Padrões Criacionais
•Procuram separar a operação de uma aplicação de como os seus objetos são criados
•Catalogados pela GoF:• Abstract Factory, Builder, Factory Method, Prototype e
Singleton
![Page 4: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/4.jpg)
Padrões Estruturais
•Propõem estruturas genéricas para a solução de um problema, visando sua extensão
•Catalogados pela GoF:• Adapter, Bridge, Composite, Decorator, Facade, Flyweigth
e Proxy
![Page 5: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/5.jpg)
Padrões Comportamentais
•Utilizam os conceitos de herança, agregação e composição para construir comportamento complexo a partir de componentes simples
•Catalogados pela GoF:• Chain of Responsability, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, TemplateMethod e Visitor
![Page 6: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/6.jpg)
Padrão Composite
•Problema considerado:• Como definir uma relação de hierárquica entre objetos de
tal forma que tanto o objeto “todo” quanto seus objetos parte sejam equivalentes em certos aspectos?
•Exemplo:•Montagem de peças – uma peça é composta de diversas
outras peças, e essas peças componentes são elas próprias compostas, e assim por diante
![Page 7: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/7.jpg)
Padrão Composite
•Estrutura:
![Page 8: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/8.jpg)
Padrão Observer
•Problema considerado:• Definir uma forma flexível uma dependência “um para
muitos” entre objetos• Se houver alguma modificação do objeto central, todos
dependentes são notificados• Necessita-se que um objeto central seja capaz de enviar
mensagens de notificação aos seus dependentes sem conhecê-los diretamente
![Page 9: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/9.jpg)
Padrão Observer
•Estrutura (Java: Observable e Observer):
![Page 10: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/10.jpg)
Padrão Strategy
•Problema considerado:• Encapsular diferentes algoritmos para realização de
alguma tarefa computacional• Permitir que os clientes possam utilizar qualquer desses
algoritmos sem precisar ser modificado
•Exemplo:• Sistema de controle acadêmico – calcular o grau final
(conceitos de A a E) de um aluno em uma disciplina cursada
![Page 11: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/11.jpg)
Padrão Strategy
•Estrutura do exemplo:• Participação – representa participações de alunos em
uma disciplina e suas correspondentes avaliações (notas)
![Page 12: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/12.jpg)
Padrão Factory Method
•Problema considerado:•Mesmo com um acoplamento abstrato, para se trabalhar
com uma referência é necessário antes instanciar um objeto – conhecer a classe• O objetivo então é delegar a uma parte específica do
código a criação de instâncias – fábrica• Uma fábrica cria instâncias de objetos quando
requisitada, geralmente retornando uma referência a uma superclasse abstrata ou interface
![Page 13: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/13.jpg)
Padrão Factory Method
•Estrutura:
![Page 14: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/14.jpg)
Padrão Mediator
•Problema considerado:• Permitir que um grupo de objetos interaja entre si,
mantendo um acoplamento fraco entre os componentes
•Solução:• Definir um objeto mediador – encapsula a interação entre
grupos de objetos
•Exemplo:• As classes de “controle” são um exemplo típico de
mediadores
![Page 15: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/15.jpg)
Padrão Facade
•Problema considerado:• Sistema dividido em vários subsistemas, que interagem
entre si• “como definir uma interface de alto nível que torna um
subsistema mais fácil de ser utilizado?”
![Page 16: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/16.jpg)
Padrão Facade
•Exemplo:
![Page 17: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/17.jpg)
Padrão Facade
•Estrutura:
![Page 18: Análise e Projeto Orientados a Objetos - IFRNdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:... · 2018-06-20 · Padrões de Projeto •Um padrão de projeto é o projeto](https://reader033.fdocumentos.tips/reader033/viewer/2022060223/5f07d06d7e708231d41ee1bb/html5/thumbnails/18.jpg)
Maiores Referências
•GAMMA, Erich; HELM, Richard; JOHNSON, Ralph; VLISSIDES, John. Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a Objetos, 2ª edição. Bookman, 2000.
•ALUR, Deepak; MALKS, Dan; CRUPI, John. Core J2EE Patterns: As Melhores Práticas e Estratégias de Design, 2ª edição. Campus/Elsevier, 2003.