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

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

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

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

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

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

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

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

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

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

Programação por Objectos. Java

Classe Abstrata e Interface

Herança e Propriedades

POO29004 Programação Orientada a Objetos

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

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

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

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

Linguagem de Programação. Diagrama de classes

Linguagem de Programação III

Avançando em Java com Polimorfismo. Prof.: Hugo Barros

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

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

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

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

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

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

4 Conceito de Herança

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

Programação Orientada a Objetos SANTOS, Rafael

Notas de Aula 04: Herança e polimorfismo.

Herança e Polimorfismo

Universidade Federal de Uberlândia

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

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

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

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

Professor Leonardo Cabral da Rocha Soares Lattes:

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

POO29004 Programação Orientada a Objetos

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

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

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

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

Programação Orientada a Objetos com Java. Prof. Júlio Machado

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Conceitos de Programação Orientada a Objetos

Linguagem de Programação II Herança

Herança e Polimorfismo - Parte II -

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

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programação Orientada por Objetos

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

Linguagens de Programação Aula 12

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

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

Programação Orientada a Objetos

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

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

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

extendsé usado para indicar herança em JAVA

Linguagem de Programação II Implementação

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

Sobrecarga, Sobreposição e Polimorfismo

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

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

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.

Universidade Federal de Uberlândia

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

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

POO29004 Programação Orientada a Objetos

5 Reuso de Classes. Desenvolvimento OO com Java. Vítor E. Silva Souza

Orientação a Objetos - Herança

Classes e Objetos. Sintaxe de classe em Java

9 Classes Abstractas e Interfaces

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

Programação Orientada a Objetos II

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Modelo do Mundo Real. Abstração. Interpretação

Encapsulamento. Alberto Costa Neto DComp - UFS

Programação por Objectos. Java

Aula. Renata Pontin de Mattos Fortes 2006

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

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

ACH2002. Orientação a Objetos

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

COMPORTAMENTOS - Observações

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

Programação Orientada a Objetos Flávio de Oliveira Silva 144

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

Palavras Reservadas da Linguagem Java

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

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

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

Java para Desktop. Programação Orientada à Objetos 2 JSE

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

Rafael B. Pereira (

Programação Orientada a Objetos II

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

Transcrição:

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 Exemplo

Herança "Um dia tudo isso será seu..."

Herança Inspiração no mundo real Pais transmitem aos filhos suas características e comportamento

Herança e POO Permite criar classes que aproveitam atributos e métodos de classes existentes Motivação: reutilização de código com flexibilidade Usos: especialização extensão sobreposição

Herança Exemplo: classe Pessoa (existente) Pessoa nome rg getnome()

Herança Novas classes: Estudante e Professor Pessoa nome rg getnome() Estudante curso Professor departamento ferias marcaferias()

Herança Terminologia Classe derivada (sub-classe) Pessoa nome rg getnome() Super-classe (classe-pai, classe-mãe, classe-base) Classe derivada (sub-classe) Estudante curso Estudante e Professor são especializações de Pessoa Professor departamento ferias marcaferias()

Herança Atributos são herdados Estudante curso Pessoa nome rg getnome() Atributos de Estudante: nome rg curso Estudante e Professor herdam atributos (nome e rg) de Pessoa atributos nome e rg estão implícitos Professor devido à herança departamento ferias marcaferias()

Herança Métodos (funcionalidades) são herdados Estudante e Professor herdam funcionalidades de Pessoa Funcionalidades de Estudante: getnome() Estudante curso Pessoa nome rg getnome() método getnome() está implícito devido à herança método de Estudante sobrepõe (override) o método de Pessoa() Professor departamento ferias marcaferias()

Herança Novas classes: Estudante e Professor Estudante e Professor herdam funcionalidades de Pessoa Estudante curso Pessoa nome rg getnome() Funcionalidades de Professor: getnome() marcaferias() método marcaferias() é uma funcionalidade somente de Professor Professor departamento ferias marcaferias()

Herança e UML Diagrama de classes

Herança e UML Diagrama de classes

Herança em Java Usa palavra-chave extends na declaração das sub-classes class SuperClasse { private int apriv; public int apub; private void metpriv(); public void metpub(); } class SubClasse extends SuperClasse { }

Visibilidade de atributos e métodos Atributos e métodos públicos da super-classe podem ser acessados normalmente nas subclasses O código abaixo é um exemplo disso: SubClasse obj = new SubClasse(); obj.apub = 99; obj.metpub();

Visibilidade de atributos e métodos Atributos e métodos privados da super-classe não podem ser acessados nas sub-classes O código abaixo vai dar erro de compilação: SubClasse obj = new SubClasse(); obj.apriv = 10; obj.metpriv();

Exemplo: Pessoa e Estudante

Exemplo: Pessoa e Estudante Construtor de Pessoa é invocado implicitamente

Exemplo: Pessoa e Estudante Método setnome() herdado de Pessoa

Exemplo: Pessoa e Estudante Método deve mostrar nome e curso

Exemplo: Pessoa e Estudante Mas nome é atributo privado de Pessoa!!! Método deve mostrar nome e curso

Uso de super (1) Referência para objeto da super-classe (para acessar seus atributos/métodos) Veja isso em: http://download.oracle.com/javase/tutorial/java/iandi/super.html

Uso de super (2) Para invocar explicitamente um construtor da super-classe Deve estar na primeira linha do construtor da sub-classe Veja isso em: http://download.oracle.com/javase/tutorial/java/iandi/super.html

Visibilidade protected Atributos e métodos protected da superclasse podem ser acessados nas sub-classes, mas não são acessíveis a outras classes Atributo nome acessado normalmente

Sobrescrita ou extensão de métodos Métodos da super-classe podem ser estendidos ou sobrescritos nas sub-classes Método de Estudante estende o método de Pessoa

Sobrescrita ou extensão de métodos Métodos da super-classe podem ser estendidos ou sobrescritos nas sub-classes Método de Estudante sobrescreve o método de Pessoa

Mais sobre herança em Java Ao contrário de C++, Java não permite herança múltipla Em Java, todas as classes derivam (implicitamente) da classe Object A classe Object possui alguns atributos e métodos úteis: tostring(): retorna uma string representando o objeto clone(): cria e retorna uma cópia do objeto etc.

Sobrescrita do método tostring class Pessoa { private String nome;... String tostring() { return nome; } } class PessoaApp { public static void main(string[] args) { Pessoa p = new Pessoa("Joao"); System.out.println(p); } }

Uso de this Referência para o objeto corrente Pode ser usado para invocação explícita de um construtor class Relogio { private int hora, minuto; "this" não tem nada a ver com herança, mas assemelha-se a "super" em seu uso } Relogio(int hora, int minuto) { this.hora = hora; this.minuto = minuto; } Relogio() { this(0,0); } Veja isso em: http://download.oracle.com/javase/tutorial/java/javaoo/thiskey.html

Herança e referências para objetos Uma referência para a super-classe pode apontar para um objeto da sub-classe O contrário não é verdadeiro "Todo estudante é uma pessoa, mas nem toda pessoa é estudante" Pessoa p; Estudante e = new Estudante(); p = e; // e = p; // Errado!

Polimorfismo Significa: muitas formas Um único nome de método, várias implementações Sobrecarga (overloading) e sobrescrita (override) são exemplos de polimorfismo Exemplos recém vistos: método tostring() método métodos construtores

Qual método será invocado? class TesteVinculacaoDinamica { public static void main(string[] args) { Pessoa refp; Estudante refe; Pessoa p = new Pessoa("Maria"); Estudante e = new Estudante("Jose", "Direito"); //refe = p; // invalido refp = e; refp.; } } refp = p; refp.;

Qual método será invocado? class TesteVinculacaoDinamica { public static void main(string[] args) { Pessoa refp; Estudante refe; Pessoa p = new Pessoa("Maria"); Estudante e = new Estudante("Jose", "Direito"); //refe = p; // invalido refp = e; refp.; Método de Estudante } } refp = p; refp.; Método de Pessoa

Polimorfismo dinâmico O exemplo do slide anterior ilustra polimorfismo dinâmico Vinculação dinâmica (dynamic binding): método a ser chamado é determinado em tempo de execução Mecanismo poderoso quando se tem herança e métodos com mesmo nome