Padrões de Projeto. Marco Túlio de Oliveira Valente

Tamanho: px
Começar a partir da página:

Download "Padrões de Projeto. Marco Túlio de Oliveira Valente"

Transcrição

1 Padrões de Projeto Marco Túlio de Oliveira Valente

2 Padrões de Projeto Idéia proposta pelo arquiteto Cristopher Alexander: A Pattern Language: Towns, Buildings, Construction, 1977 "Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice". Na área de desenvolvimento de software, popularizados pelo livro: Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Addison-Wesley, 1995 Conhecido como GoF (Gang of Four) book Também chamados padrões de desenho Design= desenho; project= projeto (projeto como um todo) 2

3 Padrões de Projeto Definição segundo GoF: "descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context." Objetivo de padrões na comunidade de projetistas de sistemas: Criar um catálogo de soluções que possam ser reutilizadas em problemas que são recorrentes no desenvolvimento de sistemas Criar um vocabulário comum para comunicar experiências, problemas e soluções recorrentes no projeto de sistemas Ajudar na documentação e facilitar o entendimento de projetos Um padrão somente deve merecer este nome depois que sua utilidade for comprovada em um certo número de sistemas Padrões de projeto favorecem designing for change 3

4 Padrões de Projeto Segundo o seu propósito, padrões podem ser: Criacionais: tratam do processo de criação de objetos Estruturais: tratam da composição de classes e objetos Comportamentais: tratam das interações e distribuição de responsabilidades entre classes e objetos Segundo seu escopo, padrões podem se aplicar a: Classes: propõem relacionamentos entre classes e subclasses Objetos: propõem relacionamentos entre objetos Elementos essenciais para se descrever um padrão: Nome Problema: quando e em que contexto deve-se aplicar o padrão Solução: elementos que compõem o padrão Conseqüências: custos e benefícios de aplicar o padrão 4

5 Padrões de Projeto (GoF) Criacionais Abstract factory Builder Factory method Prototype Singleton Estruturais Adapter Bridge Composite Decorator Facade Flyweight Proxy Comportamentais Chain of responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template method Visitor 5

6 Padrões de Projeto (GoF) Nome e classificação (criacional, estrutural ou comportamental) Objetivo: o que este padrão faz? Outros nomes Motivação: cenários de uso do padrão Aplicações: em quais outros cenários o padrão pode ser usado Estrutura: diagrama de classes do padrão (notação OMT) Participantes: papel desempenhado pelas classes do padrão Colaboração: mecânica de funcionamento do padrão Conseqüencias: trade-offs resultantes do uso do padrão Implementação: como implementar o padrão Código de exemplo: implementações de exemplo (em C++) Usos conhecidos: sistemas que usam o padrão Padrões relacionados 6

7 Factory Method Define uma interface para criação de objetos, deixando para subclasses a definição da classe concreta a ser instanciada Delega a criação de objetos para subclasses Usado quando uma classe não pode antecipar o tipo dos objetos que a mesma precisa criar. Suponha um serviço de nomes descrito pela seguinte classe: class Registry { HashTable createtable() { return new HashTable(); bind(...) {... lookup(...) {... Problema: trecho de código acima é pouco robusto a mudanças Amanhã, podemos querer usar uma tabela persistente, um arquivo XML, um SGBD etc 7

8 Factory Method: Exemplo 1 interface Table {... class PersistentTable implements Table {... abstract class Registry { // reutilizada em diversos registros abstract Table createtable(); bind(...) {... lookup(..) {... class PersistentRegistry extends Registry { Table createtable() { return new PersistentTable(); 8

9 Factory Method: Estrutura classe abstrata pseudocódigo subclasse Creator: Registry FactoryMethod: createtable() ConcreteCreator: MyRegistry Product: Table instancia ConcreteProduct: HashTable, PersistentTable, XMLTable etc Fonte: (incluindo figuras dos próximos slides) 9

10 Abstract Factory Define uma interface para criação de famílias de objetos, sem requerer a especificação de suas classes concretas Suponha um sistema que utiliza TCP/IP para comunicação Exemplo de trecho de código deste sistema: void foo() {... TCPSocket s= new TCPSocket();... TCPPort p= new TCPPort();... Problema: trecho de código acima é pouco reutilizável/extensível Amanhã, podemos querer estender o sistema para trabalhar com outros tipos de protocolos (UDP, HTTP) Logo, teremos que alterar (ou duplicar o código acima) 10

11 Abstract Factory: Exemplo void foo(protocolfactory pf) {... Socket s= pf.createsocket();... Port p= pf.createport(); class TCPFactory implements ProtocolFactory { public Socket createsocket() { return new TCPSocket(); public Port createport() { return new TCPPort();... ProtocolFactory pf= new TCPFactory(); foo(pf);... 11

12 Abstract Factory: Estrutura AbstractProductA: Socket ProductA1: TCPSocket ProductA2: UDPSocket AbstractProductB: Port ProductB1: TCPPort ProductB2: UDPPort AbstractFactory: ProtocolFactory ConcreteFactory1: TCPFactory ConcreteFactory2: UDPFactory TCPFactory: CreateSocket() CreatePort() UDPFactory: CreateSocket() CreatePort() 12

13 Singleton Usado para garantir que uma classe possui uma única instância Exemplo: servidor com uma única instância (de impressora, de nomes etc) class MyServer { private static MyServer instance; private MyServer() { public static MyServer getinstance() { if(instance == null) instance= new MyServer(); return instance; Uso: MyServer s= MyServer.getInstance(); // evita que cliente use new MyServer() 13

14 Singleton: Zero Instâncias Outra alternativa: classe sem nenhuma instância (zeroton?) Todos os métodos e atributos estáticos Classe é final (evita declaração de subclasses) Construtora privada sem argumentos (evita instanciação) Exemplo: class java.lang.math public final class Math {... private Math() { public static double sin (double a) {... public static double cos (double a) {

15 Proxy Cria um intermediário que controla o acesso a um objeto base Cliente não possui uma referência direta para o objeto base, mas sim para o proxy Proxy é que possui uma referência para o objeto base Proxy implementa as mesmas interfaces do objeto base possui uma referência 15

16 Proxy Funcionamento: cliente invoca método do proxy; proxy realiza uma determinada tarefa e eventualmente repassa a requisição do cliente para o objeto base Exemplos de proxy (e de sua determinada tarefa ): Remote proxy (stub): marshalling e envio dos parâmetros de uma chamada remota de métodos para um objeto remoto (stub) Virtual proxy: alocação de memória por demanda para objetos que consomem muita memória Protection proxy: controla o acesso ao objeto base por parte de diferentes clientes Cache proxy: armazena em um cache resultados de métodos idempotentes Outros usos (requisitos não-funcionais): tolerância a falhas, persistência, distribuição de carga, sincronização etc 16

17 Adapter Converte a interface de uma classe para outra interface, esperada pelos seus clientes Permite que classes trabalhem juntas, o que não seria possível antes devido à incompatibilidade de interfaces Suponha que uma classe possua o seguinte método copy: Copyable[] copy (Copyable[] v); A interface Copyable possui o seguinte método: boolean iscopyable(); O método copy apenas copia aqueles elementos de v sobre os quais uma chamada de iscopyable retorna true Suponha, no entanto, que desejamos copiar objetos do tipo Document (e que não dispomos do código desta classe) A classe Document não implementa a interface Copyable, mas implementa um método equivalente chamado isvalid() 17

18 Adapter: Solução Solução: classe DocumentAdapter class DocumentAdapter implements Copyable { private Document document; public DocumentAdapter (Document document) { this.document= document; public boolean iscopyable() { return document.isvalid(); Evidentemente, devemos inserir no vetor a ser copiado objetos do tipo DocumentAdapter e não do tipo Document 18

19 Adapter: Estrutura Analogia com o diagrama de classes do padrão: Target: Copyable Request: iscopyable() Adapter: DocumentAdapter Adaptee: Document SpecificRequest: isvalid 19

20 Adapter: Exemplo Skeleton é um adaptador: f1(...) requisição skeleton f2(...) fn(...) objeto remoto 20

21 Façade Cria uma interface unificada para um conjunto de interfaces de um subsistema; define uma interface de mais alto nível, a qual torna a utilização do sistema mais fácil Suponha o exemplo de um compilador: Scanner s= new Scanner( exemplo1.java ); Parser p= new Parser(s); AST ast= p.parse();... JVMCodeGenerator jvm= new JVMCodeGenerator(ast); jvm.code() Requer conhecimento das interfaces de cada um dos subsistemas de um compilador (Scanner, Parser, AST, CodeGenerator etc) Seria muito mais fácil se existisse um método: void compila(string nomearq) que realizasse todas as tarefas acima Este método funciona como uma fachada para o compilador 21

22 Decorador Adicionam dinamicamente novas responsabilidades a um objeto Constituem uma alternativa a subclasses quando se precisa adicionar novas funcionalidades em uma classe São transparentes aos clientes do objeto decorado Suponha a seguinte interface: interface Channel { public void send(byte[] m) throws NetworkException; public byte[] recv() throws NetworkException; Suponha uma classe TCPChannel: class TCPChannel implements Channel {... 22

23 Decorador Suponha um TCPChannel que compacte/descompacte os dados enviados/recebidos: class TCPZipChannel extends TCPChannel { public void send(byte[] m) throws NetworkException { m= compactação do vetor m super.send(m); public byte[] recv() throws NetworkException { byte[] m= super.recv(); m= descompactação do vetor m return m; Suponha um TCPChannel com um buffer associado (dados são escritos em um buffer; quando buffer cheio são enviados) class TCPBufferChannel extends TCPChannel {... 23

24 Decorador Algumas combinações possíveis: TCPZipChannel TCPChannel TCPBufferedChannel TCPChannel TCPBufferedZipChannel TCPZipChannel TCPChannel TCPLogChannel TCPChannel TCPLogBufferedZipChannel TCPBufferedZipChannel TCPZipChannel TCPChannel UDPZipChannel UDPChannel UDPBufferedChannel UDPChannel UDPBufferedZipChannel UDPZipChannel UDPChannel UDPLogChannel UDPChannel UDPLogBufferedZipChannel UDPBufferedZipChannel UDPZipChannel UDPChannel Problema: extensão via herança é estática e inflexível 24

25 Decorador: Exemplo Decorador de canais de comunicação: interface Channel { public void send(byte[] m) throws NetworkException; public byte[] recv() throws NetworkException; class ChannelDecorator implements Channel { protected Channel channel; public ChannelDecorator(Channel ch){ this.channel = ch; public void send(byte[] m) throws NetworkException { channel.send(m); public byte[] recv() throws NetworkException { return channel.recv(); 25

26 Decorador: Exemplo Decorador de canais de comunicação: public class ZipDecorator extends ChannelDecorator{ public ZipDecorator(Channel c) { super(c); public void send(byte[] m) throws NetworkException { m= compactação do vetor m super.channel.send(m); public byte[] recv() throws NetworkException { byte m[] = super.channel.recv(); m= descompactação do vetor m return m; Outros decoradores: LogChannel, BufferedChannel, XORChannel etc 26

27 Decorador: Exemplo Suponha um TCPChannel que compacte/descompacte os dados enviados/recebidos: Channel= new ZipChannel (new TCPChannel()); Suponha um TCPChannel com um buffer associado: Channel= new BufferChannel (new TCPChannel()); Suponha um UDPChannel com um buffer associado: Channel= new BufferChannel (new UDPChannel()); Suponha um TCPZipChannel com um buffer associado: Channel= new BufferChannel (new ZipChannel (new TCPChannel()); 27

28 Decorador: Estrutura Analogia com exemplo dos canais de Arcademis: Component: Channel ConcreteComponent: TCPChannel, UDPChannel Decorator: ChannelDecorator ConcreteDecoratorA: ZipChannel ConcreteDecoratorB: BufferChannel 28

29 Iterador Disponibilizam modos de acesso a objetos compostos sem expor a representação interna de tais objetos Objetos compostos: listas, árvores, tabelas hash etc Encapsulam código para percorrer uma estrutura de dados Muitas vezes, deseja-se percorrer uma estrutura de dados sem conhecer seu tipo concreto Para isso, basta que o cliente conheça a interface desta estrutura Assim, pode-se mudar de estrutura de dados (de uma lista para uma árvore, por exemplo), sem afetar seus clientes Iteradores: Disponibilizam uma interface comum para percorrer diversas estruturas de dados Permitem que vários caminhamentos sobre uma estrutura estejam ativos 29

30 Iterador: Exemplo void foo(list list) { Iterator iterator= list.createiterator(list); iterator.first(); while (!iterator.isdone()) { Object item = iterator.currentitem(); // Code here to process item. iterator.next();... class LinkedList implements List {... Iterator createiterator (LinkedList list) { return new LinkedListIterator(list); foo (new LinkedList()); // chamada 30

31 Iterador: Estrutura Analogia com exemplo anterior: Aggregate: List ConcreteAggregate: LinkedList ConcreteIterator: LinkedListIterator 31

32 Observador Define uma dependência do tipo um-para-muitos entre objetos, de forma que quando um objeto tem seu estado alterado, todos os seus dependentes são notificados Usado quando a mudança do estado de um objeto (chamado de Subject) requer que outros objetos sejam notificados (chamados de Observers) Uso muito comum em aplicações com interfaces gráficas Fonte: GoF book 32

33 Observador: Exemplo public interface Observer { public void update(subject s); public class Subject { private List observers= new LinkedList(); public void addobserver(observer observer) { observers.add(observer); public void removeobserver(observer observer) { observers.remove(observer); public void notifyobservers() { Iterator it= observers.iterator(); while (it.hasnext()) { Observer obs= (Observer) it.next(); obs.update(this); 33

34 Observador: Exemplo public class Temperature extends Subject { private double value; public double getvalue() { return value; public void setvalue(double value) { this.value= value; notifyobservers(); public class TermometerCelsius implements Observer { public void update(subject s) { double value= ((Temperature) s).getvalue(); System.out.println("Celsius: " + value); 34

35 Observador: Exemplo public class TermometerFahrenheit implements Observer { public void update(subject s) { double value= 1.8 * ((Temperature) s).getvalue() + 32; System.out.println("Fahrenheit: " + value); public class TesteTemperature { public static void main(string[] args) { Temperature t= new Temperature(10); t.addobserver(new TermometerCelsius ()); t.addobserver(new TermometerFahrenheit ()); t.setvalue(100); Saída: Celsius: Fahrenheit:

36 Observador: Estrutura no exemplo, substituída por um parâmetro em update Analogia com exemplo da Temperatura e dos Termômetros: Subject e Observer ConcreteSubject: Temperature ConcreteObserver: TermometerCelsius, TermometerFahrenheit etc 36

37 Strategy Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. Este padrão permite que algoritmos sejam mudados independentemente de seus clientes. Usado quando uma classe é usuária de um certo algoritmo, por exemplo, um algoritmo de ordenação Como existem diversos algoritmos de ordenação, não se quer codificar todos eles dentro desta classe class MyList { ArrayList list; SortStrategy strategy; void setsortstrategy (SortStrategy strategy) { this.strategy= strategy; sort() { strategy.sort(list); 37

38 Strategy: Exemplo abstract class SortStrategy { // interface comum aos algoritmos abstract void sort (ArrayList list); class QuickSort extends SortStrategy { void sort (ArrayList list) {... class ShellSort extends SortStrategy { void sort (ArrayList list) {... 38

39 Strategy: Estrutura Analogia com exemplo anterior: Context: MyList Strategy: SortStratety ConcreteStrategy: QuickSortStratety, ShellSortStratety etc 39

40 Visitor Permite agregar novos métodos a uma hierarquia de classes, sem modificar as classes existentes Example: Considere a seguinte hierarquia de Modem. Problema: Como podemos adicionar um método ConfigureForUnix() method in the Modem interface?

41 Visitor Adiciona-se um método genérico accept() na interface Modem e cria-se uma interface separada ModemVisitor para configurar cada Modem para cada sistema operacional

42 Visitor

43 Visitor

44 Frameworks, Padrões e Bibliotecas

45 Frameworks: Hot Spots Marcus Eduardo Markiewicz and Carlos J. P. de Lucena. Object oriented framework development, Crossroads Magazine, vol. 7, n. 4, p. 3-9, The points of flexibility of a framework are called hot spots. Hot spots are abstract classes or methods that must be implemented. Frameworks are not executable. To generate an executable, one must instantiate the framework by implementing application specific code for each hot spot. Some features of the framework are not mutable and cannot be easily altered. These points of immutability constitute the kernel of a framework, also called the frozen spots of the framework. Frozen spots, unlike hot spots, are pieces of code already implemented within the framework that call one or more hot spots provided by the implementer. The kernel will be the constant and always present part of each instance of the framework. 45

46 Componentes, Frameworks, Padrões Ralph E. Johnson. Components, frameworks, patterns. SIGSOFT Soft. Engineering Notes, p.10-17, vol. 22, n. 3, Componentes: reuso de código The ideal reuse technology provides components that can be easily connected to make a new system. The software developer does not have to know how the component is implemented, and it is easy for the developer to learn how to use it. The electric power system is like that; you can buy a toaster from one store and a television from another, and they will both work at either your home or office. Most people do not know Ohm's Law, yet they have no trouble connecting a new toaster to the power system. Unfortunately, software is not nearly as composable as the electric power system. Componentes da biblioteca java.util: ArrayList, Vector, Stack, Hashtable, StringTokenizer etc 46

47 Frameworks Frameworks (ou arcabouços) permitem reuso de projeto Definição (considerando a estrutura): A framework is a reusable design of all or part of a system that is represented by a set of abstract classes and the way their instances interact. Frameworks definem a arquitetura (e o fluxo de controle) de uma aplicação Definição (considerando o propósito): A framework is the skeleton of an application that can be customized by an application developer. 47

48 Frameworks: Inversão de Controle Mohamed Fayad and Douglas C. Schmidt. Object-Oriented Application Frameworks. CACM, vol. 40, No. 10, October Componentes (bibliotecas de classes, de funções etc) são passivos: threads próprias de uma aplicação decidem quando e como chamar os métodos de componentes Frameworks são ativos: possuem sua própria thread de controle, a qual é responsável por chamar métodos da aplicação Inversão de controle: código da aplicação é chamado por código interno do framework Princípio de Hollywood: don't call us, we'll call you.'' É comum frameworks incluírem o método main da aplicação Escreve-se apenas o código que é chamado pelo método main Diversos padrões de projeto suportam inversão de controle Exemplos: Factory, Observer, Strategy etc 48

49 Frameworks: Exemplo Aplicação gráfica usando o framework Swing de Java: public class SwingApplication implements ActionListener {... JButton button = new JButton("I'm a Swing button!"); button.addactionlistener(this);... public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); Neste exemplo, usou-se o padrão Observador Fonte: Swing Tutorial 49

50 Frameworks: Caixa Branca e Preta Frameworks caixa-branca: Formados por componentes abstratos Instanciados por meio de herança e implementação de interfaces Possibilitam maior flexibilidade Demandam maior conhecimento dos componentes utilizados Frameworks caixa-preta: Constituídos por componentes concretos Instanciados por meio de composição Não demandam grande conhecimento sobre os componentes Apresentam menor flexibilidade que os sistemas caixa-branca Exemplo: frameworks para construção de GUI Frameworks caixa-cinza: Combinam características de caixa branca e caixa preta 50

51 Frameworks: Caixa Branca e Preta Ralph E. Johnson. Components, frameworks, patterns. ACM SIGSOFT Software Engineering Notes, p.10-17, vol. 22, n. 3, If application programmers can use a framework by connecting components together without having to look at their implementation then the framework is a black-box framework. Frameworks that rely on inheritance usually require more knowledge on the part of developers, and so are called white-box. Black-box frameworks are easier to learn to use, but white-box frameworks are often more powerful in the hands of experts. But black-box and white-box frameworks are a spectrum, not a dichotomy. It is common for a framework to be used in a black-box way most of the time, and to be extended when the occasion demands. If a framework is black-box enough, it is used just by instantiating existing classes and connecting them together. Many of the graphical user interface frameworks are like this. 51

52 Frameworks: Caixa Branca e Preta In white box frameworks, also called architecture-driven frameworks, instantiation is only possible through the creation of new classes. Black box frameworks produce instances using configuration scripts. Following configuration, an instantiation automation tool creates the classes and source code. For example, it is possible to use a graphical wizard that guides the user step by step through a framework instantiation process. 52

53 Patterns A pattern describes a problem to be solved, a solution, and the context in which that solution works. It names a technique and describes its costs and benefits. Developers who share a set of patterns have a common vocabulary for describing their designs, and also a way of making design tradeoffs explicit. Patterns are supposed to describe recurring solutions that have stood the test of time. The patterns in the book Design Patterns are closely related to frameworks in another way. These patterns were discovered by examining a number of frameworks, and were chosen as being representative of reusable, object-oriented software. A single framework usually contains many patterns, so these patterns are smaller than frameworks. Design patterns are the micro-architectural elements of frameworks. 53

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1 Design Patterns Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/2012.1/es1 Sumário Reuso de Software Introdução Benefícios e Desvantagens Visão do Reuso Padrões de Projeto

Leia mais

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

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

Leia mais

Padrões de Projeto de Software Orientado a Objetos

Padrões de Projeto de Software Orientado a Objetos Padrões de Projeto de Software Orientado a Objetos Ricardo Argenton Ramos [Baseado nos slides do professor Fabio Kon - USP] 1 Padrões de Projeto de Software OO Também conhecidos como Padrões de Desenho

Leia mais

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

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 vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org)

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org) Padrões de J930 Projeto Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

1Introdução Helder da Rocha (helder@acm.org)

1Introdução Helder da Rocha (helder@acm.org) J930 Padrões Projeto de 1Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

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

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos Programação Avançada Padrões de Projeto de Software 1 Fonte: Oswaldo B. Peres e K19 Treinamentos Introdução Projetar software OO reusável e de boa qualidade é uma tarefa difícil; Para realizar essa tarefa

Leia mais

Introdução à Padrões de Projeto. Glauber Magalhães Pires

Introdução à Padrões de Projeto. Glauber Magalhães Pires Introdução à Padrões de Projeto Glauber Magalhães Pires Agenda O que são padrões de projeto? Para que servem e por que utilizá-los? Elementos constituintes Como escolher o padrão a ser usado? Como são

Leia mais

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Padrões GoF Leonardo Gresta Paulino Murta leomurta@ic.uff.br 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

Leia mais

Prof.ª Esp. Talita Pagani

Prof.ª Esp. Talita Pagani Especialização em Engenharia de Software Prof.ª Esp. Talita Pagani talita.cpb@gmail.com @talitapagani 21/02/2014 Design Patterns Aula 1 Prof.ª Esp. Talita Pagani 1 Informações gerais 1. Definição de Design

Leia mais

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Padrões de Projeto Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Apresentação Conceitos Definição Ponto de vista prático História Padrões de Projeto Conhecidos

Leia mais

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

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC Uma Introdução aos Padrões de Projeto com Java Roberto Willrich INE-CTC-UFSC 1 Introdução aos Padrões de Projeto Programação Introdução Motivação, Definição, Características, Histórico Descrição de um

Leia mais

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS. PADRÕES DE SOFTWARE 1 Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade Grupo de Padrões de Software da UECE (GPS.UECE) Julho-2009 CONTEÚDO Introdução aos Padrões de Software O quê são padrões?

Leia mais

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 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 Disciplina: Engenharia de Software - 2009.1 Professora: Rossana Maria de Castro Andrade Assistente da disciplina: Ricardo Fernandes de Almeida 1 O que é um Padrão? Um padrão descreve

Leia mais

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

Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB GLAUBER VOLKMER SILVIO DANILO DE OLIVEIRA MARÇAL DE LIMA HOKAMA Resumo. Os padrões de projetos tratam

Leia mais

Design Patterns STRATEGY EMERSON BARROS DE MENESES

Design Patterns STRATEGY EMERSON BARROS DE MENESES Design Patterns STRATEGY EMERSON BARROS DE MENESES 1 Breve Histórico Sobre Design Patterns A origem dos Design Patterns (Padrões de Desenho ou ainda Padrões de Projeto) vem do trabalho de um arquiteto

Leia mais

Testes com Design Patterns

Testes com Design Patterns Helder da Rocha (helder.darocha@gmail.com) 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?

Leia mais

Padrões Comportamentais

Padrões Comportamentais Padrões Comportamentais Formulário para Descrição de Padrões Nome e Classificação Intenção Também Conhecido Como Motivação Aplicabilidade Estrutura Participantes Colaboradores Conseqüências Implementação

Leia mais

Frameworks orientados a objetos. Por Sergio Crespo

Frameworks orientados a objetos. Por Sergio Crespo Frameworks orientados a objetos Por Sergio Crespo Frameworks O que é um Framework??? Um framework é um conjunto de classes que constitui um design abstrato para soluções de uma família de problemas - Johnson

Leia mais

Padrões de Desenho. ---------Engenharia de Software---------

Padrões de Desenho. ---------Engenharia de Software--------- Padrões de Desenho Objectivos: Compreender o que são os padrões de desenho? Vantagens e desvantagens em usar os padrões de desenho? Qual o formato de um padrão de desenho? Conhecer as varias secções de

Leia mais

Análise e Projeto Orientados por Objetos

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

Leia mais

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

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Projeto

Leia mais

Programação com Objectos

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 é

Leia mais

Design Pattern Implementation in Java and AspectJ

Design Pattern Implementation in Java and AspectJ Design Pattern Implementation in Java and AspectJ Jan Hannemann Gregor Kiczales In Proceedings of 2002 ACM SIGPLAN conference on OOPSLA. NY, USA. Introdução 2 Introdução 3 Introdução 4 Introdução 5 Introdução

Leia mais

Padrões de Aplicações Empresariais

Padrões de Aplicações Empresariais Padrões de Aplicações Empresariais Paulo Sousa Engenharia da Informação Instituto Superior de Engenharia do Porto Introdução aos Padrões Parte 1 O que é um Pattern? Each pattern describes a problem that

Leia mais

SCE 186- Engenharia de Software

SCE 186- Engenharia de Software Reuso de Software SCE 186- Engenharia de Software Profa Rosana T. Vaccare Braga (parte do material elaborado com base no tutorial sobre reuso da Profa. Claudia Werner) 1 Sumário Introdução Benefícios X

Leia mais

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

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma Pasteur Ottoni de Miranda Junior Alguns Padrões de Projeto Gamma Padrões Gamma de Projeto(ou Gang-of-Four, gof) Os padrões gof foram publicados por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides

Leia mais

Padrões de Software (Software Patterns)

Padrões de Software (Software Patterns) Padrões de Software (Software Patterns) Cleidson de Souza - cdesouza@ufpa.br Departamento de Informática Universidade Federal do Pará Agenda! Definição! Histórico! Motivação! Exemplo Estratégia MVC! Forma

Leia mais

PADRÕES DE PROJETO. Cleviton Monteiro (cleviton@gmail.com)

PADRÕES DE PROJETO. Cleviton Monteiro (cleviton@gmail.com) PADRÕES DE PROJETO Cleviton Monteiro (cleviton@gmail.com) Roteiro Atributos de qualidade Boas práticas de projeto Code Smell Padrões de Projeto Atributos de qualidade Coesão Acoplamento Atributos de qualidade

Leia mais

Padrões de Projeto. Bibliografia. Nomenclatura

Padrões de Projeto. Bibliografia. Nomenclatura Padrões de Projeto Prof. Maria Augusta Vieira Nelson PUC Minas Prof. Torsten Paul Nelson 1 Bibliografia LARMAN, Graig. Utilizando UML e Padroes:Uma introdução a análise e ao projeto orientados a objetos.

Leia mais

Padrões de Desenho (Design Patterns)

Padrões de Desenho (Design Patterns) Padrões de Desenho (Design Patterns) O que são padrões de desenho Porque são úteis Conhecer alguns padrões 1 Padrões (Patterns) Design Patterns Explained: A New Perspective on Object-Oriented Design, Alan

Leia mais

Tópicos Avançados em Engenharia de Software

Tópicos Avançados em Engenharia de Software Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Programa de Pós-Graduação em Ciência da Computação Tópicos Avançados em Engenharia de Software Padrões e Frameworks (Aula 01-

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

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

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação Ademar Aguiar Universidade do Porto & INESC Porto ademar.aguiar at fe.up.pt FEUP

Leia mais

Histórico de revisões

Histórico de revisões Design Patterns Histórico de revisões Data Versão Descrição Autor 15/1/2014 1.0 Finalização da primeira versão HEngholmJr OBJETIVOS Fornecer uma visão geral sobre Design Patterns visando atingir os requisitos

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 8 Modelagem de classes de projeto A perfeição (no projeto) é alcançada, não quando não há

Leia mais

PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE

PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE Nelson Ribeiro de Carvalho Júnior 1 RESUMO Atualmente o cenário mundial cuja dependência do software está cada vez mais evidente requer que

Leia mais

Padrões de Software (Software Patterns)

Padrões de Software (Software Patterns) Padrões de Software (Software Patterns) Cleidson de Souza - cdesouza@ufpa.br Departamento de Informática Universidade Federal do Pará Agenda! Definição! Histórico! Considerações! Forma de um Padrão! Exemplo!

Leia mais

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

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR FACULDADE DE CIÊNCIAS APLICADAS SAGRADO CORAÇÃO DIRETORIA DE ENSINO SUPERIOR COORDENAÇÃO DO CURSO DE SISTEMAS DE INFORMAÇÃO GUSTAVO ANDRÉ DE FREITAS RILIANE ALPOIM PARIS RODRIGO SILVA DE SOUZA PADRÕES

Leia mais

Profa. Thienne Johnson

Profa. Thienne Johnson Profa. Thienne Johnson E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison- Wesley, 1995. Conhecido como GoF (Gang of Four) Versão

Leia mais

Frameworks. Pasteur Ottoni de Miranda Junior

Frameworks. Pasteur Ottoni de Miranda Junior Frameworks Pasteur Ottoni de Miranda Junior 1-Definição Apesar do avanço das técnicas de desenvolvimento de software, a construção de software ainda é um processo extremamente complexo.a reutilização tem

Leia mais

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

Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP Padrões de Projeto (design patterns) Apresentação do conceito de design pattern Classificação dos design

Leia mais

Java RMI. Alcides Calsavara

Java RMI. Alcides Calsavara Java RMI Alcides Calsavara Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância de uma classe Java) situado em outra máquina

Leia mais

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

Curso - Padrões de Projeto Módulo 2: Padrões de Criação Curso - Padrões de Projeto Módulo 2: Padrões de Criação Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

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

POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Padrões de Projeto e POA Lincoln S. Rocha (lincoln@great.ufc.br) POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Padrões de Projeto e POA Background Artigo do Kiczales 2 3 1 Objetivo da Programação?

Leia mais

OO IMPACTO DA UTILIZAÇÃO DE DESIGN

OO IMPACTO DA UTILIZAÇÃO DE DESIGN OO IMPACTO DA UTILIZAÇÃO DE DESIGN PATTERNS NAS MÉTRICAS E ESTIMATIVAS DE PROJETOS DE SOFTWARE: a utilização de padrões tem alguma influência nas estimativas? Ricardo Alexsandro de Medeiros Valentim 1

Leia mais

MÓDULO Modelagem de classes de projeto

MÓDULO Modelagem de classes de projeto MÓDULO Modelagem de classes de projeto A perfeição (no projeto) é alcançada, não quando não há nada mais para adicionar, mas quando não há nada mais para retirar. -Eric Raymond, The Cathedral and the Bazaar

Leia mais

Desafios na construção de um Framework de acesso a dados em PHP

Desafios na construção de um Framework de acesso a dados em PHP 4 5 Desafios na construção de um Framework de acesso a dados em PHP Dimas Ferreira Vidal O presente artigo procura mostrar os principais desafios no processo de desenvolvimento do framework PHPO2_DB de

Leia mais

Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo

Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo:Introdução a Frameworks para Aplicações Baseado em Building Application Frameworks Mohamed E. Fayad

Leia mais

Padrões de Design. Jair C Leite

Padrões de Design. Jair C Leite Padrões de Design Jair C Leite 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

Leia mais

ESPECIFICAÇÃO DO AMBIENTE EXPSEE SEGUNDO O MÉTODO CATALYSIS

ESPECIFICAÇÃO DO AMBIENTE EXPSEE SEGUNDO O MÉTODO CATALYSIS ESPECIFICAÇÃO DO AMBIENTE EXPSEE SEGUNDO O MÉTODO CATALYSIS RESUMO Este artigo apresenta a especificação de um sistema gerenciador de workflow, o ExPSEE, de acordo com a abordagem de desenvolvimento baseado

Leia mais

4 - Padrões de Construção

4 - Padrões de Construção J930 Padrões Projeto de 4Padrões de Construção Helder da Rocha (helder@acm.org) argonavis.com.br Introdução A maneira padrão de construir objetos em Java é através de construtores Toda classe tem um construtor:

Leia mais

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

Especialização em web com interfaces ricas. Padrões de Projeto - Estruturais Especialização em web com interfaces ricas Padrões de Projeto - Estruturais Prof. Fabrízzio Alphonsus A. M. N. Soares fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática Universidade

Leia mais

Frameworks O que é um framework?

Frameworks O que é um framework? Frameworks Qual é o problema? Programar é difícil Onde está a maior dificuldade? "Interface design and functional factoring constitute the key intelectual content of software and is far more difficult

Leia mais

ARMAZENAMENTO DE DADOS INTERMEDIÁRIOS

ARMAZENAMENTO DE DADOS INTERMEDIÁRIOS ARMAZENAMENTO DE DADOS INTERMEDIÁRIOS Leandro R. Pádua Divisão de Ciência da Computação Instituto Tecnológico de Aeronáutica (ITA) São José dos Campos, SP Brasil padualrp@gmail.com Abstract. When performing

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Introdução GUI Classes abstratas São classes que não podem ser instanciadas,

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Classes abstratas São classes que não podem ser instanciadas, porque representam

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II Padrões de Projeto Padrão Decorator (Decorador) Adiciona responsabilidades de forma

Leia mais

Padrões. Identificando padrões

Padrões. Identificando padrões 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.

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação Última actualização: 25 de Outubro de 2008 Ano Lectivo 2008/2009 1º Semestre ção com Objectos ção Centrada em Objectos Docente: Paulo Leocádio Web: www.uac.pt/~pleocadio E-mail: pleocadio@uac.pt : Competências:

Leia mais

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

Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação Ademar Aguiar Universidade do Porto & INESC Porto ademar.aguiar at fe.up.pt FEUP

Leia mais

PROJECT FRAMEWORK MODEL PMF: PARA O DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO ORIENTADOS A OBJETOS Leandro Doutor Branquinho Sérgio Teixeira de

PROJECT FRAMEWORK MODEL PMF: PARA O DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO ORIENTADOS A OBJETOS Leandro Doutor Branquinho Sérgio Teixeira de PROJECT FRAMEWORK MODEL PMF: PARA O DESENVOLVIMENTO DE SISTEMAS DE INFORMAÇÃO ORIENTADOS A OBJETOS Leandro Doutor Branquinho Sérgio Teixeira de Carvalho Leandro D. Branquinho e Sérgio Teixeira de Carvalho

Leia mais

Utilizando Design Patterns GoF no apoio ao desenvolvimento de um Framew ork Java Marcelo Torres de Albuquerque IME/UERJ torres.marcelo@gmail.

Utilizando Design Patterns GoF no apoio ao desenvolvimento de um Framew ork Java Marcelo Torres de Albuquerque IME/UERJ torres.marcelo@gmail. Utilizando Design Patterns GoF no apoio ao desenvolvimento de um Framew ork Java Marcelo Torres de Albuquerque IME/UERJ torres.marcelo@gmail.com Alexandre Rojas PET/COPPE rojas@pet.coppe.ufrj.br Paulo

Leia mais

FATEsC - Uma Ferramenta de apoio ao teste estrutural de componentes

FATEsC - Uma Ferramenta de apoio ao teste estrutural de componentes FATEsC - Uma Ferramenta de apoio ao teste estrutural de componentes Vânia Somaio Teixeira 1,2, Marcio Eduardo Delamaro 1, Auri Marcelo Rizzo Vincenzi 3 1 Programa de Pós-graduação em Ciência da Computação

Leia mais

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância 5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância O capítulo anterior apresentou uma discussão sobre a inclusão dos chamados learning services no processo

Leia mais

Boas Práticas de Programação

Boas Práticas de Programação Boas Práticas de Programação João Arthur Brunet Monteiro Mestrando em Informática - COPIN 25/10/2008 João Arthur Brunet Monteiro 1/ 27 Roteiro Introdução 1 Introdução Objetivos Contextualização 2 Práticas

Leia mais

Técnicas de Programação Avançada TCC-00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br

Técnicas de Programação Avançada TCC-00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br Técnicas de Programação Avançada TCC-00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br Conteúdo: Padrão MVC Documento baseado no material preparado pelo Prof. Luiz André (http://www.ic.uff.br/~lapaesleme/)

Leia mais

Framework para Camada de Apresentação

Framework para Camada de Apresentação UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO Framework para Camada de Apresentação Claudio Ulisses Nunes Biava Florianópolis 2004 UNIVERSIDADE

Leia mais

Universidade de Brasília UnB Faculdade UnB Gama FGA Curso de Engenharia de Software. Documentação Framework 0MQ.

Universidade de Brasília UnB Faculdade UnB Gama FGA Curso de Engenharia de Software. Documentação Framework 0MQ. Universidade de Brasília UnB Faculdade UnB Gama FGA Curso de Engenharia de Software Documentação Framework 0MQ. Autores: Cleiton da Silva Gomes Hebert Douglas de Almeida Thiago Silveira Honorato Vanessa

Leia mais

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

Módulo 07 Características Avançadas de Classes Módulo 07 Características Avançadas de Classes Última Atualização: 15/06/2010 1 Objetivos Descrever variáveis, métodos e iniciadores static Descrever a semântica do modificador final em classes, métodos

Leia mais

Padrões de projeto 1

Padrões de projeto 1 Padrões de projeto 1 Design Orientado Objeto Encapsulamento Herança Polimorfismo Design Patterns 2 Responsabilidades Booch e Rumbaugh Responsabilidade é um contrato ou obrigação de um tipo ou classe. Dois

Leia mais

FA PorT: Um Framework para Sistemas Portfólio-Tutor utilizando Agentes

FA PorT: Um Framework para Sistemas Portfólio-Tutor utilizando Agentes FA PorT: Um Framework para Sistemas Portfólio-Tutor utilizando Agentes Fábio Nicácio de Medeiros, Flávio Mota Medeiros, Arturo Hernández Domínguez Instituto de Computação Universidade Federal de Alagoas

Leia mais

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores 1 Exercícios Exercício 1: Construtores e Testes Analise a classe Conta.java, mostrada na

Leia mais

Framework para jogos de cartas

Framework para jogos de cartas Framework para jogos de cartas por André Luís Knabben e Thiago Robert Professor Doutor Ricardo Pereira e Silva Orientador Resumo Projetar artefatos de software visando a reusabilidade é uma tarefa complexa.

Leia mais

Proposta para a Implementação do Cadastro de um Log de Auditoria Baseada em Padrões de Projeto

Proposta para a Implementação do Cadastro de um Log de Auditoria Baseada em Padrões de Projeto FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Trabalho de Diplomação Gabriel Augusto Gimenes 9881 André Marcos Silva (Orientador) Trabalho de Diplomação Proposta para a Implementação

Leia mais

Decorator Pattern. SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br. Junho de 2008. Departamento de Informática / UFMA

Decorator Pattern. SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br. Junho de 2008. Departamento de Informática / UFMA Decorator Pattern SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br Departamento de Informática / UFMA Junho de 2008 Revisando os conceitos Herança é poderosa mas não é flexível Comportamento

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

Uma Noção Intuitiva dos Padrões de Desenho de Software

Uma Noção Intuitiva dos Padrões de Desenho de Software 1 1 Uma Noção Intuitiva dos Padrões de Desenho de Software Prof. Dr. Italo S. Vega italo@pucsp.br 5 de dezembro de 2001 São Paulo, SP 2 Agenda Motivação (5 min.) Padrões (20 min.) Exemplo (10 min.) Conclusões

Leia mais

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Curitiba PLANO DE ENSINO CURSO Engenharia Eletrônica MATRIZ FUNDAMENTAÇÃO LEGAL (Resolução do COEPP que aprovou a matriz curricular

Leia mais

Flávio Pernes de Medeiros

Flávio Pernes de Medeiros Flávio Pernes de Medeiros METODOLOGIA DA PESQUISA II Rio de Janeiro Flávio Pernes de Medeiros Março de 2011 Agradecimentos A minha família em especial minha esposa Newli Maura e filhos Bruno e Nicole.

Leia mais

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

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Operação

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

PictureFrame: Um padrão para criação de imagens reutilizáveis

PictureFrame: Um padrão para criação de imagens reutilizáveis PictureFrame: Um padrão para criação de imagens reutilizáveis Paulo A. S. Costa 1,2,3, Ismayle S. Santos 1,2,3, Rossana M. C. Andrade 1,2,4 1 Grupo de Redes, Engenharia de Software e Sistemas - GREaT 2

Leia mais

Padrões de Projeto em Aplicações Web Desenvolvendo projetos web consistentes baseados em reuso de soluções

Padrões de Projeto em Aplicações Web Desenvolvendo projetos web consistentes baseados em reuso de soluções 1/ Padrões de Projeto em Aplicações Web Desenvolvendo projetos web consistentes baseados em reuso de soluções Adote as melhores práticas de reuso de soluções com a abordagem de Padrões de Projeto (Design

Leia mais

SAMOA Um assistente automatizado para detecção de padrões de projetos em Diagramas UML, na WEB. Msc. Edemberg Rocha da Silva 1, Dr.

SAMOA Um assistente automatizado para detecção de padrões de projetos em Diagramas UML, na WEB. Msc. Edemberg Rocha da Silva 1, Dr. SAMOA Um assistente automatizado para detecção de padrões de projetos em Diagramas UML, na WEB Msc. Edemberg Rocha da Silva 1, Dr. Ulrich Schiel 2 1 Centro de Educação Tecnológica da Paraíba CEFET-PB Unidade

Leia mais

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1 Streams III Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 jvo@ualg.pt José Valente de Oliveira 16-1 Previously: Serializing a collection public

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO. Armanda Rodrigues 6 de Outubro 2011

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO. Armanda Rodrigues 6 de Outubro 2011 ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO Armanda Rodrigues 6 de Outubro 2011 2 Guardar todos os documentos da biblioteca Vamos voltar ao nosso exemplo da biblioteca Os utilizadores do sistema

Leia mais

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes Introdução Conceitos básicos programação distribuída + programação orientada a objetos = Objetos distribuídos Motivação

Leia mais

DISCIPLINA: INGLÊS TÉCNICO E INSTRUMENTAL II CARGA HORÁRIA: 33 HORAS PERÍODO: 3º SEMESTRE LETIVO: 2012.2 CRÉDITOS: 02

DISCIPLINA: INGLÊS TÉCNICO E INSTRUMENTAL II CARGA HORÁRIA: 33 HORAS PERÍODO: 3º SEMESTRE LETIVO: 2012.2 CRÉDITOS: 02 DISCIPLINA: INGLÊS TÉCNICO E INSTRUMENTAL II CARGA HORÁRIA: 33 HORAS PERÍODO: 3º SEMESTRE LETIVO: 2012.2 CRÉDITOS: 02 OBJETIVOS Ler e compreender textos de gêneros diversos utilizando as estratégias/técnicas

Leia mais

Padrão Arquitetura em Camadas

Padrão Arquitetura em Camadas Padrão Arquitetura em Camadas Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Definição Estimula a organização

Leia mais

Padrões de Projeto em Desenvolvimento Web SCC 266. Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail.

Padrões de Projeto em Desenvolvimento Web SCC 266. Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail. Padrões de Projeto em Desenvolvimento Web SCC 266 Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail.com) 2.semestre 2010 Instituto de Ciências Matemáticas e de Computação

Leia mais

Um Framework MVC para. Aplicações em Java utilizando Swing.

Um Framework MVC para. Aplicações em Java utilizando Swing. Um Framework MVC para Aplicações em Java utilizando Swing. Alessandro Lemser Curso de Ciência da Computação Universidade do Vale do Itajaí Campus São José São José, SC 88115-100, Brasil alemser@brturbo.com

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com Relembrando... Mecanismos de Comunicação Middleware Cenário em uma rede Local

Leia mais

Integrando Design Patterns em Arquiteturas de Software

Integrando Design Patterns em Arquiteturas de Software Integrando Design Patterns em Arquiteturas de Software Sérgio Teixeira de Carvalho Orlando Gomes Loques Fi lho sergiotc@ic.uff.br loques@ic.uff.br Computação Aplicada e Automação Instituto de Computação

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

Design Patterns: Padrões para toda a vida

Design Patterns: Padrões para toda a vida Design Patterns: Padrões para toda a vida Palestrantes: Elaine Quintino da Silva Formada em Ciência da Computação pela Unifenas-MG. Possui Mestrado e Doutorado em Ciência da Computação pelo ICMC-USP. Atualmente

Leia mais

Um Arcabouço open source em Python para DBC com

Um Arcabouço open source em Python para DBC com Um Arcabouço open source em Python para DBC com Suporte à Evolução Dinâmica não Antecipada Yguaratã C. Cavacanti 1, Hyggo Oliveira de Almeida 1, Evandro Costa 2 1 Instituto de Computação Universidade Federal

Leia mais

Pós-Graduação em Engenharia de Software com UML

Pós-Graduação em Engenharia de Software com UML Pós-Graduação em Engenharia de Software com UML Desenvolvimento Baseado em Componentes I Fundamentos E-mail: sergio.tanaka@audare.com.br DBC Parte I Motivação Reutilização de Software Desenvolvimento Baseado

Leia mais