Linguagem de Programação II alessandro.borges/LP_II... · Linguagem de Programação II / Java -…

  • View
    213

  • Download
    0

Embed Size (px)

Transcript

  • Linguagem de Programao II / Java - Herana

    Linguagem de Programao II

    Herana

    Prof. Alessandro Borges

  • Linguagem de Programao II / Java - Herana

    Tpicos

    Reutilizao de classes

    Delegao

    Herana

    Definio

    Superclasse e Subclasse

    A palavra reservada extends

    Mtodo construtor com herana

    Definio do mtodo super

    Hierarquia de classes

    Herana mltipla

    2

  • Linguagem de Programao II / Java - Herana

    Reutilizao de classes3

  • Linguagem de Programao II / Java - Herana

    Reutilizao de classes

    Aproveita cdigos j testados e comprovados.

    Reduz necessidade de escrever novos mtodos e

    classes

    Economiza o trabalho do programador

    Reduz possibilidade de erros

    Mecanismos de reutilizao de classes em Java

    Delegao (Composio)

    Herana

    4

  • Linguagem de Programao II / Java - Herana

    Delegao (Composio)5

  • Linguagem de Programao II / Java - Herana

    Delegao (Composio)

    Uma nova classe estende uma classe base incluindo uma

    instncia da classe base como atributo na nova classe.

    A nova classe composta de campos especficos e de uma

    instncia da classe base.

    As classes originais ficam, assim, contidas na nova classe

    Mtodos correspondentes so criados na nova classe para

    viabilizar o uso dos mtodos da classe base, delegando,

    assim, a execuo desses mtodos.

    6

  • Linguagem de Programao II / Java - Herana

    Delegao (Composio)

    Exemplo:

    Classe base Data

    Classe base Hora

    Nova Classe DataHora

    7

  • Linguagem de Programao II / Java - Herana

    Delegao (Composio)

    Exemplo:

    Classe base Data

    Classe base Hora

    Nova Classe DataHora

    8

    Atributos:

    - dia (byte)

    - ms (byte)

    - ano (short)

    Mtodos:

    - Construtor

    - gets e sets

    - validaData (boolean)

  • Linguagem de Programao II / Java - Herana

    Delegao (Composio)

    Exemplo:

    Classe base Data

    Classe base Hora

    Nova Classe DataHora

    9

    Atributos:

    - hora (byte)

    - minuto (byte)

    - segundo (short)

    Mtodos:

    - Construtor

    - gets e sets

    - validaHora (boolean)

  • Linguagem de Programao II / Java - Herana

    Delegao (Composio)

    Exemplo:

    Classe base Data

    Classe base Hora

    Nova Classe DataHora

    10

    Atributos:

    - estaData (Data)

    - estaHora (Hora)

    Mtodos:

    - Construtor(es)

    - setDataHora

    - validaDataHora (boolean)

    - toString (String)

  • Linguagem de Programao II / Java - Herana

    Delegao (Composio)

    Exemplo:

    Classe base Data

    Classe base Hora

    Nova Classe DataHora

    11

    Atributos:

    - estaData (Data)

    - estaHora (Hora)

    Mtodos:

    - Construtor

    - setDataHora

    - validaDataHora (boolean)

    - toString (String)

    Composio

    Delegao

  • Linguagem de Programao II / Java - Herana

    Herana12

  • Linguagem de Programao II / Java - Herana

    HeranaO que

    Mais uma forma de evitar a repetio de cdigo.

    Permite criar uma classe usando outra como base,

    reutilizando atributos e mtodos no privados e

    acrescentando diferenas especficas

    um relacionamento entre um elemento genrico e um

    mais especfico

    Relaes um tipo de entre classes

    Tambm chamada de Generalizao / Especializao

    O objeto da classe filha herda todas as caractersticas

    da classe pai.

    13

  • Linguagem de Programao II / Java - Herana

    HeranaSuperclasse e Subclasse

    Relacionamento entre classes onde:

    A partir de uma classe existente (superclasse) possvel criar

    uma nova classe (subclasse);

    Superclasse e Subclasse :

    Superclasse (ou classe base ou classe ancestral) : a classe existente que herdada por uma outra classe.

    Subclasse (ou classe derivada ou classe herdeira): consiste na

    classe que herda todos os mtodos e atributos de uma classe existente;

    Classes finais (final) no podem ser herdadas

    14

  • Linguagem de Programao II / Java - Herana

    HeranaSuperclasse e Subclasse

    Dizemos que: Uma classe (subclasse) estende (herda)

    outra classe (superclasse).

    Implementado atravs da palavra reservada extends

    Uma subclasse pode adicionar Mtodos e Atributos

    particulares, mas no pode remover Mtodos e

    Atributos da superclasse, contendo, ento, todos eles.

    15

  • Linguagem de Programao II / Java - Herana

    HeranaSuperclasse e Subclasse

    Se a superclasse tem atributos privados, ento somente

    podero ser acessados por mtodos da superclasse.

    A herana permite que os mtodos pblicos da

    superclasse sejam usados na subclasse para acessar os

    atributos da superclasse.

    Os mtodos prprios da subclasse, porm, no podem

    acessar diretamente os atributos privados da

    superclasse.

    16

  • Linguagem de Programao II / Java - Herana

    Semntica: um

    Exemplos:

    Aluno uma Pessoa

    Professor uma Pessoa

    Na Herana as classes mais genricas so

    divididas em subclasses mais especficas.

    Herana17

    Aluno Professor

    Pessoa

    Superclasse

    SubclasseSubclasse

  • Linguagem de Programao II / Java - Herana

    Herana em Java18

    Implementando a classe Pessoa:

    1. public class Pessoa{

    2. String nome;

    3. int idade;

    4. public void Falar(){

    5. System.out.println("Falar alto.");

    6. }

    7. }

    Implementando a classe Aluno que herda da classe Pessoa:1. public class Aluno extends Pessoa{

    2. String matricula;

    3. public void Matricular(){

    4. System.out.println("Aluno Matriculado.");

    5. }

    6. }

  • Linguagem de Programao II / Java - Herana

    Mtodo Construtor usando Herana

    em Java

    19

    Implementando a classe Pessoa:

    1. public class Pessoa{

    2. String nome;

    3. int idade;

    4. public Pessoa(String nome, int idade){

    5. this.nome = nome;

    6. this.idade = idade;

    7. }

    8. }

    Implementando a classe Aluno que herda da classe Pessoa:1. public class Aluno extends Pessoa{

    2. String matricula;

    3. public Aluno(String nome, int idade, String matricula){

    4. super(nome, idade);

    5. this.matricula = matricula;

    6. }

    7. }

    O construtor da subclasse recebe,

    como argumentos, os dados para

    criar a superclasse mais os dados

    especficos da subclasse

  • Linguagem de Programao II / Java - Herana

    Herana

    Superclasse e Subclasse

    Construtores so chamados simplesmente pela palavra

    super seguida dos argumentos.

    Mtodos so chamados pela palavra super seguida de

    um ponto e do nome do mtodo.

    Construtores de superclasses s podem ser chamados

    de dentro de construtores de subclasses e na primeira

    linha de cdigo do construtor da subclasse.

    Somente mtodos e construtores da superclasse

    imediata podem ser chamados usando super.

    No existem construes super.super

    20

  • Linguagem de Programao II / Java - Herana

    Herana Hierarquia de classes

    Pessoa

    FsicaPessoa

    Jurdica

    Pessoa

    Aluno Professor Escola

    Superclasse

    Subclasse e

    Superclasse Subclasse e

    Superclasse

    SubclasseSubclasse Subclasse

    21

  • Linguagem de Programao II / Java - Herana

    Herana Hierarquia de classes

    Superclasse direta:

    Herdada explicitamente (um nvel acima na hierarquia).

    Superclasse indireta (herana em cadeia):

    Herdada de dois ou mais nveis acima na hierarquia.

    Herana nica:

    Herda apenas uma superclasse.

    Herana mltipla:

    Herda mltiplas superclasses.

    22

  • Linguagem de Programao II / Java - Herana

    Herana Mltipla

    Uma classe possui mais de uma superclasse.

    Exemplos de Herana Mltipla:

    Exemplo 1 Exemplo 2

    Estudante Trabalhador

    Monitor

    Carro Brinquedo

    Carro de

    Brinquedo

    Superclasses

    Subclasses

    23

  • Linguagem de Programao II / Java - Herana

    Herana Mltipla em Java

    Java no suporta herana mltipla.

    Herana Mltipla em Java ocorre a partir:

    1. Da extenso de outra classe (superclasse); e

    2. Do uso de interfaces.

    Assinatura de uma classe Java com herana mltipla:

    [modificadores] class [nome_classe] extends[nome_superclasse] implements [nome_interface1], [nome_interface2], ... , [nome_interfaceN]

    24

  • Linguagem de Programao II / Java - Herana

    Linguagem de Programao II

    Herana

    Prof. Alessandro Borges

  • Linguagem de Programao II / Java - Herana

    Exerccio26

    Escreva um programa em Java que implemente a

    Herana a partir das classes abaixo conforme

    mostrado no diagrama de classes da UML.

    Veiculo

    - marca: String- velocidade: Double

    + Veiculo(marca: String, velocidade: Double)+ getMarca(): String+ setMarca(String marca) : Void

    Moto

    - tamanho: String+ Moto(marca: String, velocidade: Double, tamanho: String)+ getTamanho(): String+ setTamanho(String tamanho) : Void

    Carro

    - numPortas: int

    + Carro(marca: String, velocidade: Double, numPortas: int)+ getNumPortas(): int+ setNumPortas(int numPortas) : Void