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

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

Download "Factory Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA"

Transcrição

1 Factory Pattern SISMO - Sistemas e Mobilidade Departamento de Informática / UFMA Junho de 2008

2 Do que vamos tratar? Criação de objetos não é simplesmente usar o operador new sobre uma classe Às vezes, a instanciação de objetos deve ser encapsulada A instanciação também pode gerar problemas de acoplamento Como lidar com esses problemas?

3 Programando para interface Quando escrevemos código do tipo: Combatente soldado = new Caveira(); estamos atribuindo uma instância (de uma classe concreta) a uma referência para interface Também poderíamos instanciar objetos em qualquer parte do nosso código, dependendo de algum contexto em tempo de execução. Por exemplo: Combatente soldado; if (flag) soldado = new Caveira(); else soldado = new SoldadoDaSelva();

4 Qual o problema com o código anterior? Novamente, os problemas estão relacionados à manutenção Quando houver necessidade de mudança, é necessário identificar onde os objetos são criados e fazer as alterações necessárias Podemos criar objetos em qualquer parte do código, o que dificulta a manutenção o problema não é com o operador new, mas com as inevitáveis mudanças

5 Identificando o que muda A Pizza Rute, uma pizzaria hightec, tem todo o processo de produção de pizzas automatizado a partir da emissão do pedido Figura: Código de Pedido

6 Identificando o que muda II Para enfrentar a concorrência, novas pizzas devem ser adicionadas Enquanto outras, que não têm muita saída, devem ser exlcuídas do menu A instanciação de classes concretas vai gerar problemas de manutenção A criação de instâncias é um aspecto sujeito a mudanças Além de acontecer em qualquer parte do código

7 Encapsulando a criação de objetos Simple Factory Figura: Construindo uma Fábrica simples de Pizzas Simple Factory não é considerado um padrão de design, mas já ajuda encapsulando a criação de objetos

8 Usando a Fábrica de Pizzas Figura: Código sem instanciação de classes concretas

9 O sucesso da Pizza Rute Surgiram franquias em diferentes regiões e foi necessário adaptar as pizzas para gostos diferentes (massa fina, grossa, crocante, etc.) Um meio de lidar com esse problema seria criar diferentes fábricas regionais para produzir pizzas ao gosto de cada região Figura: Regionalizando as fábricas

10 A evolução das franquias Contudo, as franquias se diferenciaram não só em relação aos tipos de pizza, mas também em relação às outras fases da produção Já que isso estava acontecendo, talvez fosse melhor diferenciar todo o processo de criação de uma forma flexível

11 Um Arcabouço para a PizzaRute Figura: Arcabouço

12 Características do arcabouço Pusemos o método createpizza() de volta à classe PizzaRute Esse é agora um método abstrato. Isso obriga a criarmos subclasses de lojas regionais da Pizza Rute, para implementarem esse método de acordo com o gosto de cada região, além de permitir reescrever outros métodos, se for necessário

13 Diagrama de classes do Arcabouço Figura: Arcabouço PizzaRute

14 Subclasse da classe PizzaRute Figura: Pizza Rute de São Paulo

15 Algumas Consequências Quando o método pedidopizza() é executado ele chama o método createpizza() para criar uma pizza. O método createpizza() sobrescrito nas subclasses da classe PizzaRute() é que decide como a pizza vai ser criada Ao definir qual a subclasse de PizzaRute() vai ser usada, o código cliente define, indiretamente, o estilo de todas as pizzas criadas porque cada subclasse implementa sua versão do método createpizza()

16 Mais Consequências A responsabilidade pela instanciação de pizzas foi movida para o método createpizza(), o qual funciona como uma fábrica Um método fábrica encapsula a criação de objetos em subclasses Isso desacopla o código cliente, na superclasse, da criação dos objetos, nas subclasses

17 Método Fábrica (FactoryMethod) Considere a seguinte instrução: abstract Produto factorymethod(string tipo); O factory method é abstrato, contando com as subclasses para implementá-lo O factory method retorna um produto normalmente usado pelos métodos definidos na superclasse O factory method isola o cliente (no exemplo, o método pedidopizza) de saber que tipo de produto concreto está sendo criado O factory method pode ser parametrizado para selecionar variações do produto

18 A classe Pizza I Figura: Definição da classe Pizza

19 A classe Pizza II Figura: Definição da classe Pizza

20 A classe Pizza Concreta I Figura: Pizza no estilo de São Paulo

21 A classe Pizza Concreta II Figura: Pizza no estilo de São Luis

22 Usando o arcabouço Figura: Testando o sistema

23 O Padrão Factory Method Classificação Propósito: Criacional Escopo: Objetos Intenção define uma interface para criar um objeto, mas deixa as subclasses decidirem que classes instanciar a.k.a. virtual constructor

24 Aplicabilidade Use o padrão Factory Method quando... Quando uma classe não pode antecipar a classe de objetos que deve criar Quando uma classe quer que suas subclasses especifiquem os objetos que criam Quando quiser localizar o conhecimento a respeito de subclasses às quais são delegadas responsabilidades específicas (em hierarquias de classes paralelas)

25 Aplicabilidade II Figura: Hierarquias Paralelas

26 Estrutura do Factory Method Figura: Diagrama de Classes

27 Participantes Product: define a interface dos objetos criados pelo método fábrica ConcreteProduct: implementa a interface definida em Product Creator: declara o método fábrica (que retorna um objeto do tipo Product); ConcreteCreator: redefine o método fábrica para retornar uma instância da classe ConcreteProduct.

28 Colaborações Creator depende de suas subclasses para definir o método fábrica que retorne uma instância do ConcretProduct apropriado

29 Mais um exemplo Frameworks: considere um arcabouço para aplicações que pode apresentar múltiplos documentos para o usuário O arcabouço define duas classes abstratas: Application e Document O tipo de documento que a aplicação deve abrir depende do tipo de aplicação O arcabouço deve instanciar classes, mas só conhece classes abstratas

30 Classes do exemplo Figura: Diagrama de Classes

31 Consequências O código lida somente com a interface de Product É mais vantajoso quando Creator precisa ter subclasses de qualquer maneira Conecta hierarquia de classes paralelas que ocorrem quando uma classe delega algumas de suas responsabilidades para uma classe separada

32 Dependência de objetos Quando um código instancia diretamente um objeto, fica dependente de sua classe concreta Se a implementação dessas classes muda, o código cliente deve mudar também Cada classe concreta instanciada em um código é uma dependência a mais

33 Dependência de objetos Princípio da Inversão de Dependência: Dependa de abstração. Não dependa de classe concreta Isso implica não só que componentes de alto nível devem depender, sempre que possível, apenas de abstrações, mas componentes de baixo nível também. Por exemplo: a classe PizzaRute não instancia diretamente classes concretas de pizzas, mas encapsula essa tarefa nos métodos fábrica createpizza de suas subclasses Por outro lado, as classes de pizzas concretas dependem da classe Pizza porque implementam esta interface (ou classe abstrata)

34 Porque Princípio de Inversão de Dependência? Intuitivamente, fazemos componentes de alto nível depender de componentes de baixo nível, como no caso de classes instanciando diretamente classes concretas dentro de seu código A inversão de dependência se dá quando tanto componentes de alto nível quanto componentes de baixo nível dependem ambos de abstrações

Padrões de Projeto. Factory Method

Padrões de Projeto. Factory Method Tópicos Avançados em Linguagem de Programação Padrões de Projeto Prof. Alexandre Vidal DEINF-UFMA Classificação: Propósito: Criacional Escopo: Objetos Intenção: Construção Intenção: define uma interface

Leia mais

INF011 Padrões de Projeto. 05 Factory Method

INF011 Padrões de Projeto. 05 Factory Method INF011 Padrões de Projeto 05 Factory Method Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação

Leia mais

Creational Patterns Factory method

Creational Patterns Factory method Objetivo do Factory method é definir qual será a subclasse que utilizada um cliente. Permite que o sistema funcione sem o conhecimento prévio das subclasses. Assim um framework pode ser construído apenas

Leia mais

Padrões Fábrica. Simple Factory Factory Method

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

Leia mais

Padrões de Projeto. Factory Method

Padrões de Projeto. Factory Method Padrões de Projeto Padrões de Criação Factory Method Prof. Eduardo N F Zagari Prof. Ivan Granja Factory Method Também conhecido como Construtor Virtual Em muitas aplicações OO, um objeto cliente precisa

Leia mais

Abstract Factory Pattern

Abstract Factory Pattern Abstract Factory Pattern SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br Departamento de Informática / UFMA Junho de 2008 Comandar uma franquia não é bolinho Estava tudo muito bom com a franquia

Leia mais

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

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,

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Abstract Factory Paulo Gomide Departamento de Ciência da Computação Universidade de Itaúna Sumary Abstract Factory Definição, Motivação e Aplicabilidade Estrutura, Elementos

Leia mais

Padrões de Projeto. Abstract Factory

Padrões de Projeto. Abstract Factory Padrões de Projeto Padrões de Criação Abstract Factory Prof. Eduardo N F Zagari Prof. Ivan Granja Abstract Factory Provê uma interface para criação de famílias de objetos relacionados ou dependentes sem

Leia mais

INF011 Padrões de Projeto. 03 Abstract Factory

INF011 Padrões de Projeto. 03 Abstract Factory INF011 Padrões de Projeto 03 Abstract Factory Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação

Leia mais

Padrões GoF Strategy, Observer, Singleton, Abstract Factory e outros...

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

Leia mais

Notação de Classes e Objetos

Notação de Classes e Objetos Padrões Criacionais Notação Notação de Classes e Objetos referencia objeto ClasseAbstrata agrega um ClasseConcreta operaçãoabstrata() cria muitos SubclasseConcreta1 operação() variáveldeinstância SubclasseConcreta2

Leia mais

Abstract Factory. Edeyson Andrade Gomes

Abstract Factory. Edeyson Andrade Gomes Abstract Factory Edeyson Andrade Gomes www.edeyson.com.br Introdução Objetivo Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Também

Leia mais

Classes e Objetos. Sintaxe de classe em Java

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

Leia mais

Introdução aos Padrões de Projeto. Sylvio Barbon Jr

Introdução aos Padrões de Projeto. Sylvio Barbon Jr Introdução aos Padrões de Projeto Sylvio Barbon Jr 25 février 2016 Introdução Disciplina Engenharia de Software : São Tratados principalmente os tesmas : Metodologia : No desenvolvimento

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

Padrões Comportamentais

Padrões Comportamentais Padrões Comportamentais Parte 2 Soluções Reutilizáveis de Software Orientado a Objetos Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Padrões de Projeto Comportamentais 1. Chain of Responsibility 2.

Leia mais

" ##$#$!% # & #$#$ !!!!"!

 ##$#$!% # & #$#$ !!!!! " ##$#$!% # & #$#$ Abstract Factory, Builder, Singleton, Factory Method, Prototype, Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy, Chain of Responsability, Command, Interpreter, Iterator,

Leia mais

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

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

Leia mais

Interface vs. Implementação Herança vs. Composição

Interface vs. Implementação Herança vs. Composição Interface vs. Implementação Herança vs. Composição O que vimos na última aula? Padrões GRASP Expert Creator Low Coupling High Cohesion 2 O que veremos hoje? Interface e Polimorfismo Interface como uma

Leia mais

Etapas principais do desenvolvimento de software Padrões arquiteturais Padrões de projeto

Etapas principais do desenvolvimento de software Padrões arquiteturais Padrões de projeto Etapas principais do desenvolvimento de software Padrões arquiteturais Padrões de projeto 1 Criar aplicações não é apenas escrever código (code and fix) Atualmente as aplicações exigem arquiteturas e código

Leia mais

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks 48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o

Leia mais

T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Padrões de Projeto. Prof. Alexandre Vidal. DEINF-UFMA Janeiro de 2007

T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Padrões de Projeto. Prof. Alexandre Vidal. DEINF-UFMA Janeiro de 2007 Padrões de Projeto Prof. Alexandre Vidal DEINF-UFMA Janeiro de 2007 Iterator (padrão comportamental) intenção: prover acesso seqüencial aos elementos de um objeto agregado sem expor sua representação interna.

Leia mais

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O REVIEW CLASSES E INSTÂNCIAS. REVIEW - O OPERADOR THIS This faz referencia a métodos e atributos da própria classe REVIEW - EXEMPLO

Leia mais

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

TÉCNICAS DE ORIENTAÇÃO A OBJETOS TÉCNICAS DE ORIENTAÇÃO A OBJETOS APLICAÇÃO EM: C# E JAVA Sumário INTRODUÇÃO... 4 PARADIGMAS DE PROGRAMAÇÃO... 5 PROGRAMAÇÃO PROCEDURAL... 5 PROGRAMAÇÃO ESTRUTURADA... 5 PROGRAMAÇÃO ORIENTADA A OBJETOS...

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Lista de Exercícios AV1 01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Dentre as alternativas abaixo identifique a que NÃO define uma situação em que deve

Leia mais

M e d iator. Padrões de Projeto. Mediator. Prof. Alexandre Vidal DEINF-UFMA. M e di a t or

M e d iator. Padrões de Projeto. Mediator. Prof. Alexandre Vidal DEINF-UFMA. M e di a t or T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o Padrões de Projeto Prof. Alexandre Vidal DEINF-UFMA Classificação: Propósito: Comportamental Escopo: Objeto Intenção: definir

Leia mais

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

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

Leia mais

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo Padrões de Projeto Parte 1 Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Padrões de Projeto de Software OO Também conhecidos como Padrões de Projeto de Software OO ou simplesmente como Padrões A Inspiração

Leia mais

INF011 Padrões de Projeto. 10 Bridge

INF011 Padrões de Projeto. 10 Bridge INF011 Padrões de Projeto 10 Bridge Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação Tecnológica

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

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância

Leia mais

Singleton. Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo:

Singleton. Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo: Introdução Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo: public class Config { public static final String DEFAULT_READ_COMMUNITY_NAME =

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

C com introdução a OO

C com introdução a OO ... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software Enzo Seraphim 1 Padrões de Construção A maneira

Leia mais

Polimorfismo. O que é polimorfismo?

Polimorfismo. O que é polimorfismo? O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus

Leia mais

Universidade Federal de Uberlândia

Universidade Federal de Uberlândia Universidade Federal de Uberlândia Faculdade de Computação Disciplina: POO1 Prof. Fabiano Dorça Classes e métodos abstratos É impossível instanciar objetos a partir de classes abstratas. Classes abstratas

Leia mais

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos Objetivo da Unidade*: Conhecer e aplicar os conceitos mais importantes associados a orientação a objetos. 5.1 Métodos e atributos estáticos Atributos

Leia mais

Tópicos Avançados em Linguagem de Programação. Builder. Builder. Builder. Classificação: Padrões de Projeto. Builder Pattern.

Tópicos Avançados em Linguagem de Programação. Builder. Builder. Builder. Classificação: Padrões de Projeto. Builder Pattern. Tópicos Avançados em Linguagem de Programação Padrões de Projeto Pattern Prof. Alexandre Vidal DEINF-UFMA Classificação: Propósito: Criacional / Escopo: Objetos Padrão de Construção (intenção/metsker)

Leia mais

Padrões de Projeto. B r i dge. B r i d ge. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Classificação: Intenção:

Padrões de Projeto. B r i dge. B r i d ge. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Classificação: Intenção: T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o Padrões de Projeto Classificação: Propósito: Estrutural Escopo: Objetos Bridge Prof. Alexandre Vidal DEINF-UFMA Intenção:

Leia mais

Modificadores de acesso e atributos de classe

Modificadores de acesso e atributos de classe Modificadores de acesso e atributos de classe Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Mas o que é mesmo Padrão de Projeto?

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

Leia mais

Repetindo mais código?

Repetindo mais código? Classe Abstrata 1 Repetindo mais código? p Como esta nossa classe Funcionario e ControleBonficação; p O método registra recebe qualquer referência do tipo Funcionario, isto é, podem ser objetos do tipo

Leia mais

Structural Patterns - Bridge

Structural Patterns - Bridge Objetivo é separar a abstração da implementação, de tal forma que possibilidade um independência entre as duas. Caminho natural para uma abstração com diversas possibilidades de implementação é a herança.

Leia mais

Frameworks. Viviane Torres da Silva

Frameworks. Viviane Torres da Silva Frameworks Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/es1 Frameworks Motivação Definição Classificação Características Propriedades Técnicas de Customização Frameworks

Leia mais

Programação Orientada a Objetos. Padrões Estruturais

Programação Orientada a Objetos. Padrões Estruturais Programação Orientada a Objetos Padrões Estruturais 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 objetos

Leia mais

4 FrAMEx. 4.1.Visão Geral

4 FrAMEx. 4.1.Visão Geral 28 4 FrAMEx Devido à ausência de ambientes flexíveis, robustos e confiáveis para investidores desenvolverem e testarem estratégias baseadas em modelos quantitativos, o framework A Multi-Agent System Framework

Leia mais

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Aula 9 Herança. Prof. Jefersson Alex dos Santos Aula 9 Herança Prof. Jefersson Alex dos Santos Roteiro Introdução Conversão de tipo explícita (Cast) Acesso Protegido A classe Object A classe Class Reflexão Recomendações de Projeto Herança Técnica necessária

Leia mais

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces 0 Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces Classes Abstratas À medida que você sobe na hierarquia de herança,

Leia mais

As classes Formatador e ElementosAFormatar

As classes Formatador e ElementosAFormatar Introdução Vamos considerar o problema de formatação no editor de documentos WYSIWYG Já sabemos como é a representação da informação Mas ainda não sabemos como gerar uma estrutura particular de linhas,

Leia mais

DIAGRAMAS DE CLASSE UML

DIAGRAMAS DE CLASSE UML DIAGRAMAS DE CLASSE UML Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... Calendário de Reposições Aula 1: 27/10/2017, 8h-10h, Sala 8 Aula 2: A verificar Aula 3: A verificar

Leia mais

BUSCA POR OPORTUNIDADES DE REFATORAÇÃO PARA APLICAÇÃO DE PADRÕES DE PROJETO

BUSCA POR OPORTUNIDADES DE REFATORAÇÃO PARA APLICAÇÃO DE PADRÕES DE PROJETO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA BUSCA POR OPORTUNIDADES DE REFATORAÇÃO PARA APLICAÇÃO DE PADRÕES DE PROJETO DISSERTAÇÃO DE MESTRADO Guinther

Leia mais

ACH2002. Orientação a Objetos

ACH2002. Orientação a Objetos ACH2002 Orientação a Objetos Professores: Delano Medeiros Beder Fátima L. S. Nunes EACH USP O que é abstração? Abstração s.f. Operação do espírito, que isola de uma noção um elemento, negligenciando os

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Template Method Paulo Gomide Departamento de Ciência da Computação Universidade de Itaúna Sumary Template Method Definição, Motivação e Aplicabilidade Estrutura, Elementos

Leia mais

Orientação a Objetos Interfaces

Orientação a Objetos Interfaces Orientação a Objetos Interfaces Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/ 1 Objetivos

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS

PROGRAMAÇÃO ORIENTADA A OBJETOS PROGRAMAÇÃO ORIENTADA A OBJETOS SEMANA 4 Classes, Objetos, Instâncias, Referências e Métodos Prof. Geovani Sajorato sajorato@gmail.com Programadores que utilizam o paradigmade Programação Orientada a Objetoscriam

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Editor Gráfico Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação com

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 17 Padrões de Design Singleton Facade Factory Method Observer Strategy

Leia mais

Objetivos. Explorar os conceitos fundamentais acerca do uso herança na linguagem Java

Objetivos. Explorar os conceitos fundamentais acerca do uso herança na linguagem Java Objetivos Explorar os conceitos fundamentais acerca do uso herança na linguagem Java Como a herança reutiliza código, vantagens e desvantagens, o problema weak base-class, acoplamento com herança, o uso

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Lista de Exercícios AV2-01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Qual o objetivo dos padrões Comportamentais, segundo o catálogo GOF? Questão 1 Resposta

Leia mais

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. 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

Leia mais

Capítulo 2. Orientação a Objetos

Capítulo 2. Orientação a Objetos Capítulo 2 Orientação a Objetos Princípios da Orientação a Objetos Os princípios da orientação a objetos afetam todo o processo de desenvolvimento de software: Seres humanos pensam em termos de substantivos

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Objetos sem classes Um objeto tem duas visões: a de fora e a de dentro Visto de fora, um objeto é uma entidade opaca,

Leia mais

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

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 reuso.software@gmail.com 12 Março 2012 Programação orientada a objetos Reuso de

Leia mais

Orientação a Objetos Classes Abstratas

Orientação a Objetos Classes Abstratas Orientação a Objetos Classes Abstratas Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Construtores e Especificadores de Acesso

Construtores e Especificadores de Acesso Construtores e Especificadores de Acesso Professora: Fátima L. S. Nunes 1 1 1 Orientação a Objetos Conceitos do Paradigma de Orientação a Objetos já vistos: Classes atributos e métodos Objetos instanciação

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

DESIGN PATTERNS. Como evitar problemas no futuro

DESIGN PATTERNS. Como evitar problemas no futuro I DESIGN PATTERNS Como evitar problemas no futuro 1 Zalba Monteiro Desenvolvedora Full Stack Desenvolvedora de software há 7 anos, atualmente trabalhando na CWI Software. Amante de tecnologias que envolvem

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Padrão de projeto de software

Padrão de projeto de software Padrão de projeto de software Paulo Venancio Lopes e Daniel Sguillaro Nome Roupa Suja Se Lava Em Casa. Intenção Dar maior capacidade e flexibilidade ao conceito de entidade (no contexto de persitência

Leia mais

Questões Comentadas APOO, OO, Coesão e Acoplamento

Questões Comentadas APOO, OO, Coesão e Acoplamento 2012 Questões Comentadas APOO, OO, Coesão e Acoplamento LhugoJr Versão 0.8 29/11/2012 Introduça o Vale ressaltar que alguns comentários sobre as questões foram retiradas das seguintes fontes: TECNOLOGIA

Leia mais

Diagramas de Sequência Exemplo

Diagramas de Sequência Exemplo 217 Diagramas de Sequência Exemplo Seja um sistema de gestão de contéudos. A especificação do use case Criar Conta de Blog vai ser detalhada, no que concerne à descrição da colaboração, num diagrama de

Leia mais

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

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

Leia mais

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista

Leia mais

Avançando em Java com Polimorfismo. Prof.: Hugo Barros

Avançando em Java com Polimorfismo. Prof.: Hugo Barros Avançando em Java com Polimorfismo Prof.: Hugo Barros Tópicos da Aula Polimorfismo: Exemplos de polimorfismo Vantagens do polimorfismo Tipos de polimorfismo Métodos Abstratos Classes Abstratas Vinculação

Leia mais

INF011 Padrões de Projeto. 04 Builder

INF011 Padrões de Projeto. 04 Builder INF011 Padrões de Projeto 04 Builder Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação

Leia mais

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Modelagem de Sistemas. Análise de Requisitos. Modelagem Modelagem de Sistemas Teoria Geral de Sistemas TADS 2. Semestre Prof. André Luís Para abordarmos de forma mais profunda os conceitos de Modelagem de Sistemas de Informação, precisamos também falar na Engenharia

Leia mais

Java para Desktop. Programação Orientada à Objetos 2 JSE

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

PADRÕES DE PROJETO: DESIGN PATTERNS

PADRÕES DE PROJETO: DESIGN PATTERNS PADRÕES DE PROJETO: DESIGN PATTERNS Jaime William Dias 1, Danilo Venturini 1, William Macxuel Muniz 1, Rodrigo Niehues Chagas 1 1 Universidade Paranaense (UNIPAR) Paranavaí PR Brasil danilo_tr98@hotmail.com,

Leia mais

O PARADIGMA ORIENTADO POR OBJETOS

O PARADIGMA ORIENTADO POR OBJETOS O PARADIGMA ORIENTADO POR OBJETOS A idéia básica do paradigma orientado a objetos é imaginar que programas simulam o mundo real: um mundo povoado de objetos. Dessa maneira, linguagens baseadas nos conceitos

Leia mais

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. 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

Leia mais

Interfaces e Classes Abstratas

Interfaces e Classes Abstratas Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos

Leia mais

ALUNO: RONI FABIO BANASZEWSKI

ALUNO: RONI FABIO BANASZEWSKI Model-View-Controller ALUNO: RONI FABIO BANASZEWSKI Objetivo Separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo da aplicação (Control) A idéia é permitir que uma mesma

Leia mais

Unidade: sobrecarga, construtores e herança

Unidade: sobrecarga, construtores e herança Unidade: sobrecarga, construtores e herança 0 Unidade: sobrecarga, construtores e herança Sobrecarga Sobrecarregar (do inglês overload) um método é criar mais métodos com o mesmo nome, porém com assinaturas

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

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(){

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

Visibilidade e Encapsulamento

Visibilidade e Encapsulamento Visibilidade e Encapsulamento Professor: Ricardo Luis dos Santos IFSUL 2016 Agenda Pacotes Visibilidade Encapsulamento Hands-On 2 Pacotes Em Java, a visibilidade ou grau de acesso a um determinado atributo

Leia mais

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10 2/10 1.1. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados como alternativos, face à disponibilização de funcionalidade a uma classe. Compare-os,

Leia mais

Observer. Edeyson Andrade Gomes

Observer. Edeyson Andrade Gomes Observer Edeyson Andrade Gomes www.edeyson.com.br Introdução Objetivo O padrão Observer permite que objetos observadores sejam avisados da mudança de estado ou outros eventos ocorrendo num objeto observado

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/lp Recursão aberta Delegação permite reutilizar a implementação dos métodos do objeto counter na implementação dos métodos

Leia mais

b) Adapter, Bridge e Composite. c) Builder, Prototype e Singleton. d) Façade, Command e Decorator. e) Factory Method, Interpreter e Template Method.

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

Leia mais

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04 Alunos: Ariane Bueno 0114784-9 Elaine A. de Carvalho 0114633-1 Gabriel Ramos 0114838» O QUE APRENDI ASSUNTO: ARQUITETURA ASSUNTO: Notas de aula referentes às aulas de 30/09/04, Arquitetura de Software(Shaw),

Leia mais

Profa. Thienne Johnson

Profa. Thienne Johnson Profa. Thienne Johnson 1 E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison- Wesley, 1995. GoF Design Patterns - with examples

Leia mais

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira Tratamento de Erros Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:

Leia mais