Programação Orientada a Objetos. Padrões de Projeto
|
|
|
- Célia Covalski Morais
- 7 Há anos
- Visualizações:
Transcrição
1 Programação Orientada a Objetos Padrões de Projeto 1
2 Contexto Desenvolver sistemas reutilizáveis é difícil porque deve-se procurar por: Uma boa decomposição do problema e a abstração correta. Flexibilidade, modularidade e elegância. Bons sistemas frequentemente emergem de um processo iterativo (tentativas e erros). A experiência pessoal consiste em utilizar técnicas que deram certo no passado. 2
3 Contexto Mas, se a pessoa não tiver a experiência, é possível utilizar técnicas que deram certo no passado em outros sistemas com outras pessoas? Os sistemas apresentam características recorrentes Essas técnicas podem ser descritas, codificadas e padronizadas? Se assim fosse, iria diminuir a fase de tentativas e erros Como consequência, os sistemas poderiam ser produzidos melhores e mais rápidos. 3
4 Nascimento dos padrões Padrões são maneiras testadas e documentadas de alcançar objetivos; Padrões são comuns nas diversas áreas da engenharia; Em software temos os Padrões de Projeto Design Patterns 4
5 A inspiração Cada padrão descreve um problema que ocorre repetidas vezes no nosso ambiente e, então, descreve o núcleo da solução para aquele problema, de forma que você pode reutilizar a mesma solução milhões de vezes sem nunca fazê-la da mesma forma duas vezes. 5
6 A inspiração Cada padrão descreve um problema que ocorre repetidas vezes no nosso ambiente e, então, descreve o núcleo da solução para aquele problema, de forma que você pode reutilizar a mesma solução milhões de vezes sem nunca fazê-la da mesma forma duas vezes. A ideia de padrões foi apresentada por Christopher Alexander em1977 no contexto de Arquitetura (de prédio e cidades) 6
7 A inspiração em Software Descrição de uma solução customizada para resolver um problema genérico de projeto [...] Um padrão de projeto dá nome, abstrai e identifica os aspectoschave de uma estrutura de projeto comum para torná-la reutilizável Os padrões de projeto para software foram apresentados por Erich Gamma em 1994, et. Al no livro Design Patterns, conhecido como GoF (Gang of Four). 7
8 Catalogo de Soluções Um padrão encerra o conhecimento de um grupo de pessoas muito experientes em um determinado assunto de tal forma que este conhecimento possa ser transmitido para outras pessoas. Desde1995, o desenvolvimento de software passou a ter o seu primeiro catálogo de 23 soluções para projetos de software: o livro GoF. Atualmente existem mais de 300 padrões para contextos mais específicos, como escalabilidade, concorrência, segurança, etc. 8
9 Formato de um padrão Todo padrão deve incluir: Nome Problema Solução Consequências / Forças 9
10 Organização dos padrões no GoF Os 23 padrões no GoF se dividem em três propósitos: 1. Padrões de Criação 2. Padrões Estruturais 3. Padrões Comportamentais E se dividem em dois escopos: 1. Classe 2. Objeto 10
11 Criação Processo de criação de Objetos Abstract Factory Builder Factory Method Prototype Singleton 11
12 Estruturais Composição de classes ou objetos Adapter Bridge Composite Decorator Façade Flyweight Proxy 12
13 Comportamentais Forma na qual classes ou objetos interagem e distribuem responsabilidades Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor 13
14 Organização dos padrões no GoF 14
15 Organização dos padrões no GoF No escopo Classe criam relacionamentos entre superclasses e subclasses. Esses relacionamentos são estabelecidos pela herança e são fixos (em tempo de compilação). 15
16 Organização dos padrões no GoF No escopo Objeto criam relacionamentos entre objetos (que podem mudar em tempo de execução) 16
17 Padrões GoF na disciplina Nessa disciplina veremos 4 padrões Gof, seguindo os tips de aprendizado de Michael Mahemoff descritos em: O ordem que serão vistos será: Singleton Façade Strategy Observer 17
18 Organização dos padrões no GoF Os 23 padrões no GoF se dividem em três propósitos: 1. De Criação Processo de criação de objetos 2. Estruturais Composição de classes ou objetos 3. Comportamentais Interação entre objetos para distribuir responsabilidades 18
19 Padrões de Criação Abstraem o processo de instanciação, ajudando a tornar o sistema independente da maneira que os objetos são criados, compostos e representados. 19
20 Criação de Objetos - I Solução inflexível: 1. Cliente se refere a uma implementação específica de sua dependência; 2. Cliente constrói diretamente uma instância específica de sua dependência. 20
21 Criação de Objetos - II <<interface>> Alguma flexibilidade: 1. Cliente já não mais associa-se com uma classe concreta; 2. Porém, instancia a mesma diretamente 21
22 Criação de Objetos - III <<interface>> Maior flexibilidade: 1. A fábrica escolhe a melhor classe de acordo a algum critério 22
23 Padrões Estruturais Padrões de estrutura com escopo de classe usam herança para compor interfaces ou implementações. Padrões de estrutura com escopo de objeto descrevem formas de compor objetos para realizar novas funcionalidades. 23
24 Composição Uma pasta tem uma coleção de arquivos. A pasta também pode ter subpastas. 24
25 Composição - I Solução inflexível: 1. Uma pasta tem uma coleção de arquivos, mas a pasta também pode ter subpastas. Portanto nos obriga a ter duas listas. 25
26 Composição - II Maior flexibilidade: 1. Um arquivo pode ser do tipo específico ou uma coleção de arquivos 26
27 Padrões Comportamentais Focam-se nos algoritmos e na delegação de responsabilidades entre os objetos. Uma Clinica (cliente) tem muitos Médicos e muitos Pacientes. Assumindo que muitos para Médicos é uma lista (insere no final) e muitos para Pacientes é um array (insere em qualquer posição null). Como fazemos para que a Clinica mostre as informações dos médicos e dos pacientes? Devemos iterar sobre a lista e sobre o array certo? 27
28 Iteração - I Solução inflexível: 1. O cliente tem que saber que o conjunto deve ser iterado como um array e a lista como um List 28
29 Iteração - II Maior flexibilidade: 1. O cliente somente tem que saber que para iterar deve pedir um próximo elemento, não importando como está implementado 29
30 Singleton 30
31 Descrição Garante que somente uma instância de uma classe exista, (independente das requisições que receber para criá-lo) e fornece um ponto global de acesso a ela. Acesso único ao banco de dados Acesso único a um áudio Acesso único ao pool de impressão Padrão de criação 31
32 Problema Como criar uma instância global de uma classe que seja única para todo o sistema? Prover um atributo static não é suficiente, pois precisamos de um objeto que armazena estados, e não somente de uma coleção de métodos static em uma classe que não armazena estados. Deixar um atributo dentro de uma classe Global não é suficiente, pois outros programadores poderiam construir as instâncias diretamente 32
33 Problema 33
34 Solução private static ObjetoUnico instanciaunica; public static ObjetoUnico instancia() { if (instanciaunica == null) { instanciaunica = new ObjetoUnico(); } return instanciaunica; } Ponto único de acesso - método static instancia() Construtor private (ou protected) para que ninguém externo possa fazer new da classe 34
35 Estrutura private static Singleton uniqueinstance; public static Singleton instance() { if (uniqueinstance == null) { uniqueinstance = new Singleton(); } return uniqueinstance; } Os clientes acessam a instância apenas através da operação instance() do Singleton 35
36 Quando usar o padrão Quando precise ter exatamente uma instância de uma classe e ela deva estar acessível a todos. 36
37 Vantagens e Desvantagens 1. Acesso controlado à instância: A própria classe controla como e quando os clientes acessam sua instância única. 2. Não há necessidade de variáveis globais: Variável globais poluem o espaço de nomes. 37
38 Assegurando uma única instancia É necessário restringir chamadas ao construtor. A classe é implementada de forma que somente uma instância seja criada. O construtor é private ou protected Quem tentar instanciar o Singleton diretamente (com o new) terá um erro em tempo de compilação 38
39 Assegurando uma única instância Esconder a operação de criação de instância (construtor) atrás de uma operação static da classe. Essa operação tem acesso ao atributo que armazena a instância única, garantindo que será inicializada somente uma vez na primeira vez que for chamada. if (uniqueinstance == null) { uniqueinstance = new Singleton(); } return uniqueinstance; 39
40 Resumo do Singleton Para transformar uma classe em um Singleton, deverá seguir 3 passos: 1. Inserir um atributo private e static do mesmo tipo da classe que está transformando 2. Alterar o construtor de public para private 3. Inserir um método public e static que devolva o atributo do passo 1. 40
41 Exemplo 1 - Arquivo de Configuração Suponha que estamos desenvolvendo um sistema que possui configurações globais obtidas a partir de um arquivo de propriedades. public class Configuracao { private ArrayList propriedades = new ArrayList() ; public Configuracao () { // carrega as propriedades obtidas do arquivo de configuração propriedades.add("sao_paulo"); propriedades.add("brl"); } } public boolean tempropriedade(string nomedapropriedade) { return propriedades.contains(nomedapropriedade); } 41
42 Exercício 1 - Arquivo de Configuração Crie a classe principal (com o método main) que chame o método tempropriedade da classe Configuração. Dica: precisará instanciar a classe Configuração. 42
43 Exemplo 1 - Arquivo de Configuração Para garantir que exista somente 1 objeto dessa classe converteremos a classe Configuracao a um Singleton public class Configuracao { 1 private static Configuracao instance ; private ArrayList propriedades = new ArrayList() ; 2 3 private Configuracao () { // carrega as propriedades obtidas do arquivo de configuração } public static Configuracao getinstance () { if( instance == null ) { instance = new Configuracao(); } return instance ; }... 43
44 Exemplo 1 - Arquivo de Configuração O que aconteceu com sua classe principal? Ainda é possível chamar o método getpropriedade da classe Configuração? 44
45 Exemplo 1 - Arquivo de Configuração Logo, de qualquer parte do código do sistema poderemos acessar o objeto que contém as configurações da aplicação. Modifique sua classe Principal da seguinte maneira: public class Principal { }... Configuracao.getInstance().temPropriedade( BRL"); Configuracao config = Configuracao.getInstance(); config.tempropriedade( BRL );... 45
46 Façade 46
47 Descrição Fornece uma interface unificada para um conjunto de interfaces de um subsistema. Define uma interface de nível mais alto que torna o subsistema mais fácil de usar. Padrão estrutural Também chamado de Fachada 47
48 Exemplo Home Theater 48
49 Problema Os clientes acessam vários subsistemas As mudanças em algum subsistema requer alterações nos clientes que o acessam clientes subsistema 49
50 Solução Introdução de um objeto Fachada que provê uma interface simplificada e única ao sistema. clientes subsistema 50
51 Estrutura 51
52 Quando usar o padrão Quando quiser ter uma interface simples para acessar um subsistema complexo. Quando existir muitas associações diretas entre clientes e as classes internas do sistema A introdução do Fachada desacopla o subsistema dos clientes promovendo a independência e portabilidade. Quando precisar desenvolver um sistema em camadas, definindo pontos únicos de entrada para cada nível Cada nível terá sua própria fachada 52
53 Vantagens e Desvantagens 1. Facilita a utilização do sistema Os clientes somente precisam conhecer a fachada. 2. Promove desacoplamento Pequenas mudanças no subsistema não afetam o cliente. 3. Versatilidade: Quando necessário, os clientes ainda podem acessar o subsistema diretamente (se quiser permitir isto). 53
54 Considerações 1. Fachadas geralmente são implementadas como Singleton. 2. Podem existir diferentes Fachadas para o mesmo subsistema 54
55 Passos para a criação de uma Fachada 1. Extrair o método que interage com as classes do subsistema 55
56 Passos para a criação de uma Fachada 2. Mover o método para uma classe Fachada 56
57 Passos para a criação de uma Fachada Fonte: Design Patterns com Java. Eduardo Guerra 57
58 Exemplo 1 Home Theater 58
59 Exemplo 2 - Compilador 59
60 Exemplo 4 - Biblioteca Imagine um sistema de informação para bibliotecas ao qual queremos pedir uma lista dos títulos dos livros que foram emprestados. 60
61 Exemplo 4 - Biblioteca O cliente deveria executar os seguintes passos. Podemos ver que o cliente deve conhecer todas as classes (acoplamento). É possível melhorar isso? 61
62 Exemplo 4 - Biblioteca Criando a Fachada do sistema 62
63 Exemplo 4 - Biblioteca Agora, o cliente não se preocupa pelas classes do subsistema 63
64 Strategy 64
65 Descrição Define uma família de algoritmos, encapsular cada uma delas e tornálas intercambiáveis. Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam. Padrão comportamental Também conhecido como Policy 65
66 Problema Dado um problema que tem várias formas (algoritmos) de ser resolvido, como separar essas soluções em classes específicas para serem intercambiadas facilmente? 66
67 Solução Cada doalgumacoisa() tem centenhas de linhas de código 67
68 Estrutura Manter a implementação de cada algoritmo em uma classe separada, onde cada algoritmo é chamado de Strategy. A classe que usa o strategy é chamada de context. O Strategy geralmente é implementada como uma Interface Todos os objetos strategy devem oferecer os mesmos métodos 68
69 Quando usar o padrão Quando várias classes diferentes diferem somente no comportamento. Quando tem variantes de um mesmo algoritmo e podem ser escolhidos de forma dinâmica. Quando o algoritmo utiliza dados que o cliente não deve conhecer. 69
70 Vantagens e Desvantagens 1. Famílias de algoritmos: Beneficiam-se da herança e polimorfismo. 2. Eliminam os grandes códigos monolíticos. 3. Escolha de implementações: Pode alterar a estratégia em tempo de execução. 4. Aumenta o número de objetos em uma aplicação Uma classe para cada strategy 70
71 Exemplo 2 - Pagamento Considere o sistema de pagamento de um carrinho de compras (ShoppingCart), utilizando o PayPal ou um cartão de crédito. Uma alternativa sem strategy seria public class Principal { public static void main(string[] args) { int tipo = 1; ShoppingCart cart = new ShoppingCart(); Item item1 = new Item("1234",10); Item item2 = new Item("5678",40); cart.additem(item1); cart.additem(item2); if (tipo == PayPal) { // código com dezenas de linhas para pagar com Paypal (user,passwd) } else { // código com centenas de linhas para pagar com Cartão (name,number,cvv) } } 71
72 Exemplo 2 - Pagamento Tal vez seja interessante encapsular o pagamento.numa Strategy 72
73 Exemplo 2 - Pagamento public interface PaymentStrategy { public void pay(int amount); } 73
74 Exemplo 2 - Pagamento public class CreditStrategy implements PaymentStrategy { private String name; private String cardnumber; private String cvv; private String dateofexpiry; } public CreditStrategy(String nm, String ccnum, String cvv, String expirydate){ this.name=nm; this.cardnumber=ccnum; this.cvv=cvv; this.dateofexpiry=expirydate; } public void pay(int amount) { System.out.println(amount +" paid with credit/debit card"); } 74
75 Exemplo 2 - Pagamento public class PayPalStrategy implements PaymentStrategy { private String id; private String password; public PaypalStrategy(String , String pwd){ this. id= ; this.password=pwd; } } public void pay(int amount) { System.out.println(amount + " paid using Paypal."); } 75
76 Exemplo 2 - Pagamento E como fica o carrinho de compras (ShoppingCart)? 76
77 Exemplo 2 - Pagamento public class Item { private String upccode; private int price; public Item(String upc, int cost){ this.upccode=upc; this.price=cost; } public String getupccode() { return upccode; } } public int getprice() { return price; } 77
78 Exemplo 2 - Pagamento public class ShoppingCart { List items; public ShoppingCart(){ this.items=new ArrayList(); } public void additem(item item){ this.items.add(item); } public void pay(paymentstrategy paymentmethod){ int amount = calculatetotal(); paymentmethod.pay(amount); } }... 78
79 Exemplo 2 - Pagamento E como fica nossa classe Principal? public class Principal { public static void main(string[] args) { ShoppingCart cart = new ShoppingCart(); Item item1 = new Item("1234",10); Item item2 = new Item("5678",40); cart.additem(item1); cart.additem(item2); } } if (tipo == PayPal) //pay by paypal (1 linha) cart.pay(new PaypalStrategy( [email protected]", "mypwd")); else //pay by credit card (1 linha) cart.pay(new CreditStrategy( Vladi", " ", "786", "12/15")); 79
80 Observer 80
81 Descrição Define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto muda de estado, todos seus dependentes são notificados e atualizados. Padrão Comportamental Também conhecido como Publish-Subscribe. 81
82 Problema Como manter a consistência da informação entre diversos objetos quando um deles muda seu estado 82
83 Solução Alteração de Estado Notificar Criar um objeto Observável (subject) que registre os observadores (observers) e os notifique quando haja uma alteração do estado 83
84 Estrutura A classe Subject adiciona ou remove um Observer com o método attach() e detach(), respectivamente 84
85 Estrutura 1. A classe Subject notifica os Observers com o método notify() que invoca o método update() do Observer 85
86 Estrutura 1. A classe Subject notifica os Observers com o método notify() que invoca o método update() do Observer A classe Observer, assim que notificado, obtém o estado do Subject chamando o método getstate() 86
87 Estrutura 2. A classe Subject notifica os Observers com o método notify() já passando no método update(...) a modificação 87
88 Quando usar o padrão Quando as alterações em um objeto requerem atualizações em vários outros objetos que, a princípio, ele não conhece. 88
89 Vantagens e Desvantagens 1. Acoplamento fraco entre os objetos, pois não conhecem a classe concreta, só as interfaces 2. O registro e remoção dos Observadores é dinâmica 3. A notificação é entregue a todos, independente de quantos observadores hajam 89
90 Exemplo 2 Mercado de Ações Estamos desenvolvendo um sistema para o mercado financeiro. Quando houver uma alteração no valor de uma ação, o sistema deve manter todos os interessados dessa ação (corretora e pessoa física) informados do valor da mesma. Precisamos encontrar: Subject, Observer, ConcreteSubject e ConcreteObserver ConcreteObserver seriam por exemplo Corretora e PessoaFisica Subject e ConcreteSubject poderiam ser uma só, no caso a ação. 90
91 Exemplo 2 Mercado de Ações Observer public interface AcaoObserver { // já passando a notificação no método update public update ( String codigo, double valor ); } 91
92 Exemplo 2 Mercado de Ações ConcreteObserver public class Corretora implements AcaoObserver { private String nome; public Corretora ( String nome ) { this.nome = nome; } } public void update (String codigo, double valor) { System.out.println(this.nome + "A ação " + codigo " alterou p/ " + valor); } 92
93 Exemplo 2 Mercado de Ações Subject e ConcreteSubject poderiam ser uma só, no caso a ação public class Acao { private String codigo; private double valor; private List interessados = new ArrayList () ; public Acao ( String codigo, double valor ) { this.codigo = codigo; this.valor = valor; } public void attach ( AcaoObserver interessado ) { interessados.add( interessado ); } 93
94 Exemplo 2 Mercado de Ações public class Acao {... public double getstate () { return valor; } public void setstate ( double valor ) { this.valor = valor; notify(); } } public void notify() { for (Object obj: interessados ) { AcaoObserver observer = (AcaoObserver) obj; observer.update(codigo, valor); } } 94
95 Exemplo 2 Mercado de Ações A classe Principal ficaria public class Principal { public static void main ( String[] args ) { Acao acao = new Acao(" VALE3 ", 45.27) ; Corretora corretora1 = new Corretora(" Corretora1 "); Corretora corretora2 = new Corretora(" Corretora2 "); acao.attach( corretora1 ); acao.attach( corretora2 ); } } acao.setstate(50); 95
Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões
DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para
Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico
Reuso de Software Aula 03 Tópicos da Aula POO e Padrões de Projetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] 12 Março 2012 Programação orientada a objetos Reuso de
Mas o que é mesmo Padrão de Projeto?
Mas o que é mesmo Padrão de Projeto? Um Padrão de Projeto descreve uma solução comprovada para um problema recorrente e conhecido no desenvolvimento de software orientado a objetos. Mas afinal, porque
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
Padrões de Projeto de Software
Padrões de Projeto de Software Lista de Exercícios AV2-01 Luiz Leão [email protected] http://www.luizleao.com Questão 1 Qual o objetivo dos padrões Comportamentais, segundo o catálogo GOF? Questão 1 Resposta
Padrões contexto problema solução
Padrões Padrões são soluções para problemas específicos que ocorrem de forma recorrente em um determinado contexto que foram identificados a partir da experiência coletiva de desenvolvedores de software.
Padrões de Projeto de Software
Padrões de Projeto de Software Luiz Leão [email protected] http://www.luizleao.com Introdução O que é? Como descrever? Principais Padrões de Projetos Unidade 2 Padrões GoF PADRÕES CRIAÇÃO Abstract Factory
Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.
Escopo Classe Objeto Finalidade Criação Estrutural Comportamental Factory Method Interperter Abstract Factory Builder Prototype Bridge Composite Facade Flyweight Proxy Chain of Responsibility Command Iterator
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 09 Padrões GoF (Adapter e Composite) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton
Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)
e Adapter Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Factory Method Abstract Factory 2 O que veremos hoje? (padrão de criaçã) Adapter
Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto
Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça Introdução Padrões de projeto Algumas definições... Um padrão de projeto (design pattern) é uma solução geral reutilizável
Prof. Dr. Dilermando Piva Jr. Fatec Indaiatuba
Prof. Dr. Dilermando Piva Jr. Fatec Indaiatuba Imagine que uma pessoa tenha aprendido diversas técnicas de pintura. A partir desse conhecimento, ela saberá como pegar um pincel, como misturar as cores
Programação Orientada a Objetos. Padrões Comportamentais
Programação Orientada a Objetos Padrões Comportamentais Cristiano Lehrer, M.Sc. Classificação dos Padrões de Projeto Propósito o que o padrão faz: Padrões de criação: abstraem o processo de criação de
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado
Análise e Projeto. Padrões de Análise, Arquitetura e Projeto
Análise e Projeto Padrões de Análise, Arquitetura e Projeto 33 Padrões de Arquitetura Padrões Nome do padrão Problema: quando aplicar o padrão? Descreve o problema e seu contexto. Solução: elementos que
Padrões de Projeto de Software
Padrões de Projeto de Software Lista de Exercícios AV1 01 Luiz Leão [email protected] http://www.luizleao.com Questão 1 Dentre as alternativas abaixo identifique a que NÃO define uma situação em que deve
Projeto de software Estrutura do software e arquitetura SWEBOK
Projeto de software Estrutura do software e arquitetura SWEBOK SWEBOK Design Patterns Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas da engenharia Design
Padrões GoF Strategy, Observer, Singleton, Abstract Factory e outros...
Padrões GoF Strategy, Observer, Singleton, Abstract Factory e outros... SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 1 Mais Padrões GoF Strategy Observer
b) Adapter, Bridge e Composite. c) Builder, Prototype e Singleton. d) Façade, Command e Decorator. e) Factory Method, Interpreter e Template Method.
1) Considere os diagramas de classes de análise fornecidos nos itens (a) e (b) abaixo, ambos de acordo com a notação da UML. Esses diagramas desejam representar o fato de que uma conta bancária pode estar
Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná
Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná Reuso Motivações para reutilização de software Aspecto econômico Produtividade Time to market Qualidade Utilização de artefatos (código,
O USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
O USO DOS PADRÕES DE PROJETO GOF NA ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Revista UNILUS Ensino e Pesquisa v. 13, n. 30, jan./mar. 2016 ISSN 2318-2083 (eletrônico) Claudio Costa Matos Graduando no curso
Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas
Objetivo Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Também chamado de Kit Resumo Parece semelhante ao padrão Factory Method,
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 06 Padrões GoF (Factory Method e Abstract Factory) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method
Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções
Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach
Classes e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento
Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e
PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO
COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO FOZ DO IGUAÇU 2013 LISTA
Padrões GoF. Leonardo Gresta Paulino Murta [email protected]
Padrões GoF Leonardo Gresta Paulino Murta [email protected] Agenda Introdução Padrões de Criação Padrões de Estrutura Padrões de comportamento Leonardo Murta Padrões GoF 2 Introdução Os padrões GoF (Gamma
Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
PADRÕES DE PROJETO DE SOFTWARE
Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação PADRÕES DE PROJETO DE SOFTWARE SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre
Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva [email protected] br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Programação com Objectos
Programação com Objectos PADRÕES DE DESENHO Classificaçã Objectivo Criação Estrutura Comportamento Introdução Alguns Padrões de Desenho Classe Factory Method Adapter Interpreter Template Method O que é
Modificadores de Acesso e Atributos de Classe
Modificadores de Acesso e Atributos de Classe 1 Controlando o acesso p Um dos problemas mais simples que temos no nosso sistema de contas é que o método saca permite sacar mesmo que o limite tenha sido
Testes com Design Patterns
Helder da Rocha ([email protected]) 31 de março de 2005 71. Que padrão de design pode ser usado para permitir que uma implementação específica e uma hierarquia de abstrações possa variar independentemente?
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 07 Padrões GoF (Command e Template Method) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype
JAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS
JAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS LABORATÓRIO 2 PROF. EMILIO PARMEGIANI Neste laboratório trabalharemos com conceitos de orientação a objetos, através da criação de classes, propriedades,
Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas
Padrões GoF Iterator, State, Singleton, Observer e Composite
Padrões GoF Iterator, State, Singleton, Observer e Composite Análise e Projeto Orientados a Objetos Profa Dra Rosana T. V. Braga 1 Alguns Padrões GoF Singleton Iterator State Observer Composite 2 Introdução
23/10/15. Padrões de Projeto (Design Patterns) em Java. Separação de Implementação e Interface. Separação de Implementação e Interface.
Design Patterns / Padrões de Projeto Padrões de Projeto (Design Patterns) em Java Um padrão de projeto é uma solução geral para um problema recorrente É uma espécie de gabarito para como resolver um problema
Programação Orientada a Objetos. Padrões de Criação
Programação Orientada a Objetos Padrões de Criação Cristiano Lehrer, M.Sc. Objetivos Apresentar cada um dos 23 padrões clássicos descrevendo: O problema que solucionam. A solução. Diagramas UML (Unified
Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy
Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State
Programação Orientada a Objetos Classes Abstratas. Sérgio Soares
Programação Orientada a Objetos Classes Abstratas Sérgio Soares [email protected] Até aqui Quando usar herança? Ao redefinir um método manter o comportamento herdado! 2 Adivinhem... Surge um novo requisito
Orientação a Objetos AULA 09
Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este
4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Padrões Fábrica. Simple Factory Factory Method
Universidade Federal de Uberlândia Faculdade de Computação Disciplina: POO2 Prof. Fabiano Azevedo Dorça Padrões Fábrica Simple Factory Padrões Fábrica Padrão Simple Factory: fornece interfaces para criar
Curso - Padrões de Projeto Módulo 3: Padrões de Estrutura
Curso - Padrões de Projeto Módulo 3: Padrões de Estrutura Vítor E. Silva Souza [email protected] http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java:
PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001
PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO Projeto de Programas PPR0001 QUALIDADE DO PROJETO 2 3 Qualidade do Projeto de Software Modularidade: gerar particionamento em elementos que executam funções
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Curso - Padrões de Projeto Módulo 1: Introdução
Curso - Padrões de Projeto Módulo 1: Introdução Vítor E. Silva Souza [email protected] http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação
Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.
Introdução Atributos, métodos e encapsulamento [email protected] Atributos Ipos de acesso: private, public, protected e default Encapsulamento Métodos Construtores Criando objetos Departamento de Ciências
Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010
Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade
