Polimorfismo e Acoplamento Dinâmico
|
|
- Gabriella Bugalho Sabrosa
- 7 Há anos
- Visualizações:
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 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 maisClasse 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 maisTipos, 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 maisTipos, 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 maisProgramaçã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 mais9 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 maisProgramaçã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 maisProgramaçã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 maisLinguagem 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 maisProgramaçã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 maisAULA 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 maisProgramaçã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 maisFundamentos 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 maisProgramaçã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 maisAná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 maisProgramaçã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 maisA 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 maisProf. 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 mais4 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 maisProgramaçã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 maisProgramaçã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 maisPalavras 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 maisUNIVERSIDADE 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 maisProgramaçã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 maisUniversidade 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 maisLinguagem 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 maisTipos 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 maisA 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 maisUNIVERSIDADE 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 maisUniversidade 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 mais6 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 maisAula 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 maisHeranç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 maisINF1636 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 maisLaborató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 maisPolimorfismo. 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 maisPOO29004 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 maisProgramaçã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 maisProgramaçã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 maisProgramaçã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 maisInterfaces 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 maisMsC. 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 maisProgramaçã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 maisProgramaçã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 maisHeranç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 maisProgramaçã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 maisLinguagem 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 maisPHP: <?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 maisEx: 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 maisProgramaçã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 maisConceitos 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 maisPOO29004 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 maisLinguagem 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 maisObjetivos. 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 maisInstituto 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 maisINF1636 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 maisCarlos 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 maisOrientaçã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 maisInterfaces. 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 maisParadigmas 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 maisGenerics - 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 maisAula 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 maisProgramaçã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 maisProf. 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 maisProgramaçã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 maisLinguagens 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 maisHeranç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 maisAvanç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 maisProgramaçã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 maisHeranç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 maisProgramaçã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 maisEncapsulamento. 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 maisHeranç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 maisJava 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 maisLista 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 maisClasses 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 maisIntroduçã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 maisLinguagem 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 maisProgramaçã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 maisHeranç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 maisHeranç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 maisAULA 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 maisCIÊ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 maisINF 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 maisInterfaces 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 maisIteradores. 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 maisProgramaçã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 maisSobrecarga, 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 maisPROGRAMAÇÃ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 maisProgramaçã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 maisClasses 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 maisComo 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 maisAula 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 maisGené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 maisComputaçã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 maisMaterial 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 maisParadigmas 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