Programação por Objectos. Java

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

Download "Programação por Objectos. Java"

Transcrição

1 Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50

2 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode ser vista como generalização das subclasses. A herança é dita como uma relação is-a. As subclasses herdam os atributos e métodos das superclasses. Os métodos herdados podem ser modificados. Novos atributos e métodos podem ser adicionados às subclasses. LEEC@IST Java 2/50

3 Herança revisão (2) O polimorfismo ocorre quando há múltipla definição, ou redefinição, de métodos da superclasse nas subclasses, com a mesma assinatura. Em OO o polimorfismo é normalmente implementado através de ligação dinâmica, i.e., o método a ser executado é determinado apenas em tempo de execução (e não em tempo de compilação). LEEC@IST Java 3/50

4 Herança revisão (3) Na herança simples cada subclasse tem apenas uma superclasse (directa). Na herança múltipla uma subclasse pode ter mais do que uma superclasse (directa). Java 4/50

5 Herança (1) O Java adopta as seguintes estratégias na herança: Só há herança simples de classes. Todas as classes são subclasses de Object (explícita ou implicitamente). A subclasse herda todos os atributos e métodos com visibilidade public ou protected (mas não private) das superclasses. No caso de atributos e métodos sem qualificador de visibilidade (visibilidade de pacote), a subclasse herda estes atributos e métodos se estiver definida no mesmo pacote que a superclasse, e apenas neste caso. Os construtores não são métodos, e por isso não são herdados. LEEC@IST Java 5/50

6 Herança (2) Se a subclasse declarar um método com o mesmo identificador e parâmetros (número e tipo) que uma das superclasses, então a subclasse redefine esse método. Se a subclasse declarar um atributo com o mesmo identificador que uma das superclasses, então o atributo da subclasse esconde o atributo da superclasse (mas continua a existir!) LEEC@IST Java 6/50

7 Herança (3) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif: qualificador (visibilidade, entre outros) Ident: identificador da classe extends IdentC: especialização de superclasse implements IdentI: realização de interfaces LEEC@IST Java 7/50

8 Herança (4) public class ContaPrazo extends Conta { private static float juro=0.05; private long inicio; private int intervalo; public void vencimentojuros() { long today=system.currenttimemillis; if(today==inicio+intervalo) { quantia *= (1+juro); inicio = today; LEEC@IST Java 8/50

9 Construtores em subclasses (1) É da responsabilidade da subclasse inicializar os atributos definidos na sua classe, assim como os atributos que herda das suas superclasses. O construtor da subclasse pode delegar a inicialização dos atributos herdados para a superclasse, chamando, implicita ou explicitamente, o construtor da superclasse. Um construtor da subclasse pode fazer uma chamada explícita dum construtor da superclasse através do super(). Se o construtor da superclasse tiver N parâmetros, estes devem ser passados na chamada explícita: super(param1,...,paramn). Se existir, a chamada explícita da superclasse deve ser a primeira instrução no construtor. LEEC@IST Java 9/50

10 Construtores em subclasses (2) Pode deferir-se a escolha de qual construtor da superclasse a chamar, chamando explicitamente um dos construtores da classe, usando o this (em vez do super). Se nenhum construtor da superclasse é chamado, ou se nenhum construtor da classe é chamado, como primeira instrução do construtor, o construtor sem argumentos da superclasse é implicitamente chamado antes de qualquer instrução no construtor. Se a superclasse não tiver um construtor sem argumentos, é necessário chamar explicitamente um construtor da superclasse. LEEC@IST Java 10/50

11 Construtores em subclasses (3) public class A { protected int a; A() { a = 5; A(int var) { a = var; Não é necessário chamar explicitamente super() pois super() é implicitamente chamado! public class DuplicaA extends A { DuplicaA () { a *= 2; DuplicaA (int var) { super(var); a *= 2; LEEC@IST Java 11/50

12 Construtores em subclasses (4) public class A { protected int número; A(int num) { número=num; public class B extends A { protected String nome= não-definido ; B() { super(-1); É necessário chamar explicitamente super(-1) pois a superclasse não tem construtor sem argumentos! B(int num) { super(num); B(int num, String str) { this(num); nome = str; LEEC@IST Java 12/50

13 Construtores em subclasses (5) Quando um objecto é criado, é afectada memória para todos os seus atributos, incluindos os herdados das superclasses. Os atributos são inicializados com um valor por omissão, dependendo do seu tipo. Após isto a construção tem 3 fases: 1. Chamar o construtor da superclasse (através de uma chamada implícita ou explícita). Se uma chamada explícita a this é encontrada então é seguida a cadeia de chamadas até se chegar a um ponto em que é chamado o construtor da superclasse. O construtor da superclasse é chamado nas mesmas 3 fases (recursivamente, até se chegar a Object). LEEC@IST Java 13/50

14 Construtores em subclasses (6) Nesta fase, qualquer expressão que é passada como argumento ao construtor explícito não deve incluir nem atributos nem métodos do objecto a ser criado. 2. Inicializar os atributos (inicialização na declaração dos mesmos e através de blocos de inicialização). Nesta fase, referências para outros membros do objecto a ser criado são permitidas, desde que estas já tenham sido declaradas. 3. Chamar o corpo do construtor. LEEC@IST Java 14/50

15 Construtores em subclasses (7) Quando é criado um objecto do tipo B public class A { protected int a=1; protected int total; A() { total=a; public class B extends A { protected int b=2; B () { total+=b; a b total 1. Atributos com valores por omissão Construtor de B é chamado Constructor de A é chamado (super()) Construtor Object é chamado Inicialização dos atributos de A Execução do construtor de A Inicialização dos atributos de B Execução do construtor de B LEEC@IST Java 15/50

16 Herança e redefinição (1) Numa classe derivada podem: ser adicionados novos atributos e métodos à classe. ser redefinidos métodos na classe. LEEC@IST Java 16/50

17 Herança e redefinição (2) Um método da subclasse é considerado uma redefinição dum método da superclasse se: Ambos têm o mesmo identificador e parâmetros (número e tipo). O tipo de retorno é covariante: Se o tipo de retorno é uma referência, então o método redefinido pode declarar como tipo de retorno um subtipo do tipo de retorno do método da superclasse. Se o tipo de retorno é um tipo primitivo, então o tipo de retorno do método redefinido tem que ser idêntico ao tipo de retorno do método da superclasse. LEEC@IST Java 17/50

18 Herança e redefinição (3) Um método só pode ser redefinido na subclasse se for visível da superclasse para a subclasse. Se um método definido na superclasse não é visível na subclasse então não é herdado. Se um método não é herdado, mesmo que um método com o mesmo identificador, mesmos parâmetros (número e tipo) e retorno covariante seja definido na subclasse, este método não é uma redefinição do método na superclasse. LEEC@IST Java 18/50

19 Herança e redefinição (4) A visibilidade dos métodos redefinidos pode ser diferente da dos métodos da superclasse, mas apenas para dar mais acesso. Por exemplo, um método declarado na superclasse como protected pode ser redefinido protected ou public, mas não private ou com visibilidade de pacote. LEEC@IST Java 19/50

20 Herança e redefinição (5) Um método de instância não pode ter o mesmo tipo e número de parâmetros que um método estático herdado, e vice-versa. Um método redefinido pode ser declarado abstracto, mesmo que o método da superclasse não o seja. LEEC@IST Java 20/50

21 Herança e redefinição (6) A propriedade final dos parâmetros dum método duma superclasse, pode ser retirada ou colocada num método redefinido (trata-se apenas um detalhe de implementação). Um método redefinido pode ser declarado final, mas obviamente o método na superclasse não o poderia ser. LEEC@IST Java 21/50

22 Herança e redefinição (5) A redefinição de métodos que substituem uma sequência de parâmetros por uma tabela é possível, mas é desanconselhável. Um método de argumento variável, com uma sequência de parâmetros T, tem a mesma assinatura que um método que converte essa última sequência de parâmetros na tabela T[]. LEEC@IST Java 22/50

23 Herança e redefinição (6) Se um método definido numa subclasse tiver o mesmo identificador, mas diferente número ou tipo de parâmetros, que um método (visível) da superclasse então é uma sobreposição. Se um método definido numa subclasse tiver o mesmo identificador, mesmos número e tipo de parâmetros, mas o retorno não for covariante relativamente a um método (visível) da superclasse então existe um erro de compilação. LEEC@IST Java 23/50

24 Herança e redefinição (7) Um atributo da superclasse que é declarado na subclasse com o mesmo nome (independentemente do tipo) é escondido. Não há redefinição de atributos, estes são sempre escondidos. O atributo da superclasse continua a existir, mas deixa de ser possível à subclasse aceder-lhe directamente. É necessário usar a referência super, ou outra referência para o objecto da superclasse, para aceder ao atributo escondido. LEEC@IST Java 24/50

25 Polimorfismo (1) Numa hierarquia de classes, quando há redefinição de um método a sua implementação é substituída. Na presença de uma referência para um objecto na hierarquia de classes, a chamada sobre esse objecto ao método redefinido refere-se ao método de que classe? Quando um método é chamado através de uma referência para um objecto, a classe de instânciação do objecto (não necessariamente a classe de declaração) dita a implementação a ser usada. SuperClasse sub = new SubClasse(); classe de declaração de sub classe de instanciação de sub LEEC@IST Java 25/50

26 Polimorfismo (2) A classe de declaração de um objecto é determinada em tempo de compilação. O compilador tem acesso a essa informação na própria declaração da referência. SuperClasse sub = new SubClasse(); SuperClasse sub;... //num outro ponto do programa sub = new SubClass(); LEEC@IST Java 26/50

27 Polimorfismo (3) A classe de instânciação de um objecto é determinada apenas em tempo de execução. A classe de instânciação pode sempre ser de uma classe mais abaixo na hierarquia, relativamente à classe declarada. A instânciação de um objecto pode ser feita num ponto do programa completamente diferente do ponto onde a declaração foi feita. Apenas o fluxo do programa dirá qual a classe de instanciação. SuperClasse sub;... //num outro ponto do programa sub = new SubClasse(); LEEC@IST Java 27/50

28 Polimorfismo (4) public class SuperClasse { protected String str = SupCStr ; public void imprime() { System.out.println( SupCImprime(): +str); public class SubClasse extends SuperClasse { protected String str = SubCStr ; public void imprime() { System.out.println( SubCImprime(): +str); LEEC@IST Java 28/50

29 Polimorfismo (5) //... Continuação do slide anterior public static void main(string[] args) { SubClasse sub = new SubClasse(); SuperClass sup = sub; sup.imprime(); sub.imprime(); System.out.println( sup.str = +sup.str); System.out.println( sub.str = +sub.str; No terminal é impresso SubCImprime(): SubCStr SubCImprime(): SubCStr sup.str = SupCStr sub.str = SubCStr LEEC@IST Java 29/50

30 Polimorfismo (6) Relativamente ao slide anterior: A classe de declaração e instanciação de sub é SubClasse. A referência sub foi declarada como sendo do tipo SubClasse. Foi afectada memória para sub como sendo um objecto do tipo SubClasse. A classe de declaração de sup é SuperClasse. A referência sup foi declarada como sendo do tipo SuperClasse. A classe de instanciação de sup é SubClasse. Em memória sup é um objecto do tipo SubClasse (cópia de referências por atribuição, ver slide 26 de Java - parte 3: métodos). O mesmo aconteceria se tivessemos sub = new SubClasse(); LEEC@IST Java 30/50

31 Referência super (1) A referência super está disponível em todos os métodos de instância duma subclasse. No acesso a atributos e chamada de métodos, a referência super funciona como uma referência vista como uma instância da superclasse. A chamada super.método usa sempre a implementação do método da superclasse (definido ou herdado). LEEC@IST Java 31/50

32 Referência super (2) public class SuperClasse { protected void nome() { System.out.println( SuperClasse ); public class SubClasse extends SuperClasse { protected void nome() { System.out.println( SubClasse ); LEEC@IST Java 32/50

33 Referência super (3) //... Continuação do slide anterior protected void imprimenome() { SuperClasse sup = (SuperClasse) this; System.out.print( this.nome(): ); this.nome(); System.out.print( sup.nome(): ); sup.nome(); System.out.print( super.nome(): ); super.nome(); No terminal é impresso this.nome(): SubClasse sup.nome(): SubClasse super.nome(): SuperClasse LEEC@IST Java 33/50

34 Membros estáticos (1) Os membros estáticos duma classe, atributos ou métodos, não podem ser redefinidos, são sempre escondidos. Se uma referência é usada para aceder aos membros estáticos, o membro a aceder é sempre determinado pela classe de declaração da referência. LEEC@IST Java 34/50

35 Membros estáticos (2) public class SuperClasse { protected static String str = SupCStr ; public static void imprime() { System.out.println( SuperCImprime(): +str); public class SubClasse extends SuperClasse { protected static String str = SubCStr ; public static void imprime() { System.out.println( SubCImprime(): +str); LEEC@IST Java 35/50

36 Membros estáticos (3) //... Continuação do slide anterior public static void main(string[] args) { SubClasse sub = new SubClasse(); SuperClass sup = sub; sup.imprime(); sub.imprime(); System.out.println( sup.str = +sup.str); System.out.println( sub.str = +sub.str; No terminal é impresso SupCImprime(): SupCStr SubCImprime(): SubCStr sup.str = SupCStr sub.str = SubCStr LEEC@IST Java 36/50

37 Conversão explícita (1) Um cast é usado para dizer ao compilador que uma expressão deve ser vista como tendo o tipo espeficicado pelo cast. Upcast: cast de um classe para outra acima na hierarquia de classes (de subclasse para superclasse, não necessariamente directa). Downcast: cast de uma classe para outra abaixo na hierarquia de classes (de superclasse para subclasse, não necessariamente directa). O upcast é também conhecido como cast seguro, porque é sempre válido. LEEC@IST Java 37/50

38 Conversão explícita (2) No Java, um atributo ou variável local de uma superclasse pode referenciar qualquer das suas subclasses. No entanto, só podem ser (directamente): chamados os métodos definidos na superclasse. acedidos os atributos declarados na superclasse. public class A { void foo() { public class B extends A { void b() { public class Armazem { A var[] = new A[2]; void xpto(){ var[0] = new A(); var[0].foo(); var[1] = new B(); var[1].foo(); LEEC@IST Java 38/50

39 Conversão explícita (3) Relativamente ao exemplo anterior: Tanto var[0] como var[1] não têm acesso (directo) ao método b() de B (mesmo tendo sido var[1] instanciado como um objecto de tipo B). No entanto, var[1] pode aceder ao método b() através dum downcast:((b)var[1]).b(); Se a subclasse B redefinir o método foo(), qual o código executado na chamada var[1].foo()? Executa-se sempre o método mais abaixo na hierarquia de classes, portanto a resposta correcta seria foo() de B (ver slide 25). LEEC@IST Java 39/50

40 Herança e sobreposição (1) Uma classe X é compatível com uma classe Y se: X=Y, ou X é uma subclasse de Y (directa ou indirecta) Uma classe X é mais compatível com uma classe Y do que com uma classe Z se: X=Y e X é uma subclasse de Z (directa ou indirecta), ou X é uma subclasse de Y (directa ou indirecta) e Y é uma subclasse de Z (directa ou indirecta) Z Y X A compatibilidade também pode ser aplicada a tipos primitivos, usando-se neste caso a ordenação dada na conversão implícita dos mesmos: byte->short->int->long->float->double LEEC@IST Java 40/50

41 Herança e sobreposição (2) Quando um método é chamado e há sobreposição de métodos, de tal forma que o tipo dos parâmetros dos métodos sobrepostos se encontram numa mesma hierarquia, o compilador escolhe o método mais específico (se existir). A determinação do método a chamar é feita em tempo de compilação, baseada no tipo declarado das referências passadas aos métodos, e no valor dos argumentos. Este processo determina apenas qual a forma do método a chamar, não qual a implementação. Em tempo de execução, a classe de instanciação do objecto sobre o qual o método é chamado é que vai determinar qual a implementação do método, escolhido em tempo de compilação, que vai ser usada (ver slide 25). LEEC@IST Java 41/50

42 Herança e sobreposição (3) Determinação do método mais específico: 1. Determinar a classe sobre a qual procurar pelo método. 2. Determinar todos os métodos dessa classe que possam ser aplicados: a) Métodos com visibilidade correcta. b) Métodos com o mesmo identificador. c) Métodos que possam receber o número de argumentos passados. d) Métodos cujos tipos dos parâmetros sejam compatíveis com os tipos declarados das referências passadas como argumento. LEEC@IST Java 42/50

43 Herança e sobreposição (4) 2. (cont.) A compatibilidade dos tipos em 2.d) é feita em 3 fases: i. A compatibilidade é considerada sem tentar nenhuma conversão de embrulho (boxing conversion), e sem considerar a possibilidade de número variável de argumento. ii. Se 1. falhar, a compatibilidade é considerada com a possibilidade de conversão de embrulho (boxing conversion). iii. Se 2. falhar, a compatibilidade é considerada com a possibilidade de número variável de argumentos. LEEC@IST Java 43/50

44 Herança e sobreposição (5) 3. De entre o conjunto de métodos seleccionados em 2. são escolhidos apenas os métodos cujos tipos dos parâmetros têm uma maior compatibilidade com os tipos declarados das referências passadas como argumento. Por exemplo, se o conjunto tiver um método que recebe um Object como parâmetro, e outro que recebe uma String como parâmetro: Se a referência passada como argumento tiver sido declarada do tipo String, é escolhido o método que recebe uma String. Se a referência passada como argumento tiver sido declarada do tipo Object, é escolhido o método que recebe um Object. LEEC@IST Java 44/50

45 Herança e sobreposição (6) 4. Determinar o método a chamar: a) Se apenas um método foi escolhido em 3., esse método é o mais específico e é chamado. b) Se foi escolhido mais de um método em 3. temos duas hipóteses: i. Se os métodos têm assinaturas diferentes, a chamada é ambígua e o código que o chama é inválido. ii. Se os métodos têm a mesma assinatura temos três hipóteses: Se todos os métodos são abstractos, é escolhido um ao acaso. Se apenas um método não é abstracto, é escolhido esse método. De qualquer outra forma a chamada é ambígua e o código que o chama é inválido. LEEC@IST Java 45/50

46 Herança e sobreposição (7) Sobremesa Bolo Scone As seguintes chamadas: xpto(sobremesaref, sconeref); xpto(bolochocref, sobremesaref); xpto(bolochocref, sconeamanteigadoref); xpto(boloref, sconeref); xpto(sconeref, boloref); resultam na chamada de que forma do método xpto? BoloChocolate SconeAmanteigado void xpto(sobremesa d, Scone s) {... void xpto(bolo c, Sobremesa d) {... void xpto(bolochocolate cc, Scone s) {... void xpto(sobremesa... ds) {... // 1ª forma // 2ª forma // 3ª forma // 4ª forma LEEC@IST Java 46/50

47 Herança e sobreposição (8) Relativamente ao exemplo anterior: xpto(dessertref, sconeref); resulta na chamada da 1ª forma do método xpto. xpto(chocolatecakeref, dessertref); resulta na chamada da 2ª forma do método xpto. xpto(chocolatecakeref, butteredsconeref); resulta na chamada da 3ª forma do método xpto. xpto(cakeref, sconeref); é inválida. xpto(sconeref, cakeref); resulta na chamada da 4ª forma do método xpto. LEEC@IST Java 47/50

48 Herança e sobreposição (9) No exemplo anterior, xpto(boloref, sconeref); é uma chamada inválida, contudo: Com o cast (Sobremesa)boloRef a chamada xpto((sobremesa)boloref, sconeref); resultaria na chamada da 1ª forma de xpto. Com o cast (Sobremesa)sconeRef a chamada xpto(boloref, (Sobremesa)sconeRef); resultaria na chamada da 2ª forma de xpto. LEEC@IST Java 48/50

49 Herança e sobreposição (10) void xpto(byte b) {... void xpto(short s) {... void xpto(int i) {... void xpto(long i) {... void xpto(float f) {... void xpto(double d) {... // 1ª forma // 2ª forma // 3ª forma // 4ª forma // 5ª forma // 6ª forma As seguintes chamadas: xpto(byteref); xpto(shortref); xpto(intref); xpto(longref); xpto(floatref); xpto(doubleref); resultam na chamada de que forma do método xpto? LEEC@IST Java 49/50

50 Herança e sobreposição (11) Relativamente ao exemplo anterior: xpto(byteref); resulta na chamada da 1ª forma do método xpto. xpto(shortref); resulta na chamada da 3ª forma do método xpto. xpto(intref); resulta na chamada da 3ª forma do método xpto. xpto(longref); resulta na chamada da 5ª forma do método xpto. xpto(floatref); resulta na chamada da 5ª forma do método xpto. xpto(doubleref); resulta na chamada da 6ª forma do método xpto. LEEC@IST Java 50/50

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/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

Programação por Objectos. Java

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

Leia mais

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

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

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

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

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

Leia mais

9 Classes Abstractas e Interfaces

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

Leia mais

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

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

Leia mais

Programação 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

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

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

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 Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

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

Leia mais

Programação Orientada a 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

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

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

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

Leia mais

Programação Orientada a Objetos. 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

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

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

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

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

Leia mais

Programação Orientada a Objetos. 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

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo

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

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

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

Leia mais

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

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

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

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

4 Conceito de Herança

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

Leia mais

Programação 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

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona alcides.pamplona@gmail.com Tópicos Ligação Dinamica Polimorfismo Verificação Dinâmica de Tipos 2 Introdução A vinculação ou ligação

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

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

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

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

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

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

Conceitos de Programação Orientada a Objetos

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

Leia mais

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

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

Leia mais

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

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Visibilidade de membros Membro da classe derivada pode usar os membros públicos ( public ) e protegidos ( protected ) da sua classe base (como

Leia mais

Modificadores de Acesso JAVA

Modificadores de Acesso JAVA Modificadores de Acesso JAVA Definição Os modificadores de acesso são padrões de visibilidade de acessos às classes, atributos e métodos. Esses modificadores são palavras-chave reservadas do Java. E as

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

Herança Tiago Eugenio de Melo

Herança Tiago Eugenio de Melo Herança Tiago Eugenio de Melo tiago@comunidadesol.org Herança Conceito: Herança é a capacidade de especializar tipos de objetos (classes), de forma que os tipos especializados contenham, além de características

Leia mais

AULA TEÓRICA 9. Tema 8. Herança (continuação) Ø Sobreposição de métodos. Ø Variáveis e métodos estáticos. Ø Hierarquia de classes.

AULA TEÓRICA 9. Tema 8. Herança (continuação) Ø Sobreposição de métodos. Ø Variáveis e métodos estáticos. Ø Hierarquia de classes. AULA TEÓRICA 9 Tema 8. Herança (continuação) Ø Sobreposição de métodos. Ø Variáveis e métodos estáticos. Ø Hierarquia de classes. Ø Polimorfismo Elaborado por eng.tatiana Kovalenko Sobreposição de métodos

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

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz LÓGICA DE PROGRAMAÇÃO (JAVA) Definição A herança é um princípio da POO que permite a criação de novas classes a partir de outras previamente criadas. Essas novas classes são chamadas de subclasses, ou

Leia mais

Computação II Orientação a Objetos

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

Leia mais

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

Introdução à Programação. Encapsulamento e Herança

Introdução à Programação. Encapsulamento e Herança Introdução à Programação Encapsulamento e Herança Tópicos da Aula Hoje, aprenderemos conceitos mais avançados de Orientação a Objetos Encapsulamento Usando modificadores de acesso em C++ Herança Importância

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

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

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

Leia mais

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

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

Leia mais

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

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

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

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

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU Aula 7 POO 1 Herança Profa. Elaine Faria UFU - 2019 Problema Problema As classes Funcionário e Estudante compartilham alguns atributos, mas não todos Não é possível utilizar uma classe para representar

Leia mais

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

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

Leia mais

extendsé usado para indicar herança em JAVA

extendsé usado para indicar herança em JAVA Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando extendsé usado para indicar herança em JAVA class ClasseA{ protected int a; public int geta()

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

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

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

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

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos

Leia mais

Universidade Federal de Uberlândia

Universidade Federal de Uberlândia Universidade Federal de Uberlândia Programação Orientada a Objetos Herança, Generalização-Especialização Prof. Fabiano Azevedo Dorça Princípio da POO que permite a criação de novas classes a partir de

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

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

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

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

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

Leia mais

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

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

Leia mais

Programação 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

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

Programação Orientada a Objetos

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

Leia mais

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

Professor Leonardo Cabral da Rocha Soares Lattes:

Professor Leonardo Cabral da Rocha Soares Lattes: Professor Leonardo Cabral da Rocha Soares Lattes: http://lattes.cnpq.br/3184602538494393 A Herança, em programação orientada a objetos (POO), é a possibilidade de escrever novas classes partindo de classes

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

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

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

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

POO e C++: Herança e Polimorfismo

POO e C++: Herança e Polimorfismo POO e C++: Herança e Polimorfismo Márcio Santi Luiz Fernando Martha Conceito de Herança em POO Recurso que torna o conceito de classe mais poderoso; Permite que se construa e estenda continuamente classes

Leia mais

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

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

Leia mais

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

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores

Leia mais

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos) Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private

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

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

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

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

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

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

Leia mais

Linguagem Java - Introdução

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

Leia mais

CPP. C plus plus versus Java

CPP. C plus plus versus Java CPP C plus plus versus Java Principais Diferenças Herança a múltiplam Destructores e garbage colector Override de operadores Máquina virtual Templates e genéricos Referências e ponteiros Métodos virtuais

Leia mais

Ficha Prática 10. António Nestor Ribeiro, Paulo Azevedo, Mário Martins PPIV (LESI) 2005/06

Ficha Prática 10. António Nestor Ribeiro, Paulo Azevedo, Mário Martins PPIV (LESI) 2005/06 Ficha Prática 10 António Nestor Ribeiro, Paulo Azevedo, Mário Martins {anr,pja,fmm@di.uminho.pt PPIV (LESI) 2005/06 Objectivos 1. Interfaces: declaração e utilização. 2. Interfaces como tipos de dados

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