Polimorfismo e Acoplamento Dinâmico

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

Download "Polimorfismo e Acoplamento Dinâmico"

Transcrição

1 Polimorfismo e Acoplamento Dinâmico Adriano J. Holanda 15/5/2015

2 Polimorfismo Substituição ou redefinição de atributos e métodos da superclasse para adequação às características da subclasse. Métodos: Sobrecarga (overload) fornecer mais de um método com o mesmo nome, mas com diferentes assinaturas para distinguí-los; Sobrescrita (overriding) substitui a implementação daquele método com a sua própria. As assinaturas podem ser idênticas, mas o tipo de retorno pode variar de maneira particular.

3 Sobrecarga Redefinição O acomplamento do método é feito de acordo com a sua assinatura. Triangulo desenhar() desenhar(ct : TipoTriangulo) apagar() 1 class Triangulo { 2 enum TipoTriangulo{isosceles, retangulo}; 3 4 void desenhar() { 5 System.out. println (Triangulo.desenhar ()); 6 } 7 void desenhar(tipotriangulo ct) { 8 System.out. println (ct ); 9 } 10 void apagar() { 11 System.out. println (Triangulo.apagar ()); 12 } }

4 Sobrescrita Overrinding desenhar() apagar() Forma Retangulo desenhar() apagar() Circulo desenhar() apagar() Triangulo desenhar() apagar()

5 Sobrecarga Exemplo 1 2 class Forma { 3 void desenhar() { } 4 void apagar() { } 5 } 6 7 class Circulo extends Forma { 8 void desenhar() { 9 System.out. println ( Circulo.desenhar() ); 10 } 11 void apagar() { 12 System.out. println ( Circulo.apagar() ); 13 } 14 }

6 Sobrecarga Exemplo 1 2 class Forma { 3 void desenhar() { } 4 void apagar() { } 5 } 6 7 class Quadrado extends Forma { 8 void desenhar() { 9 System.out. println ( Quadrado.desenhar() ); 10 } 11 void apagar() { 12 System.out. println ( Quadrado.apagar() ); 13 } 14 }

7 Sobrecarga Exemplo 1 class Forma { 2 void desenhar() { } 3 void apagar() { } 4 } 5 6 class Triangulo extends Forma { 7 void desenhar() { 8 System.out. println ( Triangulo.desenhar() ); 9 } 10 void apagar() { 11 System.out. println ( Triangulo.apagar() ); 12 } 13 }

8 Acoplamento Dinâmico Dynamic binding No acoplamento dinâmico (dynamic binding), o método a ser executado é vinculado à referência ao objeto durante a execução do código de acordo com o tipo do objeto no momento da execução. 1 public class PoliMain { 2 public static Forma sortearforma () { 3 switch( (int)(math.random() * 3) ) { 4 default: 5 case 0: return new Circulo(); 6 case 1: return new Retangulo(); 7 case 2: return new Triangulo(); 8 } 9 } 10 public static void main(string[] args) { 11 Forma[] fs = new Forma[9]; for(int i=0; i< fs.length; i++) 14 fs [ i ] = sortearforma( ); for(int i=0; i<fs.length; i++) 17 fs [ i ]. desenhar();

9 Acoplamento dinâmico Visualização Circulo sorteio:0

10 Acoplamento dinâmico Visualização Circulo sorteio: 2 Triangulo Forma@ref0 Forma@ref1 Forma@ref2 Forma@ref3 Forma@ref4 Forma@ref5 Forma@ref6 Forma@ref7 Forma@ref8

11 Acoplamento dinâmico Visualização Circulo sorteio: 1 Triangulo Forma@ref0 Forma@ref1 Forma@ref2 Forma@ref3 Forma@ref4 Forma@ref5 Forma@ref6 Forma@ref7 Forma@ref8 Retangulo

12 Acoplamento dinâmico Visualização Circulo sorteio: 2 Triangulo Forma@ref0 Forma@ref1 Forma@ref2 Forma@ref3 Forma@ref4 Forma@ref5 Forma@ref6 Forma@ref7 Forma@ref8 Retangulo Triangulo Triangulo Circulo Retangulo Circulo Triangulo

13 Coerção Cast Coerção é a tentativa de modificar o tipo do objeto de acordo com comportamento requerido durante a execução. 1 class Triangulo extends Forma { 2 void desenhar() { 3 System.out. println ( Triangulo.desenhar() ); } 4 void apagar() { 5 System.out. println ( Triangulo.apagar() ); } 6 void somarangulos() { 7 System.out. println (Soma angulos internos =180); } 8 } 9 public class CoercaoMain { 10 public static void main(string[ ] args) { 11 Forma[ ] fs = { new Forma(), 12 new Triangulo() }; fs [0]. desenhar(); 15 fs [1]. apagar(); 16 /* mas fs [0] não é triangulo?!!! */ 17 ( (Triangulo) fs [1] ). somarangulos(); 18 ( (Triangulo) fs [0] ). somarangulos();

14 Coerção Visualização Forma desenhar() apagar() Triangulo desenhar() apagar() somarangulos()

15 Coerção Visualização Não é Triangulo Forma desenhar() apagar() Triangulo desenhar() apagar() somarangulos()

16 Coerção Segura instanceof 1 public class CoercaoSeguraMain { 2 public static void main(string[] args) { 3 Forma[] fs = { new Forma(), new Triangulo() }; 4 5 fs [0]. desenhar(); 6 fs [1]. apagar(); 7 8 if ( fs [1] instanceof Triangulo ) 9 ( (Triangulo) fs [1] ). somarangulos(); if ( fs [0] instanceof Triangulo ) 12 ( (Triangulo) fs [0] ). somarangulos(); 13 } 14 }

17 Polimorfismo e Acoplamento Dinâmico Conclusões Vantagens Flexibilidade; Incorporação das técnicas de herança à linguagem. Desvantagens Perda de performance devido ao uso da memória heap; Aumenta a necessidade de checagem de condições de erro durante a execução que eram verificadas em tempo de compilação por compiladores de linguagens estáticas.

18 Referências Bruce Eckel. Thinking in Java. Prentice-Hall, Ken Arnold, James Gosling, David Holmes. A Linguagem de Programação Java. 4 a edição, Bookman, 2007,

19 Tipos Genéricos Adriano J. Holanda 15/5/2015

20 Antes dos genéricos Todas as classes herdam por padrão os atributos e métodos da classe Object; Uso da classe Object para lidar com a manipulação de tipos de objetos não conhecidos em tempo de compilação.

21 Exemplo do uso de Object // Generalização através da referência de tipo Object. 1 class No { 2 Object val; // valor 3 No prox; // proximo no 4 No(Object val, No prox) { 5 this.val = val; 6 this.prox = prox; 7 }} 8 public class ListaEncadeadaObj { 9 public No prim; // primeiro no 10 private No ult; // ultimo no 11 public void inserir (Object val) { 12 if (prim == null) { 13 ult = new No(null, null); 14 prim = new No(val, null); 15 } else { 16 No tmp = new No(val, null); 17 if (prim.prox == null) 18 prim.prox = tmp; 19 else 20 ult.prox = tmp; 21 ult = tmp; 22 }}}

22 Coerção da referência de tipo Object // Coerção da referência genérica para o tipo desejado. 1 public class ListaEncadeadaObjExec { 2 public static void main(exec[] args) { 3 ListaEncadeadaObj lista = new ListaEncadeadaObj(); 4 lista. inserir ( uno ); 5 lista. inserir ( dos ); 6 lista. inserir ( tres ); 7 8 No no = lista.prim; 9 while(no!= null) { 10 System.out.print( > +(String)no.val); 11 no = no.prox; 12 } 13 System.out.println(); 14 } 15 }

23 Problemas com a coerção // Erro na coerção da referência Object 1 public class ListaEncadeadaObjNoExec { 2 public static void main(string[] args) { 3 ListaEncadeadaObj lista = new ListaEncadeadaObj(); 4 lista. inserir (new String( uno )); 5 lista. inserir (new Integer(2)); // < ERRO EXECUCAO 6 lista. inserir (new String( tres )); 7 8 No no = lista.prim; 9 while(no!= null) { 10 System.out.print( > +(String)no.val); 11 no = no.prox; 12 } 13 System.out.println(); 14 } 15 } O operador instanceof poderia ser utilizado, mas haja testes se o código for muito extenso!

24 Depois dos genéricos O tipos de de dados a serem atribuídos a uma declaração são parametrizados, permitido verificação do tipo suportado em tempo de compilação.

25 Genéricos // Generalização da lista encadeada. 1 class No<T> { 2 T val; // valor 3 No<T> prox; // proximo no 4 No(T val, No prox) { 5 this.val = val; 6 this.prox = prox; 7 }} 8 public class ListaEncadeadaGen<T> { 9 public No<T>prim; // primeiro no 10 private No<T>ult; // ultimo no 11 public void inserir (T val) { 12 if (prim == null) { 13 ult = new No<T>(null, null); 14 prim = new No<T>(val, null); 15 } else { 16 No tmp = new No<T>(val, null); 17 if (prim.prox == null) 18 prim.prox = tmp; 19 else 20 ult.prox = tmp; 21 ult = tmp; 22 }}}

26 Exemplo // Declaração e utilização de tipos genéricos 1 public class ListaEncadeadaGenExec { 2 public static void main(string[] args) { 3 ListaEncadeadaGen<String>lista = 4 new ListaEncadeadaGen<String>(); 5 lista. inserir ( uno ); 6 lista. inserir ( dos ); 7 lista. inserir ( tres ); 8 9 No no = lista.prim; 10 while(no!= null) { 11 System.out.print( > +no.val); 12 no = no.prox; 13 } 14 System.out.println(); 15 } 16 }

27 Avaliação do tipo de dados // A avaliação do tipo de dados é feita durante a compilação. 1 public class ListaEncadeadaGenNoComp { 2 public static void main(string[] args) { 3 ListaEncadeadaGen<String>lista = 4 new ListaEncadeadaGen<String>(); 5 lista. inserir (new String( uno )); 6 lista. inserir (new Integer(2)); // < ERRO COMPILACAO 7 lista. inserir (new String( tres )); 8 9 No no = lista.prim; 10 while(no!= null) { 11 System.out.print( > +no.val); 12 no = no.prox; 13 } 14 System.out.println(); 15 } 16 }

28 Subtipos e curingas Trabalhar com tipos genéricos exige um pouco mais planejamento para tirar o máximo proveito da flexibilidade oferecida pela parametrização. A utilização de herança dos tipos parametrizados permite-nos reutilizar restrições e métodos dos tipos herdados.

29 Exemplo sem uso de curinga 1 import java. util. List ; 2 public class SubtipoCuringaNo { 3 static double somar(list<number> lista) { 4 double soma = 0.0; 5 for (Number n: lista) 6 soma += n.doublevalue(); 7 return soma; 8 }} /* Number é um subtipo de Integer mas List<Integer> não é um subtipo de List<Number>. */ 1 import java. util. List ; 2 import java. util.arraylist; 3 public class SubtipoCuringaNoComp { 4 public static void main(string[] args) { 5 List<Integer> lista = new ArrayList<Integer>(); 6 lista.add(1); 7 lista.add(2); 8 lista.add(4); 9 SubtipoCuringaNo.somar(lista); // NAO COMPILA 10 }}

30 Solução: uso de subtipo e curinga 1 import java. util. List ; 2 public class SubtipoCuringa { 3 static double somar(list<? extends Number> lista) { 4 double soma = 0.0; 5 for (Number n: lista) 6 soma += n.doublevalue(); 7 return soma; 8 }} 1 import java. util. List ; 2 import java. util.arraylist; 3 public class SubtipoCuringaExec { 4 public static void main(string[] args) { 5 double res; 6 List<Integer> lista = new ArrayList<Integer>(); 7 lista.add(1); 8 lista.add(2); 9 lista.add(4); 10 res = SubtipoCuringa.somar(lista); 11 System.out.println( A soma e igual a +res); 12 }}

31 Diagrama de herança Os curingas são fundamentais para a extensão do tipos genéricos. List<?> List<Object> List<? extends Number> List<? extends Integer> List<Number> List<Integer>

32 Referência

33 Modularização Adriano J. Holanda 15/5/2015

34 Modularização David L. Parnas, 1972

35 Módulos Módulos são componentes de software reutilizáveis que obedecem a alguns princípios de projeto [Elliot, 2014]: Especialização: cada módulo possui uma função específica. Independência: módulos devem se relacionar diretamente o menos possível com outros módulos (baixo acoplamento). Decomposição: deve ser simples testar e usar um módulo sem a necessidade de outros módulos. Substituição: um módulo pode ser substituído por outro com a mesma função.

36 Módulos Módulos são componentes de software reutilizáveis que obedecem a alguns princípios de projeto [Elliot, 2014]: Especialização: cada módulo possui uma função específica. Independência: módulos devem se relacionar diretamente o menos possível com outros módulos (baixo acoplamento). Decomposição: deve ser simples testar e usar um módulo sem a necessidade de outros módulos. Substituição: um módulo pode ser substituído por outro com a mesma função.

37 Módulos Módulos são componentes de software reutilizáveis que obedecem a alguns princípios de projeto [Elliot, 2014]: Especialização: cada módulo possui uma função específica. Independência: módulos devem se relacionar diretamente o menos possível com outros módulos (baixo acoplamento). Decomposição: deve ser simples testar e usar um módulo sem a necessidade de outros módulos. Substituição: um módulo pode ser substituído por outro com a mesma função.

38 Módulos Módulos são componentes de software reutilizáveis que obedecem a alguns princípios de projeto [Elliot, 2014]: Especialização: cada módulo possui uma função específica. Independência: módulos devem se relacionar diretamente o menos possível com outros módulos (baixo acoplamento). Decomposição: deve ser simples testar e usar um módulo sem a necessidade de outros módulos. Substituição: um módulo pode ser substituído por outro com a mesma função.

39 Modularização Modularização é uma das chaves para o sucesso de um projeto de software. Fundamental para a organização da complexidade do projeto.

40 Modularização Modularização é uma das chaves para o sucesso de um projeto de software. Fundamental para a organização da complexidade do projeto.

41 Modularização Exemplo: Biblioteca C padrão Alguns arquivos de cabeçalho da biblioteca C padrão errno.h math.h stdio.h stdlib.h string.h time.h complex.h assert.h limits.h stdbool.h...

42 Modularização Exemplo: Arquitetura do Sistema Operacional Android

43 Interfaces Modularização Interfaces são uma das primeiras ferramentas para o projeto de software modular. Elas definem um contrato no qual a implementação deve preencher. Os métodos após publicados não deveriam ser modificados, para não ocasionar quebra de contrato. Programe para uma interface, não para uma implementação [Gamma, 2005].

44 Interfaces Modularização Interfaces são uma das primeiras ferramentas para o projeto de software modular. Elas definem um contrato no qual a implementação deve preencher. Os métodos após publicados não deveriam ser modificados, para não ocasionar quebra de contrato. Programe para uma interface, não para uma implementação [Gamma, 2005].

45 Interfaces Modularização Interfaces são uma das primeiras ferramentas para o projeto de software modular. Elas definem um contrato no qual a implementação deve preencher. Os métodos após publicados não deveriam ser modificados, para não ocasionar quebra de contrato. Programe para uma interface, não para uma implementação [Gamma, 2005].

46 Exemplo: Biblioteca padrão C Protótipos Interface Os protótipos da especificação ANSI C permite que bibliotecas implementadas por diferentes programadores tenham aproximadamente o mesmo comportamento. 1 /* stdio.h */ 2 /*... */ 3 4 extern int fprintf (FILE * restrict stream, 5 const char * restrict format,...); 6 extern FILE *fopen (const char * restrict filename, 7 const char * restrict modes); 8 extern int fclose (FILE * stream); 9 10 /*... */

47 java io Exemplo: Kit de desenvolvimento Java Interfaces <<interface>> DataInput readboolean() : boolean readbyte() : byte readchar() : char readdouble() : double readfloat() : float readfully(b : byte[]) : void readfully(b : byte[], off : int, len : int) : void readint() : int readline() : String readlong() : long readshort() : short readunsignedbyte() : int readunsignedshort() : int readutf() : String skipbytes(n : int) : int Implementações do JDK devem obedecer as interfaces, pois as classes as implementam. Exemplo: JDK Oracle; OpenJDK; GNU Compiler for Java.

48 Modularização Declaração 1 // C++ 2 namespace foo { 3 char func(char); 4 class String {... }; 5 } 1 /// C# 2 namespace foo { 3 class String {... } 4 } 1 /* Java */ 2 package foo; 3 4 public class String {... }

49 Modularização Modelagem e implementação Durante a modelagem e implementação, na composição do módulo favoreça composição de objetos sobre herança de classes [Gamma, 2005].

50 Referências Eric Elliott. Programming JavaScript Applications O Reilly Media, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Padrões de Projeto - Soluções Reutilizáveis de Software Orientado a Objetos Bookman, 2005.

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

Classe Abstrata e Interface

Classe Abstrata e Interface Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

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

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

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

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

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

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

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Tema

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

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis

Leia mais

Programação Java (nível intermediário) 4. Polimorfismo

Programação Java (nível intermediário) 4. Polimorfismo Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

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

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando -Herança Estrutura Hierárquica e modular Projeção de classes genéricas que podem ser especializadas

Leia mais

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1 INE5603 Introdução à POO Prof. A. G. Silva 30 de outubro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de 2017 1 / 1 Especialização de classes (I) (Cap. 6) Operações de abstração como

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

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

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

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

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

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

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

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão

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

Tipos genéricos (cont)

Tipos genéricos (cont) Tipos genéricos (cont) Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Gilad Bracha, Generics in the Java Programming Language a.k.a The Generics

Leia mais

A Relação de Subtipo e Tipos Genéricos

A Relação de Subtipo e Tipos Genéricos O tipo List representa as listas que declaram ter elementos do tipo Object O tipo que representa as listas que declaram ter elementos de um tipo qualquer é List Este tipo é definido à custa

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

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática 6 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza  ~ vitorsouza Desenvolvimento OO com Java 6 Polimorfismo Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito

Leia mais

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU Aula 1 POO 1 Prática Profa. Elaine Faria UFU - 2019 Introdução Java Linguagem de programação poderosa Utiliza o paradigma Orientado a Objetos Muito utilizada em aplicativos para Internet e para redes Difundida

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

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 5 Conversão de Tipos Polimorfismo O Modificador final O Modificador

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

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

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Herança Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo 11 de setembro

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes - Programação Java - Herança e Polimorfismo - 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 relacionadas entre

Leia mais

Programação Orientada a Objeto: Introdução. Professor: Adonai Estrela Medrado Data: 22/07/2008

Programação Orientada a Objeto: Introdução. Professor: Adonai Estrela Medrado Data: 22/07/2008 Programação Orientada a Objeto: Introdução Professor: Adonai Estrela Medrado Data: 22/07/2008 Programação Programação É o ato de fazer um programa. Um programa é conjunto de ordens dadas a um computador

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

MsC. João Maria MsC. Liviane Melo

MsC. João Maria MsC. Liviane Melo Disciplina: Programação Orientada à Objetos AULA 02 Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC. Liviane Melo 2 Tipo Tamanho Alcance

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

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

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:

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

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

PHP: <?php echo("hello World");?> Printa Hello World na página do navegador, mais fácil do que no Java.

PHP: <?php echo(hello World);?> Printa Hello World na página do navegador, mais fácil do que no Java. Nome: Vinícius Meng 3º ano Escrever em tela: public class HelloWorld { public static void main (String[] args) { System.out. println ("Hello World"); Printa Hello World na tela do terminal. echo("hello

Leia mais

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel) Herança capacidade de uma classe (subclasse) herdar, adquirir atributos e funcionalidades de outra classe (superclasse), podendo juntar algumas especificidades e/ou alterar outras. Existe uma relação tipo

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1.ado o seguinte código: class valiacao { Qual fragmento de código irá compilar? a) class Prova extends valiacao { b)

Leia mais

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Conceitos de Linguagens de Programação - Características. Paavo Soeiro Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo

Leia mais

Linguagem Java - Introdução

Linguagem Java - Introdução Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean

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

Instituto Superior de Engenharia de Lisboa

Instituto Superior de Engenharia de Lisboa Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)

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 14 Generics 1 Programa Capítulo 14 Generics Generics introdução Até

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Complexidade dos sistemas de software Estrutura Decomposição Abstração Hierarquia Projeto de sistemas complexos

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

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Generics - Java. Fernando Santos. Programação Orientada a Objetos

Generics - Java. Fernando Santos. Programação Orientada a Objetos - Java Fernando Santos Programação Orientada a Objetos Generics é uma funcionalidade incorporada ao Java a partir da versão 5.0 Permite aos programadores escreverem métodos genéricos Os parâmetros dos

Leia mais

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU Aula 9 POO 1 Polimorfismo Profa. Elaine Faria UFU - 2019 Sobrecarga de Métodos Numa mesma classe, dois ou mais métodos podem ter o mesmo nome Desde que tenham tipos, quantidade e/ou ordem de parâmetros

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1. Torna o atributo visível a todas as classes do pacote onde foi declarado: a) public b) private c) protected d) package

Leia mais

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1 INE5603 Introdução à POO Prof. A. G. Silva 13 de novembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de 2017 1 / 1 Introdução à manipulação de arquivos Prof. A. G. Silva INE5603

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

Linguagens de Programação Conceitos e Técnicas. Amarrações

Linguagens de Programação Conceitos e Técnicas. Amarrações Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador

Leia mais

Herança (parte 2) Redefinição de métodos AULA 11

Herança (parte 2) Redefinição de métodos AULA 11 Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Herança (parte 2) Redefinição de métodos AULA 11 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Na aula passada

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

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

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

Herança e Polimorfismo (Universal)

Herança e Polimorfismo (Universal) Herança e Polimorfismo (Universal) Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Polimorfismo Paramétrico Polimorfismo de Inclusão Vinculação dinâmica Herança Interfaces

Leia mais

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem

Leia mais

Encapsulamento. Alberto Costa Neto DComp - UFS

Encapsulamento. Alberto Costa Neto DComp - UFS Encapsulamento Alberto Costa Neto DComp - UFS 1 Motivação O que aprendemos até agora? O que diferencia a POO da Programação Imperativa? Estas informações são suficientes para construir um projeto OO eficiente?

Leia mais

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1 Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores

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

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

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. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++. Java Parte I mleal@inf.puc-rio.br 1 Introdução LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++. Todos os programas Java são compilados e interpretados. O compilador

Leia mais

Linguagem de Programação. Diagrama de classes

Linguagem de Programação. Diagrama de classes Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG 2 Agenda Diagrama de classes Herança Associação Agregação Exercícios 3 Diagrama de classes Mostra um

Leia mais

Programação Orientada a Objetos II

Programação Orientada a Objetos II Programação Orientada a Objetos II Introdução Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com www.bolinhabolinha.com Apresentação Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Ementa Introdução ao Desenvolvimento

Leia mais

Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais).

Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais). Disciplina: Programação Orientada à Objetos AULA 08 Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais). Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio

Leia mais

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança

Leia mais

AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade

AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade AULA TEÓRICA 10 Tema 9. Interface Tema 10. Recursividade 1 Interface Uma interface é como uma classe que não pode ser instanciada. Seu objectivo é espicificar um conjunto de métodos que uma classe deverá

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

INF 1620 P3-25/11/05 Questão 1 Nome:

INF 1620 P3-25/11/05 Questão 1 Nome: INF 1620 P3-25/11/05 Questão 1 Dizemos que uma matriz quadrada é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos de sua diagonal principal

Leia mais

Interfaces e polimorfismo

Interfaces e polimorfismo Java 2 Standard Edition Interfaces e polimorfismo Helder da Rocha (helder@acm.org) argonavis.com.br 1 O que é polimorfismo Polimorfismo (poli=muitos, morfo=forma) é uma característica essencial de linguagens

Leia mais

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach

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

Sobrecarga, Sobreposição e Polimorfismo

Sobrecarga, Sobreposição e Polimorfismo Sobrecarga, Sobreposição e Polimorfismo José Gustavo de Souza Paiva Sobrecarga de Métodos Numa mesma classe, dois ou mais métodos podem ter o mesmo nome Desde que tenham tipos, quantidade e/ou ordem de

Leia mais

PROGRAMAÇÃO JAVA. Parte 3

PROGRAMAÇÃO JAVA. Parte 3 PROGRAMAÇÃO JAVA Parte 3 O PRIMEIRO PROGRAMA O Java executa uma instrução a seguir a outra, pela ordem em que estão escritas. Essa sequência poderá ser contrariada de forma especial: Alternativas: Ciclos

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II 2018.2 Bibliotecas Biblioteca é uma conjunto de subprogramas utilizados na programação que contém código e dados auxiliares externos ao programa principal, o que permite

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

Como exemplo, vamos criar uma subclasse da classe Funcionario, vista nos capítulos anteriores.

Como exemplo, vamos criar uma subclasse da classe Funcionario, vista nos capítulos anteriores. HERANÇA E POLIMORFISMO Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 7 A herança é um importante recurso da programação orientada a objeto que

Leia mais

Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.)

Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.) Aula teórica 4 Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.) Tipos de dados básicos: Representação de números inteiros Representação de números decimais Instrução de

Leia mais

Genéricos. Profa. Thienne Johnson EACH/USP

Genéricos. Profa. Thienne Johnson EACH/USP Genéricos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 18 Material complementar http://wps.prenhall.com/br_deitel_comoprogra_6/ Todas as classes em Java herdam,

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

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C# Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina POO -2017 Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C# http://www1.univap.br/~wagner Prof.

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