Auto-Referenciamento e Herança

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

Sobrecarga, Sobreposição e Polimorfismo

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Orientação a Objetos (OO)

Interfaces e Classes Abstratas

Python Orientação a Objetos. Introdução à Programação SI2

Programação Orientada a Objetos

Introdução ao Java. Prof. Herbert Rausch Fernandes

Construtores. Introdução

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Linguagem de Programação III

POO29004 Programação Orientada a Objetos

Unidade: sobrecarga, construtores e herança

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

Linguagem de Programação III

Programação Orientada a Objetos JAVA - NETBEANS

Herança Tiago Eugenio de Melo

Linguagem de Programação II Herança

Programação Orientada a Objetos

Notas de Aula 04: Herança e polimorfismo.

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Professor Leonardo Cabral da Rocha Soares Lattes:

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

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação Orientada a Objetos

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

Classes e Objetos. Sintaxe de classe em Java

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

O PARADIGMA ORIENTADO POR OBJETOS

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Orientação a Objetos AULA 06

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

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

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

Programação Orientada a Objetos

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

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.

POO29004 Programação Orientada a Objetos

Computação II Orientação a Objetos

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

Herança - Conceitos Básicos

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça. Prática 02 Herança

Módulo III Padrões GOF

Linguagens de Programação

Computação II Orientação a Objetos

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Herança e Propriedades

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

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

Herança - Conceitos Básicos

Universidade Federal de Uberlândia

POO29004 Programação Orientada a Objetos

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

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

Programação por Objectos. Java

Orientação a Objetos parte 2 ENCAPSULAMENTO, CLASSES, HERANÇAS

Conceitos de Programação Orientada a Objetos

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

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

Programação Orientada a Objetos

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

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

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

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

BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho

9 Classes Abstractas e Interfaces

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

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

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

4 Conceito de Herança

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

Programação Orientada a Objetos para Redes de Computadores

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

Linguagem de programação Programação Orientada a objetos

Curso Profissional de Gestão e Programação de Sistemas Informáticos

Programação com Objectos 1º Teste Tipo 1º Semestre (90 minutos)

Universidade Federal de Uberlândia

Programação Orientada a Objetos

Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

COMPORTAMENTOS - Observações

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

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

Programação Orientada a Objetos para Redes de Computadores. Polimorfismo com Hierarquias de Herança. Exemplo: Hierarquia Animal

Programação Orientada a Objetos

Programação Orienta a Objetos

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Avançando em Java com

2. Introdução à Programação e Análise. Orientada a Objetos

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

Linguagem de Programação. Diagrama de classes

Linguagem de Programação I Apresentação da Disciplina

Programação Orientada a Objetos JAVA - NETBEANS

Java Como Programar, 8/E

Desenvolvimento Web II

Sobreposição de Métodos

Transcrição:

Auto-Referenciamento e Herança José Gustavo de Souza Paiva Auto-Referenciamento Ao criarmos o código de uma classe, ainda não sabemos quais serão seus objetos, e por isso não há como referenciá-los Utilizando o auto-referenciamento, é possivel construir o código sem saber a priori os objetos a serem criados Palavra-chave this Referência ao próprio objeto, utilizada dentro de métodos Quando chamado, indica que o objeto que chamou o método sofrerá aquilo que o método executa 1

Palavra-chave this Usos comuns Passagem de referência do objeto corrente como parâmetro para outro método Resolução de conflitos de nome: variáveis locais e atributos com o mesmo nome Utilizando this, objetos de uma classe podem executar métodos de outros objetos passando uma referência de si próprio Objetos podem também indicar quais atributos seus serão modificados Palavra-chave this Além disso, objetos de uma classe podem invocar, dentro de seu construtor, outro construtor, da mesma classe Economia de código e minimização de duplicação de código (reutilização de código de inicialização) Observação: A palavra-chave this deve ser a primeira instrução do corpo do construtor 2

Problema 3

Problema As classes Funcionário e Estudante compartilham alguns atributos, mas não todos Assim, não é possível utilizar uma classe para representar instâncias da outra Isso também seria conceitualmente errado, já que Funcionário não é um estudante, e viceversa No entanto, do jeito que está, teremos informações replicadas, o que é ruim Herança Conceito extremamente útil na POO Reutilização de atributos e métodos de uma classe por outra classe Classes podem herdar características comuns de outras classes Várias classes com atributos e/ou métodos comuns Nova classe com apenas esses atributos e métodos (atributos e métodos comuns): classe mais genérica Outras classes que herdam esses atributos e métodos: classe mais específica 4

Herança Classes que herdam atributos/métodos possuem apenas os atributos ou métodos que apenas ela deve possuir (atributos específicos) Se uma classe A herda atributos e métodos da classe B, dizemos que A é subclasse (ou classe-filha) de B B é superclasse (ou classe-mãe) de A Herança Vantagens Diminui a quantidade de código através da reutilização de elementos Traz maior integridade e facilidade de manutenção Permite que alterações no código de uma classe mãe sejam compartilhadas com todos os seus herdeiros, sem a necessidade de reprogramação 5

Herança A classe A utiliza código da classe B, o que proporciona que o código de B se torne disponível automaticamente em A A classe A adiciona apenas o código que a torna diferente de B, ou seja, somente incrementa (estende) B, proporcionando um código menor, menos erros e mais simples (especialização) Exemplo de Herança Classe Animal Todos os objetos da classe Animal possuem características (atributos) comuns, como peso, altura, idade, estados como ter fome, etc. Também fazem determinadas tarefas (serviços ou métodos) como comer, procriar, nascer, morrer, se movimentar, etc. 6

Exemplo de Herança Exemplo de Herança Dessa forma, a classe Animal foi criada e utilizada em um determinado aplicativo Um novo aplicativo deve agora ser feito, utilizando a classe mamífero A classe mamífero é muito parecida com a classe Animal, mas possui atributos e métodos que não são comuns a todos os animais, por exemplo, mamar( ) Essa classe também realiza algumas atividades de forma diferente dos demais Animais (Nem todos os animais comem ou procriam como os mamíferos, por exemplo) 7

Exemplo de Herança Numa linguagem de programação sem herança, a implementação da classe Mamífero provavelmente implicaria na replicação do código de Animal, com as modificações necessárias para caracterizar a classe Mamífero Se fosse necessário implementar uma classe Macaco, seria necessário replicar o código de Mamífero na nova classe Uma classe Chimpanzé teria o código de Macaco replicado em si, e assim sucessivamente Exemplo de Herança Se for necessário implementar todas as classes existentes entre o Ser Vivo e o Mosquito, centenas de classes teriam código replicado das classes anteriores Se houvesse a necessidade de modificar algum método de Animal que fosse comum a todas as centenas de classes, essa modificação teria que ser feita em todas elas, uma a uma 8

Exemplo de Herança Mamífero é uma especialização de Animal A herança funciona como um mecanismo que permite declarar Mamífero como tal, e herdar todos os métodos e atributos da classe ancestral Não é preciso replicar código, apenas Incluir os métodos e atributos específicos na classe Mamífero, o que ele tem a mais Redefinir os métodos que achar necessário Herança produz uma ordem de hierarquia entre diversas classes relacionadas Um objeto herdeiro é em geral uma especialização do seu ancestral, que por consequência será uma generalização de seu sucessor Exemplo de Herança 9

Exemplo de Herança É importante ressaltar que normalmente não é preciso redefinir os métodos e atributos herdados, a não ser que haja necessidade de refiná-los Antropóide e Ser Humano respiram do mesmo jeito,logo o método respira( ) de Antropóide serve para fazer Homem respirar Entretanto, os mamíferos andam de formas diferentes, logo um método anda( ) em Mamífero provavelmente terá que ser redefinido para Antropóide e Elefante, por exemplo Exemplo de Herança 10

Exemplo 02 Exemplo 02 Instâncias da classe Employee podem aparecer em um aplicativo de banco de dados de folha de pagamento Suponha que seja necessário modelar um funcionário comissionado, que tem um saláriobase, mais uma pequena comissão por venda A classe CommissionedEmployee é muito parecida com a classe Employee Um objeto CommissionedEmployee é um Employee 11

Exemplo 02 Sobreposição de Construtores Na criação de um objeto de uma subclasse, todos os construtores padrão das classes da hierarquia são chamados automaticamente Para executar explicitamente um construtor herdado da hierarquia, é possível utilizar o comando super (chamada a um construtor da superclasse) Observação: o comando super não se restringe apenas a construtores, mas para qualquer método 24 12

Exemplo 02 Observação Exemplo 02 Como os atributos first_name, last_name e wage são privados na classe Employee, NÃO PODERÃO SER VISTAS na classe CommissionedEmployee 13

Exercício Faça um programa que considere três classes, da seguinte maneira: Exercício Tanto para a classe Cliente quanto para a classe Fornecedor, implemente os seguintes métodos public void infopessoal(): reportar na tela os atributos: "nome", "sobrenome", "idade", "rg" e "lugarnascimento" public void info(): reportar na tela todos os campos correspondentes à classe da seguinte forma: 14

Referências DEITEL, H. M., DEITEL, P. J., Java: Como Programar, Bookman, São Paulo, 2002 BARNES, D. J., KOLLING, M., Programação Orientada a Objetos com Java, 2004, ISBN: 8576050129 MEDINA, R., D., Apostila de ActionScript, disponível em http://wwwusr.inf.ufsm.br/~rose/curso3/cafe/cap3_heranca. pdf 15