5. Hierarquia de Classes, Herança a e Polimorfismo

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

Download "5. Hierarquia de Classes, Herança a e Polimorfismo"

Transcrição

1 Como vimos, na POO devemos construir classes para modelar os dados de um programa. Vimos, por exemplo, que para um programa de simulação do tráfego em uma rodovia, podemos imaginar uma classe Veiculo. Veiculo double velocidade int posicao + void aumentarvelocidade() + void diminuirvelocidade() + void atualizarposicao() Ao construir a classe Veiculo estamos imaginando um veículo qualquer. Pode acontecer que, para o programa, seja necessário trabalhar com tipos especializados de veículos, como caminhão, carro de passeio ou motocicleta. Neste caso, deveremos construir novas classes para os tipos de veículos necessários. Para construir essas novas classes, no entanto, podemos tomar a classe Veiculo como base. Assim, as novas classes serão subclasses da classe Veiculo, o que tem sentido, pois um caminhão, um carro de passeio ou uma motocicleta, continua sendo um veículo. Este mecanismo, disponível na POO, de construção de classes tendo como base uma outra classe permite construir uma hierarquia de classes. ELFS 116

2 Portanto, numa hierarquia de classes, tem-se uma classe mais geral (denominada superclasse) que serve de base para a construção de classes mais específicas (denominadas subclasses). Veiculo # double velocidade #int posicao + void aumentarvelocidade() + void diminuirvelocidade() + void atualizarposicao() Note que os campos da superclasse devem ser protected (e não private) para serem herdados pelas subclasses. Caminhao double capacidade int numeixos + void incluircarga() + void retirarcarga() Carro int numpassageiros + void atualizarposicao() Motocicleta boolean pagapedagio O relacionamento existente entre uma subclasse e sua superclasse é do tipo "é um(a)". Exemplo: Carro é um Veiculo. As subclasses herdam os campos e métodos de sua superclasse, que por sua vez, pode ter herdado campos e métodos de outras classes, numa (possivelmente) longa hierarquia. ELFS 117

3 Em Java, uma classe pode herdar apenas de uma superclasse, o que é conhecido como estrutura de herança simples (ou seja, não existe herança múltipla). Mais à frente veremos que com interfaces podemos implementar mecanismos de herança múltipla. Definição de classe tendo como base uma outra classe: [<modificador>] class <nome_classe> [extends <nome_superclasse>] [<declaração_atributos>] [<declaração_construtores>] [<declaração_métodos>] O modificador estabelece o nível de acesso à classe. Classes só podem ser definidas no nível public (acesso total) ou pacote (ausência do modificador). Modificador Classe Pacote Subclasse Todas public (package) Exemplo: public class Carro extends Veiculo private int numpassageiros;... ELFS 118

4 Os membros de uma classe (campos e métodos) podem ser definidos com os seguintes níveis de acesso: public - os membros públicos de uma superclasse são acessíveis a suas subclasses e a qualquer classe usuária dessa superclasse. protected - os membros protegidos de uma superclasse podem ser acessados apenas por métodos da superclasse, por métodos de subclasses e por métodos de outras classes do mesmo pacote. private - os membros privados de uma superclasse são acessíveis apenas aos métodos dessa superclasse. Modificador Classe Pacote Subclasse Todas public protected (package) private A classe Object Todas as classes herdam, em última instância, da classe Object. A classe Object possui diversos métodos que podem ser reutilizados pelas classes de um programa, por exemplo, o método tostring(). Em Java, uma declaração de classe implicitamente inclui extends Object. ELFS 119

5 Sobreposição ( overriding ) e sobrecarga ( overloading ) de métodos Com a estrutura de herança, uma subclasse herda o comportamento (métodos) de sua superclasse. A subclasse, no entanto, pode alterar o comportamento herdado. A isto, dá-se o nome de sobreposição (ou redefinição) de métodos. Para a sobreposição, o método da subclasse deve ser declarado exatamente com o mesmo nome, tipo de retorno e lista de parâmetros (inclusive a ordem). O modificador de acesso pode mudar, mas o método na subclasse não pode ser menos acessível do que o método da superclasse. Como vimos anteriormente, os métodos podem ser sobrecarregados. Em uma subclasse, haverá a sobrecarga de métodos se métodos herdados da superclasse forem também definidos (com o mesmo nome mas com uma lista de parâmetros diferente) na subclasse. A palavra-chave super pode ser utilizada em uma subclasse para acessar os membros da superclasse (ou métodos de níveis acima na hierarquia). ELFS 120

6 Uma das grandes vantagens da POO é permitir que uma mesma variável possa referenciar diferentes objetos de uma hierarquia de classes. Cada objeto tem sua própria forma e comportamento (que são definidos quando o objeto é construído). Como a variável pode referenciar objetos diferentes, essa variável terá diferentes formas e comportamentos. A esta característica dá-se o nome de polimorfismo. ELFS 121

7 Exemplo: Midia # int codigo #float preco +String getdetalhes() DVD # String autor +String getdetalhes() CD # int nummusicas +String getdetalhes() ELFS 122

8 Exemplo: public class Midia protected int codigo; protected float preco; public String getdetalhes() return codigo + ": " + preco; public class DVD extends Midia protected String autor; public String getdetalhes() return super.getdetalhes() + " - " + autor; public class CD extends Midia protected int nummusicas; public String getdetalhes() return super.getdetalhes() + " - " + nummusicas; ELFS 123

9 Considere que uma classe usuária das classes Midia e DVD declara: Midia m = new Midia(); m.getdetalhes(); // será chamado o método da superclasse m = new DVD(); m.getdetalhes(); // será chamado o método da subclasse m DVD Midia Stack Heap Observe que quando a variável m aponta para o objeto DVD, a partir de m tem-se acesso aos campos e métodos (herdados) da superclasse (Midia). No entanto, para os métodos de Midia que sofreram sobreposição em DVD, o acesso é feito aos métodos da subclasse. O método a ser chamado é definido em tempo de execução (runtime). A isso dá-se o nome de ligação dinâmica de método. Daí vem o polimorfismo. ELFS 124

10 Exercício: Implemente as classes da seguinte hierarquia: Complexo, Real e Inteiro, onde Complexo é a superclasse da hierarquia. Considere que cada classe deve ter seus construtores (padrão e com parâmetros) e os métodos: getclasse() (que retorna o nome da classe) e, getvalor() (que retorna como um objeto desta classe deve ser exibido). Escreva um programa que cria e exibe objetos de cada uma dessas classes. ELFS 125

11 Complexo Exemplo: #int parte1 # int parte2 +String getclasse() +String getvalor() +String tostring() Real +String getclasse() +String getvalor() Inteiro +String getclasse() +String getvalor() ELFS 126

12 public class Complexo protected int parte1; protected int parte2; Complexo.java Vamos considerar que as partes real e imaginária de um número complexo são valores inteiros. public Complexo() parte1 = 0; parte2 = 0; ELFS 127

13 public Complexo(int r, int i) parte1 = r; parte2 = i; public String getclasse() return "Complexo"; public String getvalor() return "(" + parte1 + ", " + parte2 + ")"; public String tostring() return "Sou um " + getclasse() + ". Meu valor = " + getvalor(); O método tostring() será herdado pelas demais classes da hierarquia. ELFS 128

14 public class Real extends Complexo public Real() parte1 = 0; parte2 = 0; public Real(int i, int f) parte1 = i; parte2 = f; public String getclasse() return "Real"; public String getvalor() return parte1 + "." + parte2; Real.java Neste caso, os campos parte1 e parte2 herdados da classe Complexo são interpretados como as partes inteira e fracionária de um número real. ELFS 129

15 public class Inteiro extends Real public Inteiro() parte1 = 0; public Inteiro(int i) parte1 = i; Inteiro.java public String getclasse() return "Inteiro"; public String getvalor() return Integer.toString(parte1); ELFS 130

16 public class TestaHierarquia public static void main(string arg[]) Complexo c = new Complexo(7,3); System.out.println(c); TestaHierarquia.java Real r = new Real(7,3); System.out.println(r); Inteiro i = new Inteiro(7); System.out.println(i); Neste caso, a saída será: Sou um Complexo. Meu valor = (7, 3) Souum Real. Meuvalor = 7.3 Sou um Inteiro. Meu valor = 7 ELFS 131

17 Exercício: # String nome # String especie Bicho * Sobreposição + Bicho() + Bicho(String n, String e) + void setbicho(string n, String e) + void setnome(string n) + void setespecie(string e) + String getnome() + String getespecie() + void emitirsom() + String tostring() * # int forcalatido Cachorro # int forcamiado Gato + Cachorro() + Cachorro(String n, String e, int f) + void setcachorro(string n, String e, int f) +voidsetforcalatido(int f) +int getforcalatido() + void emitirsom() + String tostring() + Gato() + Gato(String n, String e, int f) +voidsetgato(string n, String e, int f) + void setforcamiado(int f) + int getforcamiado() + void emitirsom() + String tostring() * * ELFS 132

18 Argumentos Polimórficos Midia CD DVD Imagine que a classe CD foi definida como uma nova subclasse de Midia e que as classes CD e DVD contêm um método calcularpreco(). É importante que esse método seja definido em cada subclasse, pois no cálculo do preço deve-se levar em consideração o tipo de mídia. A questão que se coloca é a seguinte: Em vez de incluir o método calcularpreco() em cada uma das subclasses, seria possível incluí-lo apenas na superclasse? Isto é possível com argumentos polimórficos. ELFS 133

19 Como CD e DVD são subclasses de Midia, objetos das classes CD ou DVD podem ser passados como argumentos para um método que espera como parâmetro um objeto da classe Midia (afinal, todo CD é uma Midia e todo DVD é uma Midia). public void calcularpreco(midia m) if (m instanceof CD) preco = 15.00; else if (m instanceof DVD) preco = 30.00; else preco = 2.00; Notar que para determinar a classe do objeto recebido como parâmetro, utiliza-se o operador instanceof. Na chamada, o parâmetro passado para esse método poderá ser um objeto da classe Midia ou um objeto de uma de suas subclasses (CD ou DVD). ELFS 134

20 public class Midia protected int codigo; protected double preco; Midia.java public Midia() codigo = 0; preco = 0.0; public Midia(int c) codigo = c; preco = 0.0; public String getdetalhes() return "Co digo = " + codigo + ", Prec o = " + preco; public void calcularpreco(midia m) O corpo do método calcularpreco() será completado depois, pois depende das classe CD e DVD. ELFS 135

21 public class CD extends Midia protected int nummusicas; CD.java public CD() nummusicas = 0; public CD(int n) nummusicas = n; public int getnummusicas() return nummusicas; public String getdetalhes() return super.getdetalhes() + " (" + getnummusicas() + " muśicas)"; ELFS 136

22 public class DVD extends Midia protected int categoria; DVD.java public DVD() categoria = 0; public DVD(int c) categoria = c; public int getcategoria() return categoria; public String getdetalhes() return super.getdetalhes() + " (categoria = " + getcategoria() + ")"; Com as classes CD e DVD definidas, é possível completar o corpo do método calcularpreco() da classe Midia. ELFS 137

23 TestaMidia.java public class TestaMidia public static void main(string arg[]) Midia m = new Midia(987); System.out.println("Classe do objeto: " + m.getclass()); System.out.println("Detalhes do objeto: " + m.getdetalhes()); m.calcularpreco(m); System.out.println("Detalhes do objeto: " + m.getdetalhes()); CD c = new CD(10); System.out.println("Classe do objeto: " + c.getclass()); System.out.println("Detalhes do objeto: " + c.getdetalhes()); c.calcularpreco(c); System.out.println("Detalhes do objeto: " + c.getdetalhes()); DVD d = new DVD(1); System.out.println("Classe do objeto: " + d.getclass()); System.out.println("Detalhes do objeto: " + d.getdetalhes()); d.calcularpreco(d); System.out.println("Detalhes do objeto: " + d.getdetalhes()); ELFS 138

24 Duas questões importantes sobre o programa TestaMidia: A saída do programa será: Classe do objeto: class Midia Detalhes do objeto: Co digo = 987, Prec o = 0.0 Detalhes do objeto: Co digo = 987, Prec o = 2.0 Classe do objeto: class CD Detalhes do objeto: Co digo = 0, Prec o = 0.0 (10 muśicas) Detalhes do objeto: Co digo = 0, Prec o = 15.0 (10 muśicas) Classe do objeto: class DVD Detalhes do objeto: Co digo = 0, Prec o = 0.0 (categoria = 1) Detalhes do objeto: Co digo = 0, Prec o = 30.0 (categoria = 1) Note que na criação dos objetos das classes CD e DVD, o método padrão da superclasse é chamado automaticamente (atribuindo os valores zero para os campos codigo e preco). Observe as linhas: m.calcularpreco(m); c.calcularpreco(c); d.calcularpreco(d); O método deve ser chamado por um objeto. Mas, o método requer um parâmetro que, no caso, é o mesmo objeto que chama o método. Não é possível aplicar o método ao próprio objeto que faz a chamada? ELFS 139

25 Isto é possível, usando-se a palavra reservada this. A palavra this usada no corpo de um método corresponde ao objeto que chamou o método. Desta forma, o método calcularpreco() pode ser escrito como: public void calcularpreco() if (this instanceof CD) preco = 15.00; else if (this instanceof DVD) preco = 30.00; else preco = 2.00; e, com isso, o método não precisa de parâmetro e as linhas do programa TestaMidia poderão ser escritas como: m.calcularpreco(); c.calcularpreco(); d.calcularpreco(); ELFS 140

26 Conversão de objetos A conversão de objetos é necessária quando uma variável de uma classe aponta para um objeto de outra classe. Para a conversão deve-se observar: Conversões para cima em uma hierarquia (converter um objeto de uma subclasse para um objeto da superclasse) são feitas automaticamente. Conversões para baixo em uma hierarquia (converter um objeto da superclasse para um objeto da subclasse) devem ser indicadas explicitamente (cast ). Se o compilador permitir a conversão, o tipo de objeto será verificado em tempo de execução. Exemplo: Midia m = new Midia(); CD c = new CD(); DVD d = new DVD(); Midia m = c; // conversão automática CD DVD c = (CD)m; // conversão com cast d = (DVD)c; // conversão impossível ELFS 141

27 Construtores e Herança Um construtor de uma subclasse pode chamar explicitamente um construtor de sua superclasse utilizando o método super(). Neste caso, a chamada ao método super() deve ser a primeira linha do construtor da subclasse. A partir dos argumentos passados a esse método, a JVM saberá qual construtor da superclasse deve ser chamado. Se no construtor da subclasse nenhuma chamada a this() (construtor da própria classe) ou a super() for feita, o compilador incluirá automaticamente uma chamada a super(). Neste caso, uma chamada ao construtor sem parâmetros da superclasse será realizada. Se a superclasse não tiver um construtor sem parâmetros, um erro será gerado pelo compilador. Se na subclasse não existir um construtor, a chamada super() também será inserida no construtor padrão (inserido automaticamente pelo compilador). Resumo: ou a subclasse não tem construtor (super() implícito é adicionado), ou o construtor da subclasse chama explicitamente um construtor da superclasse. Para não haver erros, ou a superclasse tem um construtor sem parâmetros ou nenhum construtor. Objetivo: garantir que um objeto da classe Object seja instanciado. ELFS 142

28 Construtores, Herança e a Classe Object public class Object public Object() public class Midia extends Object protected int codigo; protected double preco; IMPORTANTE: this() corresponde a uma chamada ao construtor da própria classe. super() corresponde a uma chamada ao construtor da superclasse. public Midia (int c, double p) // chamada implicita a super() codigo = c; preco = p; public Midia (int c) this(c, 0.0); public class DVD extends Midia protected String autor; public DVD (String a) super(10); autor = a; ELFS 143

29 Exemplo: public class Ponto1 protected int x, y; // coordenadas do ponto Ponto1.java // Construtores public Ponto1() x = 0; y = 0; public Ponto1(int a, int b) x = a; y = b; public int getx() return x; public int gety() return y; O construtor de uma classe chama explícita ou implicitamente o construtor da superclasse. Nesse caso, haverá uma chamada implícita ao construtor padrão de Object. Aqui também haverá uma chamada (implícita) ao construtor padrão de Object. public String tostring() return "[" + x + ", " + y + "]"; Note que a definição da classe Ponto1 não utiliza a palavra-chave extends. Se a palavra extends não for usada, a linguagem Java considera implicitamente a classe Object como superclasse. ELFS 144

30 public class Circulo1 extends Ponto1 protected double raio; public Circulo1() raio = 0; public Circulo1(double r, int a, int b) super(a, b); // chama construtor da superclasse raio = (r >= 0? r : 0.0); public double getraio() return raio; public double area() return Math.PI * Math.pow(raio,2); Circulo1.java No construtor-padrão de Circulo1 haverá uma chamada implícita ao construtor de Ponto1 (note que se a classe Ponto1 tivesse apenas o construtor com parâmetros, haveria um erro de compilação nessa linha do programa). Note que para o outro construtor de Circulo1 a chamada ao construtor da superclasse é explícita. O método tostring() da classe Circulo1 sobrescreve (override) o método tostring() da classe Ponto1, da mesma forma que o método tostring() da classe Ponto1 sobrescreve o método tostring() da classe Object. public String tostring() return "Centro = [ " + x + ", " + y + "]; Raio = " + raio; Observe que o método tostring() da classe Circulo1 acessa diretamente os campos protegidos x e y, herdados da classe Ponto1. Note que esse método poderia retornar: "Centro = " + super.tostring() + "; Raio = " + raio ELFS 145

31 import java.text.decimalformat; public class TestaPC1 public static void main(string args[]) Ponto1 pref, p; Circulo1 cref, c; String sai; Note que: mas, p = new Ponto1(30, 50); c = new Circulo1(2.5, 120, 90); sai = "Ponto p: " + p + "\ncirculo c: " + c; pref = c; sai += "\n\ncirculo c (via pref): " + pref; cref = (Circulo1) pref; sai += "\n\ncirculo c (via cref): " + cref; DecimalFormat doisdigitos = new DecimalFormat("0.00"); TestaPC1.java pref = c é possível (pois Circulo1 é subclasse de Ponto1) cref = (Circulo1) pref necessita de cast (coerção). sai += "\narea de c (via cref): " + doisdigitos.format(cref.area()); if (p instanceof Circulo1) cref = (Circulo1) p; sai += "\n\nsucesso na coerc aõ"; else sai += "\n\np naõ se refere a um circulo"; System.out.println(sai); ELFS 146

32 Para conferir a saída: Ponto p: [30, 50] Circulo c: Centro = [ 120, 90]; Raio = 2.5 Circulo c (via pref): Centro = [ 120, 90]; Raio = 2.5 Circulo c (via cref): Centro = [ 120, 90]; Raio = 2.5 Area de c (via cref): 19,63 p naõ se refere a um circulo ELFS 147

33 Construtores e Finalizadores em Subclasses Em Java, quando um objeto não é mais utilizado (isto é, quando não há referências para o objeto), ele é marcado como lixo. O coletor de lixo é executado de tempos em tempos para recuperar a memória consumida pelos objetos marcados como lixo. Cada classe pode incluir um método finalizador (finalize) que "termina a limpeza" em cada objeto da classe antes da memória consumida pelo objeto ser coletada. A chamada ao método finalize não garante que o coletor de lixo será chamado imediatamente, pois é a JVM quem decide quando o coletor de lixo é chamado. Quando um objeto de uma subclasse é criado, o construtor da superclasse é chamado (implícita ou explicitamente). Isso é importante para fazer as inicializações necessárias nos campos da superclasse, herdadas pelo objeto da subclasse. Para a finalização, a última instrução de um método finalize deve ser super.finalize(), para assegurar que o método finalize da superclasse seja chamado e que todas as partes de um objeto estejam finalizadas adequadamente quando o coletor de lixo coletar esse objeto. ELFS 148

34 Exemplo: Ordem em que os construtores e finalizadores são chamados. public class Ponto2 protected int x, y; // coordenadas do ponto Ponto2.java public Ponto2() A variável this é uma referência ao objeto que chamou o método. x = 0; y = 0; System.out.println("Ponto2 construido: " + this); public Ponto2( int a, int b ) x = a; y = b; System.out.println("Ponto2 construido: " + this); protected void finalize() System.out.println("Ponto2 finalizado: " + this); public String tostring() return "[" + x + ", " + y + "]"; O método finalize() de uma classe deve ser sempre definido como protected para que as subclasses tenham acesso ao método, mas não as outras classes que simplesmente usam os objetos dessa classe. ELFS 149

35 public class Circulo2 extends Ponto2 protected double raio; Circulo2.java public Circulo2() Note que aqui há uma chamada implícita ao construtor da superclasse. raio = 0; System.out.println("Circulo2 construido: " + this); public Circulo2(double r, int a, int b) super(a, b); // chama construtor da superclasse raio = r; System.out.println("Circulo2 construido: " + this); protected void finalize() System.out.println("Circulo2 finalizado: " + this); super.finalize(); public String tostring() return "Centro = " + super.tostring() + "; Raio = " + raio; Note que a ausência da referência super causaria uma recursão infinita, porque o método da subclasse estaria chamando a si próprio. ELFS 150

36 public class TestaPC2 public static void main(string args[]) Ponto2 p1; Circulo2 c1, c2; p1 = new Ponto2(3, 4); c1 = new Circulo2(4.5, 72, 29); c2 = new Circulo2(10, 5, 5); c1 = null; // marca para coleta de lixo c2 = null; p1 = null; System.gc(); // chama o coletor de lixo TestaPC2.java Note pela saída do programa que, na construção dos objetos c1 e c2, o polimorfismo faz com que o método tostring() executado seja o da classe Circulo2 pois são objetos Circulo2 que estão sendo criados. Note que quando tostring() é chamado a partir do construtor Ponto2, o valor para o campo raio é zero porque raio ainda não foi inicializado no construtor Circulo2. Ponto2 construido: [3, 4] Ponto2 construido: Centro = [72, 29]; Raio = 0.0 Circulo2 construido: Centro = [72, 29]; Raio = 4.5 Ponto2 construido: Centro = [5, 5]; Raio = 0.0 Circulo2 construido: Centro = [5, 5]; Raio = 10.0 Circulo2 finalizado: Centro = [5, 5]; Raio = 10.0 Ponto2 finalizado: Centro = [5, 5]; Raio = 10.0 Circulo2 finalizado: Centro = [72, 29]; Raio = 4.5 Ponto2 finalizado: Centro = [72, 29]; Raio = 4.5 Ponto2 finalizado: [3, 4] Observe que a ordem de finalização é contrária à da construção, pois o método finalize() da superclasse é a última instrução a ser executada no método finalize() da subclasse. Observe também que não há garantia da ordem em que os objetos são coletados como lixo pelo método gc(). ELFS 151

37 A palavra-chave final Algumas vezes pode ser interessante que um elemento de um programa (classe, campo ou método) não possa ser modificado. Nestes casos, a palavra-chave final deve ser usada. Classe final: uma classe especificada como final não pode ter subclasses. A classe String é final: garante-se que essa classe não será alterada. Método final: um método definido como final não pode ser redefinidos. Métodos são definidos como final quando sua implementação não puder ser alterada por alguma razão. Métodos declarados como static ou como private são implicitamente final. Todos os métodos de uma classe final são implicitamente final. Campo final: um campo definido como final não pode ser modificado, ou seja, é uma constante. Uma vez atribuído um valor ao campo este valor não pode ser alterado. Uma classe pode ter um campo final que não é inicializado na definição e sim em um construtor, mas uma vez que a atribuição seja feita, o valor não pode mudar. ELFS 152

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

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

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

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

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

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

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

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

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

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO HERANÇA A sintaxe de herança a para C++ e para Java são diferentes. Além m disso, em C++ é possível construir herança a múltipla...

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

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

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

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

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

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

Leia mais

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração Java First-Tier: Aplicações Orientação a Objetos em Java (II) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Sobrecarga Um recurso usual em programação OO é o uso de sobrecarga

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

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

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 1. Defina os sequintes termos: (a) (1 Ponto) Polimorfismo Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27 (b) (1 Ponto) Sobrescrita de funções (c) (1 Ponto) Sobrecarga

Leia mais

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,Pa Palavra reservada this Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando

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

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

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 Objetos Flávio de Oliveira Silva 144

Programação Orientada a Objetos Flávio de Oliveira Silva 144 HERANÇA Herança é a capacidade de uma subclasse de ter acesso as propriedades da superclasse(também chamada classe base) relacionada a esta subclasse. Dessa forma os atributos e métodos de uma classe são

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

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

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento Orientação a objetos Programação Orientada a Objetos Alexandre César Muniz de Oliveira Linguagens orientadas a procedimentos e linguagens orientadas a objetos Unidade de programação: funções e classes

Leia mais

Notas de Aula 04: Herança e polimorfismo.

Notas de Aula 04: Herança e polimorfismo. Notas de Aula 04: Herança e polimorfismo. Objetivos da aula: Introduzir o conceito de Heranças Criar uma hierarquia de classes Rever o uso de modificadores de acesso. Apresentar o conceito de polimorfismo

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

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

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

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

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

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

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

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

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis

Leia mais

Herança e Polimorfismo - Parte II -

Herança e Polimorfismo - Parte II - Herança e Polimorfismo - Parte II - Programação Orientada a Objetos Java Prof. Geraldo Braz Junior A hierarquia do exemplo DoME 2 Saída incompleta O que queremos CD: A Swingin' Affair (64 mins)* Frank

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

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

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

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

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

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 e Propriedades

Herança e Propriedades Herança e Propriedades 2013 O que veremos hoje? Herança e Propriedades Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Herança em POO Herança Herança

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

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

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Professora Sheila Cáceres Sobrecarga (overloading) Na mesma classe podemos definir vários métodos com o mesmo nome Sobrecarga O tipo

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

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

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

UNIFEI Disciplina Professor

UNIFEI Disciplina Professor UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO02 Enganharia de Software II Enzo Seraphim Nota de aula de Java Encapsulamento

Leia mais

Herança e Polimorfismo -Parte II -

Herança e Polimorfismo -Parte II - Herança e Polimorfismo -Parte II - Mário Meireles Teixeira mario@deinf.ufma.br A hierarquia do exemplo DoME 2 1 Saída incompleta O que queremos CD: A Swingin' Affair (64 mins)* Frank Sinatra tracks: 16

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

Universidade Federal de Uberlândia

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

Leia mais

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

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

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

Leia mais

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

Linguagem de Programação IV Introdução

Linguagem de Programação IV Introdução Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação

Leia mais

Como vimos anteriormente, subclasses podem redefinir (sobrepor) um método de sua superclasse.

Como vimos anteriormente, subclasses podem redefinir (sobrepor) um método de sua superclasse. Métodos e Classes Abstratas Como vimos anteriormente, subclasses podem redefinir (sobrepor) um método de sua superclasse. Para indicar que um método de uma classe deve necessariamente ser redefinido em

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

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

Linguagem de Programação II Herança

Linguagem de Programação II Herança Linguagem de Programação II Herança Prof. Alessandro Borges 2 Tópicos Reutilização de classes Delegação Herança Definição Superclasse e Subclasse A palavra reservada extends Método construtor com herança

Leia mais

C com introdução a OO

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

Leia mais

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

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

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

02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?

02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais? 01. [Sebesta, 2000] O que é um descritor? 02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais? 03. [Sebesta, 2000] Quais são as questões de projeto relativas aos tipos

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

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

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

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

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias

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

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda. Aprendendo Java 2 Rodrigo Mello Ramon Chiara Renato Villela Novatec Editora Ltda. www.novateceditora.com.br 1 Programação Orientada a Objetos O que é Programação Orientada a Objetos? É um paradigma de

Leia mais

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr 5COP088 Laboratório de Programação Aula 2 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Aula 2 Orientação a Objetos 1) Discussão 2) Encapsulamento 3) Herança 4) Polimorfismo 5) Sobrescrita

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

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

Herança e Polimorfismo

Herança e Polimorfismo Herança e Polimorfismo 2013 O que veremos hoje? Herança e polimorfismo Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Polimorfismo em POO Mais

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

Programação Orientada por Objetos

Programação Orientada por Objetos PPROG Paradigmas da Programação Programação Orientada por Objetos Herança de Classes Polimorfismo Classes Abstratas (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2015/16) 1/72

Leia mais

Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010

Classes e Objetos. Prof. Fernando V. Paulovich  9 de agosto de 2010 Classes e Objetos 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

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

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

Leia mais

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo POO Fundamentos Parte III Professor Vicente Paulo de Camargo PROGRAMAÇÃO ORIENTADA A OBJETOS HERANÇA SIMPLES Mecanismo que permite a uma classe, denominada de SUBCLASSE ou CLASSE FILHA, herdar todos os

Leia mais

Programação Orientada a Objeto (POO)

Programação Orientada a Objeto (POO) Programação Orientada a Objeto (POO) Prof Francesco Artur Perrotti Classes e Objetos Classe pode ser definida como uma categoria de objetos. Usamos as classes para facilitar o entendimento dos objetos

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br www3.ifrn.edu.br/~andrealmeida Aula VIII Herança e Interface Roteiro Herança Classes Abstratas Interface

Leia mais

Interfaces. Classes abstratas que possuem apenas métodos abstratos. Na Interface: Métodos são implicitamente. Campos são implicitamente

Interfaces. Classes abstratas que possuem apenas métodos abstratos. Na Interface: Métodos são implicitamente. Campos são implicitamente Classes abstratas que possuem apenas métodos abstratos Na Interface: Métodos são implicitamente abstract e public Campos são implicitamente static e final Não possuem construtores assim como as classes

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Classes e Objetos, Construtores e Desconstrutores, Atributos e

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

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

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

Leia mais

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

Herança e Classes Abstratas. João Paulo Q. dos Santos

Herança e Classes Abstratas. João Paulo Q. dos Santos Herança e Classes Abstratas João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Herança; Sobrescrita(sobreposição) de métodos; Herança e construtores; Conceitos sobre classes abstratas;

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

Aula. Renata Pontin de Mattos Fortes 2006

Aula. Renata Pontin de Mattos Fortes 2006 Aula Herança Renata Pontin de Mattos Fortes renata@icmc.usp.br 2006 Herança técnica de projeto OO fundamental, usada para criar e organizar classes reutilizáveis 2 Roteiro Criando Subclasses Sobrescrevendo

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 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização

Leia mais