Programação com Objectos



Documentos relacionados
Análise e Projeto Orientados por Objetos

Testes com Design Patterns

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Programação Orientada a Objetos. Padrões de Criação

Padrões GoF. Leonardo Gresta Paulino Murta

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

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC

Prof.ª Esp. Talita Pagani

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha

1Introdução Helder da Rocha

Padrões de Projeto de Software Orientado a Objetos

SCE 186- Engenharia de Software

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos

Padrões de Desenho Engenharia de Software

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto

Curso - Padrões de Projeto Módulo 1: Introdução

Padrões de Projeto de Software

Padrões de Projeto. Prof. Jefersson Alex dos Santos

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB

Eduardo Bezerra. Editora Campus/Elsevier

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Padrões de Projeto de Software

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

Padrões de Projeto. Bibliografia. Nomenclatura

Padrões clássicos ou padrões GoF O livro "Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de

PADRÕES DE PROJETO. Cleviton Monteiro

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Capítulo 4. Packages e interfaces

Programação por Objectos. Java

Design Patterns. Viviane Torres da Silva

Prototype, um Design Patterns de Criação

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Padrões Comportamentais

Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.

Especialização em web com interfaces ricas

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR

Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP

Análise e Projeto Orientados por Objetos

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação

Reuso com Herança a e Composiçã

Programação Orientada a Objetos. Encapsulamento

Mas o que é mesmo Padrão de Projeto?

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

MÓDULO Modelagem de classes de projeto

Padrões contexto problema solução

Módulo 07 Características Avançadas de Classes

Design Patterns na plataforma Java

Especialização em web com interfaces ricas. Padrões de Projeto - Estruturais

Técnicas de Programação II

Programação Orientada por Objetos

Padrões de Software (Software Patterns)

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Padrões. Identificando padrões

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

Programação Orientada a Objetos em Java

Programação por Objectos. Java

Programação Orientada a Objetos (DPADF 0063)

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Java 2 Standard Edition Como criar classes e objetos

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Herança. Alberto Costa Neto DComp - UFS

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto

4 - Padrões de Construção

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Capítulo 3. Programação por objectos em Java

POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Padrões de Projeto e POA

Design Patterns. Histórico e Fundamentos: Padrões do GoF Criacionais Estruturais Comportamentais. Fernando Anselmo

Decorator Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

Transcrição:

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 é um Padrão de Desenho? P.D. e os problemas do desenho Como seleccionar um P.D. Como usar um P.D. Exemplo: um editor gráfico Composite Catálogo de Padrões de Desenho Conclusões Alcance Objecto Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsability Command Iterator Mediator Memento Observer State Strategy Visitor - 1 - - 2 - Intençã Motivaçã Intenção Compor objectos em estruturas (árvores) Tratar objectos individuais e composições uniformemente Permitir a composição recursiva sem que os clientes tenham de se preocupar com o tipo de objecto que estão a considerar: s, ou Elementos compostos Composto Composto - 3 - - 4 -

Solução Motivaçã ção Classe abstracta (Graphic) representativa de folhas e objectos Compostos s (subclasses de Graphic) Uma classe (Picture), subclasses de Graphic, que permite agregar objectos do tipo Graphic Aplicabilidade Quando se pretendem representar hierarquias parte-todo Os clientes devem poder ignorar as diferenças entre composições de objectos e objectos individuais - 5 - - 6 - Estrutura Participantes Component (Graphic) Declara a interface para os objectos da composição Realiza o comportamento por omissão para a interface comum a todas as classes Define uma interface para aceder e manipular os filhos Define uma interface para aceder ao pai na estrutura (opcional) Um objecto Composite tem o seguinte aspecto: acomposite Leaf (Rectangle, Line, Text, ) Representa as folha da estrutura Define o comportamento dos objectos primitivos acomposite - 7 - - 8 -

Participantes (cont.) Colaboraçõ ções Composite (Picture) Define o comportamento para os componentes que têm filhos Guarda componentes do tipo filho Realiza operações relacionadas com os filhos pertencentes à interface de Component Client Manipula os objectos agregados através da interface de Component Os Clients usam a interface da classe Component para interagir com os objectos da estrutura Composite Se o recipiente é uma folha, os pedidos são tratados directamente Se o recipiente for um Composite, os pedidos são redireccionados para os filhos da estrutura, que possivelmente reenvia novos pedidos aos seus filhos, - 9 - - 10 - Consequências ncias Consequências ncias Vantagens Define hierarquias compostas Por objectos primitivos e objectos compostos A composição é recursiva Sempre que um cliente esperar um objecto primitivo também suporta um objecto composto Desvantagens O desenho pode ser demasiado geral Não é possível impor restrições aos componentes de um objecto composto Têm de se realizar testes na execução Simplifica o cliente Que passam a tratar estruturas e objectos individuais de forma uniforme Não precisam saber qual o tipo de objectos que estão a processar, evitando-se testes do tipo case Facilita a introdução de novos objectos primitivos - 11 - Os clientes não precisam de ser alterados quando surgem novos objectos primitivos - 12 -

Implementaçã Manter referências dos pais nos filhos Partilha de Components Maximizar a interface de Component Declaração das operações de manipulação nos filhos Deve Component definir uma lista de Components Exemplo interface Componente {void escreve(); class implements Componente { private int _valor; public (int val) { _valor = val; System.out.print(_valor + " "); Ordenação dos filhos Memorizar (cache) para melhorar a eficiência Quem deve apagar os Components Qual a melhor estrutura para guardar os Components - 13 - - 14 - abstract class No implements Componente { private Componente[] _filhos = new Componente[9]; private int _total = 0; private int _valor; public No(int val) { _valor = val; public void add(componente c) { _filhos[_total++] = c; System.out.print(_valor + " "); for (int i=0; i < _total; i++) { _filhos[i].escreve(); class Linha extends No { public Linha(int val) { super(val); System.out.print("Linha"); super.escreve(); class Coluna extends No { public Coluna(int val) { super(val); System.out.print("Col"); super.escreve(); // Dois tipos de classes // "contentores". // A maior parte da // "carne" está na classe // de base No. - 15 - - 16 -

Usos conhecidos public class CompostoDemo { public static void main(string[] args) { Composto primei = new Linha(1); Composto segund = new Coluna(2); Composto tercei = new Coluna(3); Composto quarto = new Linha(4); Composto quinto = new Linha(5); primei.add(segund); primei.add(tercei); tercei.add(quarto); tercei.add(quinto); primei.add(new (6)); segund.add(new (7)); tercei.add(new (8)); quarto.add(new (9)); quinto.add(new (10)); primei.escreve(); // Linha1 // // +-- Col2 // // +-- 7 // +-- Col3 // // +-- Linha4 // +-- 9 // +-- Linha5 // +-- 10 // +-- 8 // +-- 6 Editor gráfico Compilador de Smalltalk Classe View do Smalltalk Definição de uma carteira de acções // Linha1 Col2 7 Col3 Linha4 9 Linha5 10 8 6-17 - - 18 - Padrões relacionados Chain of Responsibility A ligação ao pai pode ser usada por Chain of Responsibility Decorator - 19 - Quando usadas em conjunto partilham a mesma super-classe Decorator vão ter de suportar a interface de Component (Add, Remove, GetChild, ) Flyweight Permite partilhar componentes (mas não podem referir os pais) Iterator Usado para varrer as estruturas Composite Visitor Localiza operações e comportamento que caso contrário estariam distribuídos pelas classes Composite e Visitor