5 - herança

19
Herança Jefferson Ferreira Barbosa [email protected] João Pessoa 2014 CENTRO UNIVERSITÁRIO DE JOÃO PESSOA COORDENAÇÃO DE SISTEMAS DE INFORMAÇÃO

Upload: johnatas-ferreira

Post on 11-Nov-2015

27 views

Category:

Documents


1 download

DESCRIPTION

Herança

TRANSCRIPT

  • Herana

    Jefferson Ferreira Barbosa [email protected]

    Joo Pessoa 2014

    CENTRO UNIVERSITRIO DE JOO PESSOA COORDENAO DE SISTEMAS DE INFORMAO

  • At aqui...

    Fundamentos da Linguagem Java Princpios da Orientao a Objetos Denies da Linguagem Construtores, Encapsulamento e Sobrecarga

    Hoje: Herana

    2 Herana

  • 3

    Vamos imaginar o funcionamento de um sistema acadmico do Unip, que controla o cadastro

    de alunos, professores e funcionrios

  • Vamos imaginar o funcionamento de um sistema acadmico do Unip, que controla o cadastro de alunos, professores e funcionrios

    Herana 4

  • Conceito

    Imagine se um dia precisarmos adicionar uma nova informao(CPF, por exemplo), para todas as Pessoas do controle acadmico?

    Precisaramos ir de classe em classe adicionando a informao do CPF.

    5 Herana

  • Conceito

    Ao modelar um conjunto de classes, podemos encontrar classes semelhantes na estrutura e no comportamento.

    Ex i s t e uma mane i r a , em J ava , de relacionarmos uma classe de tal maneira que uma delas herda tudo que a outra tem.

    6 Herana

  • Ento, como implementar?

    A ideia central de herana que novas classes so criadas a parYr de classes j existentes. Subclasse herda de uma Superclasse Subclasse mais especca que a Superclasse

    Herana uma tcnica para prover suporte a especializao Classes mais abaixo: especializadas Classes mais acima: genricas

    7 Herana

  • Representao Pessoa

    -nome -email -telefone -idade -sexo

    8

    Professor

    -salario -disciplina

    Aluno

    -matricula -notas

    Funcionario

    -salario

    Herana

    Em todo momento que criarmos um objeto do Ypo Professor, ou Aluno, ou Funcionrio, este objeto possuir tambm os atributos e mtodos denidos

    na classe Pessoa, pois agora ele uma Pessoa

  • Sobreposio

    Pode-se modicar algum mtodo da minha superclasse?

    Sim, atravs da sobreposio! Mtodos implementados previamente em uma superclasse podem ser redenidos por qualquer subclasse

    9

    Para isso, mantm-se a mesma assinatura do mtodo herdado, redefinindo apenas o corpo do

    mtodo

    Herana

  • Tipos de Herana

    Herana pura mtodos genricos so sobrepostos

    Extenso novos comportamentos so adicionados nas classes de

    especializao (mtodos genricos herdados)

    Por exemplo:

    10

    Forma

    +desenha() +apaga()

    Quadrado

    +desenha() +apaga()

    Circulo

    +desenha() +apaga() +deneRaio()

    Herana Pura

    Extenso

    Herana

  • Posso herdar de vrias Classes?

    Cada subclasse possui uma nica superclasse A isso, chamamos de herana simples Em algumas linguagens, possvel herdar a parYr de diversas superclasses (como em C++)

    Java no permite herana mlYpla com classes

    11 Herana

  • Recapitulando...

    Se B uma subclasse de A, ento: Os objetos de B suportam todas as operaes suportadas pelos objetos de A, exceto aquelas que foram redenidas

    Os objetos de B incluem todas as variveis de instncia de B + todas as variveis de instncia de A

    Mtodos declarados como private no sero herdados Construtores tambm no so herdados

    Sero chamados (em cascata) na construo de objetos especializados(super()).

    12 Herana

  • Como acessar os atributos que herdamos?

    13 Herana

  • Como acessar os atributos que herdamos?

    No gostaramos de deixar os atributos de public, pois dessa maneira qualquer um poderia alterar os atributos dos objetos deste Ypo.

    Existe um outro modicador de acesso, o protected, que ca entre o private e o public. Um atributo protected s pode ser acessado (visvel) pela prpria classe e por suas subclasses .

    14 Herana

  • Resumo dos modicadores de Acesso

    15

    Visibilidade public protected private

    Mesma classe Sim Sim Sim

    Classe no mesmo pacote Sim Sim No

    Subclasse do mesmo pacote Sim Sim No

    Subclasse fora do mesmo pacote Sim Sim (Hr) No

    Qualquer classe que no seja subclasse e esteja fora do pacote

    Sim No No

    Herana

  • 16 Herana

    Como implementar nosso primeiro exemplo?

  • Antes

    17 Herana

  • Depois

    18 Herana

  • Exerccio 1

    A) Vamos criar uma classe Conta, que possua um saldo, os mtodos para pegar saldo, creditar e debitar

    B) Adicione um mtodo na classe Conta, que atualiza essa conta de acordo com uma taxa percentual fornecida

    C) Crie duas subclasses da classe Conta: ContaCorrente e ContaPoupanca. Ambas tero o mtodo atualiza sobrescrito: A ContaCorrente deve atualizar-se com o dobro da taxa e a ContaPoupanca deve atualizar-se com o triplo da taxa

    D) Alm disso, a ContaCorrente deve reescrever o mtodo creditar, a m de reYrar uma taxa bancria de dez centavos de cada depsito

    19 Herana