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

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

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

Transcrição

1 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 de Goiás Aula 7 25 de maio de 2012 Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 1/74

2 Padrões de criação I Factory Method Abstract Factory Builder Prototype Singleton Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 2/74

3 Factory Method I Factory Method (Método de Fábrica) é um padrão de projeto que visa encapsular a criação de um objeto em um método. Factory Method é provavelmente um dos padrões mais utilizados porque ele é muito natural. Ele é usado, muitas vezes, sem consciência de que está sendo usado um padrão. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 3/74

4 O Problema I Você precisa criar um objeto mas você não quer usar a diretiva new diretamente ou não sabe qual classe instanciar. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 4/74

5 A Solução I Algumas razões existem para que não queria utilizar new diretamente. A primeira, e mais óbvia, é não saber que classe de objeto instanciar. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 5/74

6 A Solução II Isso é comum numa aplicação bem desenhada onde variáveis são estruturadas com base em interfaces. Assim, vários tipos de objetos diferentes podem ser associadas a essa variável. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 6/74

7 A Solução III Uma outra razão é a necessidade de inicializar o objeto instanciado antes de ser atribuido à variável. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 7/74

8 A Solução IV Importante notar que esta inicialização não depende do ambiente onde o objeto será utilizado, mas apenas da estrutura do próprio objeto. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 8/74

9 A Implementação I A implementação de Factory Method é tão simples quanto fazer new dentro de um método. Não existe nenhum segredo. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 9/74

10 A Implementação II Em particular o método pode ser estático. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 10/74

11 A Implementação III Neste caso a criação do objeto é feita num escopo diferente da criação feita dentro de um método de instancia. Mesmo assim, se trata do mesmo padrão. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 11/74

12 O Modelo I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 12/74

13 Estrutura I O padrão Factory Method, da forma como foi descrito no livro Design Patterns: Elements of Reusable Object-Oriented Software, contém os seguintes elementos: Creator declara o factory method (método de fabricação) que retorna o objeto da classe Product (produto). Este elemento também pode definir uma implementação básica que retorna um objeto de uma classe ConcreteProduct (produto concreto) básica; ConcreteCreator sobrescreve o factory method e retorna um objeto da classe ConcreteProduct; Product define uma interface para os objectos criados pelo factory method; Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 13/74

14 Estrutura II ConcreteProduct uma implementação para a interface Product. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 14/74

15 Exemplo I Uma aplicação, que é construída através de um framework baseado no padrão Factory Method, suporta a criação de documentos do tipo MeuDocumento. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 15/74

16 Exemplo II O framework é constituído pelas classes abstratas Aplicacao e Documento. A aplicação disponibiliza as classes concretas MinhaAplicacao e MeuDocumento. A classe MinhaAplicacao é uma implementação da abstração definida pela classe Aplicacao. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 16/74

17 Exemplo III Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 17/74

18 Exemplo IV A chave deste padrão está na declaração do método abstrato criadocumento, da classe Aplicacao, e na sua utilização pelo método novodocumento. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 18/74

19 Exemplo V Este arranjo permite que o método novodocumento crie documentos sem conhecer os detalhes de implementação, existentes em cada tipo de documento suportado pela aplicação. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 19/74

20 Exemplo VI Isto permite que a implementação do método criadocumento (neste exemplo situada na classe MinhaAplicacao) varie livremente, para atender os diversos formatos possivelmente suportados, sem que seja necessário modificar o código das classes abstratas. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 20/74

21 Código Java I 1 abstract class Aplicacao { 2 3 private Documento doc; 4 5 abstract Documento criadocumento(); 6 7 void novodocumento() { 8 this.doc = this.criadocumento(); 9 } void abrirdocumento() { 12 this.doc.abrir(); 13 } 14 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 21/74

22 Código Java II 1 abstract class Documento { 2 3 void abrir() { 4 System.out.println("Documento:Abrir documento!"); 5 } 6 7 void fechar() { 8 System.out.println("Documento:Fechar documento!"); 9 } void gravar() { 12 System.out.println("Documento:Gravar documento!"); 13 } 14 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 22/74

23 Código Java III 1 class MinhaAplicacao extends Aplicacao { 2 3 Documento criadocumento() { 4 return new MeuDocumento(); 5 } 6 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 23/74

24 Código Java IV 1 class MeuDocumento extends Documento { 2 3 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 24/74

25 Abstract Factory I Abstract Factory é um padrão de criação e como o nome diz Fabrica Abstrata este padrão é utilizado para a criação de objetos relacionados ou família de objetos. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 25/74

26 O Problema I Precisamos criar famílias de objetos relacionados e cada objeto de cada família tem sua implementação especifica. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 26/74

27 O Problema II Você precisa garantir que dada uma situação você escolherá a família correta de objetos que será utilizado sem misturar os objetos de famílias diferentes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 27/74

28 O Modelo I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 28/74

29 Exemplo I Imagine que você esteja desenvolvendo uma aplicação de gerenciamento de documentos (GED) e precise tratar diferentes tipos de arquivos: txt, pdf, doc e etc. Dentro deste contexto você terá objetos para extração e indexação de conteúdo para cada tipo de arquivo (mime-type). Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 29/74

30 Exemplo II Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 30/74

31 Código Java I 1 public interface DocumentFactory 2 { 3 public static final String TXT = "TXT"; 4 public static final String PDF = "PDF"; 5 public DocumentReader createdocumentreader( ); 6 public DocumentWriter createdocumentwriter( ); 7 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 31/74

32 Código Java II 1 import java.io.outputstream; 2 3 public interface DocumentReader { 4 public OutputStream readefile( String file ); 5 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 32/74

33 Código Java III 1 import java.io.inputstream; 2 3 public interface DocumentWriter { 4 public void writefile( InputStream inputstream ); 5 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 33/74

34 Código Java IV 1 public class PdfDocumentFactory implements DocumentFactory 2 { 4 public DocumentReader createdocumentreader( ) 5 { 6 System.out.println( "PdfDocumentFactory. createdocumentreader ::: PDF" ); 7 return new PdfDocumentReader( ); 8 } 10 public DocumentWriter createdocumentwriter( ) 11 { 12 System.out.println( "PdfDocumentFactory. createdocumentwriter ::: PDF" ); 13 return new PdfDocumentWriter( ); 14 } 15 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 34/74

35 Código Java V 1 import java.io.outputstream; 2 3 public class PdfDocumentReader implements DocumentReader { 5 public OutputStream readefile( String file ) { 6 System.out.println( "PdfDocumentReader.readeFile ::: PDF " ); 7 return null; 8 } 9 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 35/74

36 Código Java VI 1 import java.io.inputstream; 2 3 public class PdfDocumentWriter implements DocumentWriter { 5 public void writefile(inputstream inputstream) { 6 System.out.println( "PdfDocumentWriter.writeFile ::: PDF " ); 7 } 8 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 36/74

37 Código Java VII 1 public class TxtDocumentFactory implements DocumentFactory 2 { 4 public DocumentReader createdocumentreader( ) 5 { 6 System.out.println( "TxtDocumentFactory. createdocumentreader ::: TXT" ); 7 return new TxtDocumentReader( ); 8 } 10 public DocumentWriter createdocumentwriter( ) 11 { 12 System.out.println( "TxtDocumentFactory. createdocumentwriter ::: TXT" ); 13 return new TxtDocumentWriter( ); 14 } 15 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 37/74

38 Código Java VIII 1 import java.io.outputstream; 2 3 public class TxtDocumentReader implements DocumentReader { 5 public OutputStream readefile(string file) { 6 System.out.println( "TxtDocumentReader.readeFile ::: TXT " ); 7 return null; 8 } 9 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 38/74

39 Código Java IX 1 import java.io.outputstream; 2 public class Client 3 { 4 public static void main(string[] args) throws Exception 5 { 6 DocumentFactory documentfactory = createdocumentfactory ( "PDF" ); 7 DocumentWriter documentwriter = documentfactory. createdocumentwriter(); 8 documentwriter.writefile( null ); 9 DocumentReader documentreader = documentfactory. createdocumentreader(); 10 OutputStream outputstream = documentreader.readefile(" dados.txt"); 11 } 12 public static DocumentFactory createdocumentfactory( String type ) 13 { 14 if ( type.equalsignorecase( DocumentFactory.PDF ) ) 15 return new PdfDocumentFactory(); 16 if( type.equalsignorecase( DocumentFactory.TXT ) ) Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 39/74

40 Código Java X 17 return new TxtDocumentFactory(); 18 return null; 19 } 20 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 40/74

41 Utilizações comuns I Utilize quando quiser ter independência de como seus objetos são criados, ou seja você deseja desacoplar sua aplicação e as famílias de objetos utilizadas por ela. Dessa forma podemos trocar a família de objetos utilizadas na aplicação sem afetar o código fonte. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 41/74

42 Utilizações comuns II Utilize quando quiser fornecer uma biblioteca de classes de produtos e quer revelar somente suas interfaces e as implementações. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 42/74

43 Observação I Embora utilizar o AbstractFactory gere um trabalho adicional (escrever produtos abstratos, fabricas abstratas, e suas respectivas implementações), utilizar fabricas é uma boa prática de programação e ajuda a reduzir o acoplamento e conseqüentemente melhora manutenção do sistema. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 43/74

44 Padrão Builder I O padrão Builder (Montador) é um projeto que ajuda a criar objetos complexos; quer seja porque contém muitas propriedades e várias configurações possíveis, ou porque contém uma estrutura aninhada de objetos. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 44/74

45 O Problema I Ao codificar orientado a objetos é comum representarmos entidades do sistema como estruturas de objetos aninhados ou utilizar objetos no padrão Bean com várias propriedades. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 45/74

46 O Problema II A construção de objetos deste tipo pode ser complexa e obrigar a escrever muito código burocrático devido à estrutura interna do objeto estar encapsulada. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 46/74

47 O Problema III Construir um objeto complexo é uma tarefa chata, propensa a erros e pouco controlável. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 47/74

48 A Solução I A solução é definir um outro objeto que será responsável pela criação correta do objeto que queremos construir. Para que não haja confusão com o conceito de construtor, passarei a referir à responsabilidade do objeto que implementa o padrão Builder como montar. O objeto Builder é responsável por montar um outro objeto. Este outro objeto é chamado, genericamente, de produto. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 48/74

49 A Solução II O objeto Builder conta com vários métodos na sua interface de forma a poder ser informado das características que o produto terá e um método que realmente irá montar o produto e entregálo. Opcionalmente a montagem pode ser explicitada em um outro método de forma a deixar mais claro quando acontece a montagem. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 49/74

50 O Modelo I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 50/74

51 O Modelo II O padrão Builder, da forma como foi descrito no livro Design Patterns: Elements of Reusable Object-Oriented Software, contém os seguintes elementos: director constrói um objeto utilizando a interface do builder; builder especifica uma interface para um construtor de partes do objeto-produto; concrete builder define uma implementação da interface builder, mantém a representação que cria e fornece interface para recuperação do produto; product o objeto complexo acabado de construir. Inclui classes que definem as partes constituintes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 51/74

52 Exemplo I Imaginemos que você tenha uma classe chamada Pizza e que você pode querer construir objetos com uma quantidade variada de parâmetros. Uma forma seria criar construtores sobrecarregados: 1 Pizza(int size) {... } 2 Pizza(int size, boolean cheese) {... } 3 Pizza(int size, boolean cheese, boolean pepperoni) {... } 4 Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon ) {... } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 52/74

53 Exemplo II Isso é chamado de Construtor Telescoping Padrão. O problema com esse padrão é que uma vez construtores são 4 ou 5 parâmetros de longo torna-se difícil de lembrar a ordem dos parâmetros exigidos, bem como o construtor especial que você pode querer em uma determinada situação. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 53/74

54 Exemplo III Uma alternativa que você tem para o construtor Telescoping padrão é o padrão JavaBean quando você chamar um construtor com os parâmetros obrigatórios e, em seguida, ligar para qualquer setters opcional depois: 1 Pizza pizza = new Pizza(12); 2 pizza.setcheese(true); 3 pizza.setpepperoni(true); 4 pizza.setbacon(true); Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 54/74

55 Exemplo IV O problema aqui é que porque o objeto é criado durante várias chamadas, pode estar em um estado inconsistente partway através de sua construção. Isso também exige um grande esforço extra para garantir a segurança de discussão. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 55/74

56 Exemplo V Uma boa alternativa seria a utilização do padrão construtor (builder) 1 public class Pizza { 2 private int size; 3 private boolean cheese; 4 private boolean pepperoni; 5 private boolean bacon; 6 public static class Builder { 7 private final int size; 8 private boolean cheese = false; 9 private boolean pepperoni = false; 10 private boolean bacon = false; 11 public Builder(int size) { 12 this.size = size; 13 } 14 public Builder cheese(boolean value) { 15 cheese = value; 16 return this; 17 } 18 public Builder pepperoni(boolean value) { 19 pepperoni = value; 20 return this; 21 } 22 public Builder bacon(boolean value) { 23 bacon = value; 24 return this; Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 56/74

57 Exemplo VI 25 } 26 public Pizza build() { 27 return new Pizza(this); 28 } 29 } 30 private Pizza(Builder builder) { 31 size = builder.size; 32 cheese = builder.cheese; 33 pepperoni = builder.pepperoni; 34 bacon = builder.bacon; 35 } 36 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 57/74

58 Exemplo VII Note que a Pizza é imutável e que os valores dos parâmetros estão todos em um único local. Como construtor setter métodos de devolver o objeto Builder eles são capazes de ser acorrentado. 1 Pizza pizza = new Pizza.Builder(12).cheese(true).pepperoni(true).bacon(true).build(); Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 58/74

59 Exemplo VIII Isso resulta em um código que é fácil escrever e muito fácil de ler e compreender. Neste exemplo, o método de construção pode ser modificado para verificar os parâmetros após terem sido copiados a partir do construtor para o objeto Pizza e lançar uma IllegalStateException se um parâmetro inválido valor foi fornecido. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 59/74

60 Exemplo IX Este modelo é flexível e é fácil adicionar mais parâmetros para ele no futuro. É realmente só é útil se você está indo ter mais de 4 ou 5 parâmetros de um construtor. Dito isto, poderá ser útil em primeiro lugar, se você suspeitar que você pode estar adicionando parâmetros mais no futuro. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 60/74

61 O Padrão Prototype I É um padrão de projeto que permite a criação de objetos a partir de um modelo original, ou seja, foi criado com o objetivo de especificar os tipos de objetos a serem criados usando uma instância-protótipo e criar novos objetos pela cópia desse protótipo. Efetivamente, cada objeto é um factory especializado em construir objetos iguais a si mesmo. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 61/74

62 Estrutura I O padrão Prototype contém os seguintes elementos: Prototype uma classe que declara uma interface para objetos capazes de clonar a si mesmo; Prototype concreto implementação de um prototype; Cliente cria um novo objeto através de um prototype que é capaz de clonar a si mesmo. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 62/74

63 Estrutura II Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 63/74

64 Estrutura III O padrão Prototype exige a implementação de uma operação de clonagem em cada uma das classes concretas do protótipo. Esta tarefa pode ser inconveniente, no caso do reaproveitamento de classes pré-existentes que não possuem tal operação, ou mesmo complexa, se for considerada a possibilidade de existirem referências circulares nos atributos de um objeto (um objeto possui um atributo que referência um objeto que, por sua vez, referência o objeto original). Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 64/74

65 Estrutura IV O padrão Prototype pode ser utilizado em sistemas que precisam ser independentes da forma como os seus componentes são criados, compostos e representados. O padrão Prototype pode ser útil em sistemas com as seguintes características: Sistemas que utilizam classes definidas em tempo de execução; Sistemas que utilizam o padrão Abstract Factory para criação de objetos. Neste caso, a hierarquia de classes pode se tornar muito complexa e o padrão Prototype pode ser uma alternativa mais simples, por realizar a mesma tarefa com um número reduzido de classes; Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 65/74

66 Estrutura V Sistemas que possuem componentes cujo estado inicial possui poucas variações e onde é conveniente disponibilizar um conjunto pré-estabelecido de protótipos que dão origem aos objetos que compõem o sistema. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 66/74

67 Quando usar? I Use o padrão Prototype quando um sistema tiver que ser independente de como os seus produtos são criados, compostos e representados e: Quando as classes a instanciar forem especificadas em tempo de execução, por exemplo, por carga dinâmica; Para evitar a construção de uma hierarquia de classes de fábricas paralela à hierarquia de classes de produto; Quando as instâncias de uma classe puderem ter uma dentre poucas combinações diferentes de estados. Pode ser mais conveniente instalar um número correspondente de protótipos e cloná-los, ao invés de instanciar a classe manualmente, cada vez com um estado apropriado. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 67/74

68 Desvantagem I Cada subclasse de Prototype deve implementar a operação clone, o que pode ser difícil. Por exemplo, acrescentar clone é difícil quando as classes consideradas já existem. A implementação de clone pode ser complicada quando uma estrutura interna da classe inclui objetos que não suportam operação de cópia ou têm referencias circulares. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 68/74

69 Padrão Singleton I O padrão Singleton é um padrão que ajuda a criar objetos que podem possuir uma única instância no sistema. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 69/74

70 O Problema I Quando se possui elementos que são compartilhados entre módulos do sistema e não é admissível que hajam duas cópias de objetos pois as informações devem ser comuns e a manutenção deve ser compartilhada. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 70/74

71 A Solução I Criar um objeto que não possa ser instanciado diretamente ou que possua um mecanismo de contagem de instâncias para se evitar que se crie um número de instâncias maior do que uma. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 71/74

72 Exemplo I Uma das aplicações seria o compartilhamento de uma conexão com o banco de dados, porém, sem manter uma instância até que haja seu primeiro uso. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 72/74

73 Código Java I Em Java, é possível criar um Singleton criando um ou mais construtores privados. Deve-se ser criado pelo menos um construtor privado, caso o contrário o compilador Java criará um construtor público. 1 class ExemploSingleton{ 2 3 ExemploSingleton instancia = null; 4 5 private ExemploSingleton(){ 6 } 7 8 public static ExemploSingleton getinstance(){ 9 if (instancia == null) 10 instancia = new ExemploSingleton(); return instancia; 13 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 73/74

74 Código Java II 14 } Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - II 74/74

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

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 10 Padrões GoF (Protoype e Façade) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton

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

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

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

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java

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

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

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

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

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

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Lição 11 Herança, polimorfismo e interfaces

Lição 11 Herança, polimorfismo e interfaces Lição 11 Herança, polimorfismo e interfaces 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Definir superclasses e subclasses Criar Override de métodos de superclasses Criar métodos e classes

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

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em

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

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores Prof.: Bruno E. G. Gomes IFRN 1 Introdução Na aula de hoje: Declaração de classes Métodos Construtores Exercícios de criação

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

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes - Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes

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

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

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

Factory Pattern. SISMO - Sistemas e Mobilidade  Junho de Departamento de Informática / UFMA Factory Pattern SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br Departamento de Informática / UFMA Junho de 2008 Do que vamos tratar? Criação de objetos não é simplesmente usar o operador

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO FOZ DO IGUAÇU 2013 LISTA

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos

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

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu: Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 11 Padrões GoF (Bridge e Decorator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype Singleton

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

Interfaces POO. Prof. Marcio Delamaro

Interfaces POO. Prof. Marcio Delamaro Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,

Leia mais

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; } Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos

Leia mais

Programação Orientada a Objetos II

Programação Orientada a Objetos II Programação Orientada a Objetos II Prof. Walter Gima walter.gima@anhanguera.com 1 Interfaces Polimorfismo 2 Agenda Interfaces Interfaces x Classes Abstratas Polimorfismo Herança Múltipla 3 Interfaces São

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for

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

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

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Herança. Prof. Fernando V. Paulovich  23 de agosto de 2010 Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade

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

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

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?

Leia mais

COMPORTAMENTOS - Observações

COMPORTAMENTOS - Observações COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para

Leia mais

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU Aula 10 POO 1 Classes Abstratas Profa. Elaine Faria UFU - 2019 Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos

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

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 Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real: Introdução a Orientação a Objetos com Java Autor: Professor Victor Augusto Zago Menegusso. Orientação a Objetos É um paradigma de programação que define a estrutura de um programa baseado nos conceitos

Leia mais

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

Leia mais

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento. Introdução Atributos, métodos e encapsulamento joao@ecomp.uefs.br Atributos Ipos de acesso: private, public, protected e default Encapsulamento Métodos Construtores Criando objetos Departamento de Ciências

Leia mais

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa

Leia mais

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno Programação Orientada a Objetos Aula 1.9 this e static Prof. Bruno Moreno bruno.moreno@ifrn.edu.br Relembre: Clase RoboSimples Os métodos move() e move(int passos) podem ser reescrito sem redundância de

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

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br

Leia mais

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){ UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------

Leia mais

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

Interfaces e Classes Internas

Interfaces e Classes Internas e Classes Internas SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade

Leia mais

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente): Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de

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

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração

Leia mais

Strings e Arrays POO

Strings e Arrays POO Strings e Arrays POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/27 String Uma sequência de caracteres que representa uma informação textual Em Java existe um

Leia mais

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Programação Orientada a Objetos SANTOS, Rafael (PLT) Programação Orientada a Objetos SANTOS, Rafael (PLT) Possibilita atribuições em sequência na mesma instrução Retorna o valor atribuído Atribuições compostas: incluem a própria variável: +=, *=, -=, etc

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

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

Classes e Objetos POO

Classes e Objetos POO Classes e Objetos POO Prof. Marcio Delamaro 1/40 POO (wikipedia) Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data,

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 9 Tratamento de Exceções Assertivas 1 Programa Capítulo 9 Tratamento

Leia mais

1 Introdução e Conceitos básicos

1 Introdução e Conceitos básicos 1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2

Leia mais

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que

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

Conceitos Básicos da Programação OO

Conceitos Básicos da Programação OO Conceitos Básicos da Programação OO Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Objetivos Aprender os

Leia mais

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 9 Tratamento de Exceções Assertivas Programa Capítulo

Leia mais

Linguagens de Programação Aula 12

Linguagens de Programação Aula 12 Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:

Leia mais

Atributos e Métodos Estáticos

Atributos e Métodos Estáticos Atributos e Métodos Estáticos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Atributos Estáticos Atributos

Leia mais

VB.NET - Orientação a objetos : conceitos básicos em 10

VB.NET - Orientação a objetos : conceitos básicos em 10 lições. VB.NET - Orientação a objetos : conceitos básicos em 10 Lição 1 - Como criar classe e métodos. Instanciando um objeto e acessando o método da classe. - Para criar uma classe basta usar a palavra

Leia mais

Especialização em web com interfaces ricas. Boas Práticas de Programação

Especialização em web com interfaces ricas. Boas Práticas de Programação Especialização em web com interfaces ricas Boas Práticas de Programação Prof. Fabrízzio Alphonsus A. M. N. Soares fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática Universidade

Leia mais

Modificadores de Acesso e Atributos de Classe

Modificadores de Acesso e Atributos de Classe Modificadores de Acesso e Atributos de Classe 1 Controlando o acesso p Um dos problemas mais simples que temos no nosso sistema de contas é que o método saca permite sacar mesmo que o limite tenha sido

Leia mais

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto

Leia mais

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011 Programação Orientada por Objectos 2010/11 2º Exame 28 de Junho de 2011 Instruções (leia com cuidado): Escreva de forma CLARA o seu nome e número em todas as folhas. O exame contém 8 páginas dividido em

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Conceitos: Classe, Variável de Instância ou Atributos, Métodos, Objeto, Variáveis Estáticas ou de Classe, Construtores, Construtores Sobrecarregados, Herança, Polimorfismo,

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Variáveis e Métodos de Classe Em Java, quer as classes quer as instâncias das classes são objectos. Onde está o estado da classe? Com que operações é manipulado? UBI, Departamento de Informática T04-1

Leia mais

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21 Sistemas de Objetos Distribuídos Primeira Aplicação Java ORB Francisco José da Silva e Silva Departamento de Informática da Universidade Federal do Maranhão Sistemas de Objetos DistribuídosPrimeira Aplicação

Leia mais

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;

Leia mais

Notas de Aula 09: Tratamento de exceções

Notas de Aula 09: Tratamento de exceções Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária

Leia mais