0
HERANÇA
Linguagem de Programação II
Ciência da Computação
HERANÇA
• É uma forma de reutilização de software na qual
uma nova classe é criada, absorvendo membros de
uma classe exist...
HERANÇA
• SUPERCLASSE:
• Quando uma nova classe herda MEMBROS de
uma classe existente

• SUBCLASSE:
• Nova classe criada c...
HERANÇA
• SUBCLASSE:
• Tem seus próprios métodos e classes
• É mais específica que a superclasse
• Representa um grupo mai...
HERANÇA
• SUPERCLASSE DIRETA:
• É a superclasse a partir da qual a subclasse herda
explicitamente
• SUPERCLASSE INDIRETA:
...
HERANÇA
• HIERARQUIA DE CLASSE:
• Inicia com a classe OBJECT (pacote java.lang)
• TODA classe JAVA ESTENDE (“herda de”) di...
HERANÇA
• HERANÇA MULTIPLA:
• Ocorre quando uma classe é derivada de mais de
uma superclasse direta

• RELACIONAMENTO É UM...
HERANÇA
• RELACIONAMENTO TEM UM:
• Representa a composição
• Um objeto contém uma ou mais referências de
objeto como membr...
SUPERCLASSES E SUBCLASSES
• Um objeto de uma classe frequentemente também
É UM objeto de outra classe
• EXEMPLO:
• Um reta...
SUPERCLASSES E SUBCLASSES
• Um retangulo HERDA DE um quadrilátero
• Quadrilatero é uma SUPERCLASSE
• Retangulo é uma SUBCL...
SUPERCLASSES E SUBCLASSES
• Superclasses são mais gerais
• Subclasses são mais específicas
• Cada objeto de SUBCLASSE é um...
SUPERCLASSES E SUBCLASSES
• Relacionamentos de herança formam estruturas
hierarquicas do tipo ARVORE
• Há situações em que...
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• A leitura do diagrama é feita da seguinte forma: de
baixo para cima, seguindo as se...
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• Um Funcionário é membro de Empregado
• Um Empregado é membro da comunidade
• Um Alu...
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• Membro da Comunidade é a superclasse indireta
de todas as outras subclasses no diag...
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
SUPERCLASSES E SUBCLASSES
• Nem todo relacionamento de classe é um
relacionamento de herança
• Relacionamento TEM UM:
• As...
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• Classe empregado
• Classe dataDeNascimento
• Classe numeroDeTelefone
• Um empregado...
SUPERCLASSES E SUBCLASSES
• Importante:
• Objetos de superclasse não podem ser tratados
como objetos de suas subclasses

•...
SUPERCLASSES E SUBCLASSES
• Desvantagem da herança:
• Uma subclassepode herdar métodos que ela não
necessita ou que não de...
MEMBROS PROTECTED
• Membros public:
• São acessíveis onde quer que o programa tenha
uma referencia a um objeto dessa class...
MEMBROS PROTECTED
• MEMBROS PROTECTED:
• Nível intermediário de acesso
• Membros protected de uma SUPERCLASSE
podem ser ac...
MEMBROS PROTECTED
• Membros public e protected da SUPERCLASSE
tornam-se membros public e protected da
subclasse
• PALAVRA ...
RELACIONAMENTOS
• PALAVRA CHAVE EXTENDS:
• Usada para indicar que a classe herda de outra
classe:

• public class ClasseEx...
CLASSE OBJECT
• Herança utilizada para criar classes de classes
existentes
• Cada classe Java herda uma classe existente –...
CLASSE OBJECT
• Toda e qualquer classe em Java é uma subclasse da
classe OBJECT
• É a superclasse de todas as classes
• ht...
Construtores em subclasses
• Instanciar um objeto de SUBCLASSE inicia uma
cadeia de chamadas de construtor;
• O construtor...
Construtores em subclasses
• Se a SUPERCLASSE é derivada de outra classe, o
construtor da SUPERCLASSE invoca o construtor ...
Construtores em subclasses
• O construtor de cada SUPERCLASSE manipula as
variáveis de instância de SUPERCLASSE que o
obje...
Construtores em subclasses
• O corpo do construtor da SUPERCLASSE executa
para inicializar as variáveis de instância da
SU...
Patentes de código
• A herança permite que você patenteie seu código e
os venda com as licenças apropriadas ou apenas
disp...
Patentes de código
Permite portabilidade pois executa em qualquer plataforma computacional
Patentes de código
• A herança permite que o programador NÃO altere
o código-fonte da SUPERCLASSE, mas permite que
ele o u...
Patentes de código
• Um programador Java não precisa entender — e
nem tomar conhecimento — dos bytecodes Java
para ser pro...
Patentes de código
• Em seus projeto crie menos classes que fornecem
funcionalidades mais substanciais, isso evitará
probl...
Patentes de código
• Se SUBCLASSES tem mais funcionalidades do que
precisam de fato, a memória e os recursos
computacionai...
EXEMPLO 1
package br.com.exemploheranca;
public class pessoa {
String nome, idade, endereco = "R: Java ,501";

public void...
EXEMPLO 1
package br.com.exemploheranca;
public class fornecedor extends pessoa{
String cnpj;

public void ImprimeNome() {...
EXEMPLO 1
package br.com.exemploheranca;
public class cliente extends pessoa {
String cpf;

public void ImprimeNome() {
Sy...
EXEMPLO 1
package br.com.exemploheranca;

public class principal {
public static void main(String[] args) {
cliente c = ne...
EXEMPLO 2
EXERCÍCIOS
• Desenhe uma hierarquia de herança para
alunos universitários. Utilize ALUNO como
superclasse da hierarquia, e...
EXERCÍCIOS
• Desenhe
uma
hierarquia
de
herança
para
QUADRILATERIO, TRAPEZIO, PARALELOGRAMO, RETANGULO e
QUADRADO. Utilize ...
Upcoming SlideShare
Loading in...5
×

Herança

106

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
106
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Herança"

  1. 1. HERANÇA Linguagem de Programação II Ciência da Computação
  2. 2. HERANÇA • É uma forma de reutilização de software na qual uma nova classe é criada, absorvendo membros de uma classe existente e aprimorada com capacidades novas ou modificadas. • Permite enconomia de tempo no desenvolvimento de programas, reutilizando software de alta qualidade, testado e depurado
  3. 3. HERANÇA • SUPERCLASSE: • Quando uma nova classe herda MEMBROS de uma classe existente • SUBCLASSE: • Nova classe criada com herança de MEMBROS • Uma subclasse pode se tornar uma superclasse para outras subclasses
  4. 4. HERANÇA • SUBCLASSE: • Tem seus próprios métodos e classes • É mais específica que a superclasse • Representa um grupo mais ESPECIALIZADO de objetos • Possui comportamentos da SUPERCLASSE mais os adicionais específicos a ela
  5. 5. HERANÇA • SUPERCLASSE DIRETA: • É a superclasse a partir da qual a subclasse herda explicitamente • SUPERCLASSE INDIRETA: • Qualquer superclasse acima da classe direta na HIERARQUIA DE CLASSE • HIERARQUIA DE CLASSE: • Define os relacionamentos de herança entre as classes
  6. 6. HERANÇA • HIERARQUIA DE CLASSE: • Inicia com a classe OBJECT (pacote java.lang) • TODA classe JAVA ESTENDE (“herda de”) direta ou indiretamente a classe OBJECT! • HIERARQUIA SIMPLES: • Uma classe é derivada de uma superclasse direta • JAVA NÃO SUPORTA HERANÇA MULTIPLA
  7. 7. HERANÇA • HERANÇA MULTIPLA: • Ocorre quando uma classe é derivada de mais de uma superclasse direta • RELACIONAMENTO É UM: • Representa a herança • Um objeto de uma subclasse também pode ser tratrado como um objeto da sua superclasse • Exemplo: um carro É UM veículo
  8. 8. HERANÇA • RELACIONAMENTO TEM UM: • Representa a composição • Um objeto contém uma ou mais referências de objeto como membros • Exemplo: • um carro TEM UMA direção • um objeto carro TEM UMA referência a um objeto direção
  9. 9. SUPERCLASSES E SUBCLASSES • Um objeto de uma classe frequentemente também É UM objeto de outra classe • EXEMPLO: • Um retangulo É UM quadrilátero • Um quadrado É UM quadrilátero • Um paralelogramo É UM quadrilátero • Um trapezóide É UM quadrilátero
  10. 10. SUPERCLASSES E SUBCLASSES • Um retangulo HERDA DE um quadrilátero • Quadrilatero é uma SUPERCLASSE • Retangulo é uma SUBCLASSE • Um retangulo é um tipo específico de quadrilatero • MAS um quadrilatero NÃO É UM retangulo • Um quadrilatero PODER SER: • Um paralelogramo • Um quadrado • Etc
  11. 11. SUPERCLASSES E SUBCLASSES • Superclasses são mais gerais • Subclasses são mais específicas • Cada objeto de SUBCLASSE é um objeto de sua SUPERCLASSE • Uma SUPERCLASSE pode ter várias SUBLCLASSES • Exemplo: • Uma superclasse VEÍCULO representa todos os veículos • Uma subclasse CARRO representa um subconjunto de veículo menor e mais específico
  12. 12. SUPERCLASSES E SUBCLASSES • Relacionamentos de herança formam estruturas hierarquicas do tipo ARVORE • Há situações em que uma classe pode ser ao mesmo tempo uma subclasse e também uma superclasse • HIERARQUIA DE CLASSE = HIERARQUIA DE HERANÇA
  13. 13. SUPERCLASSES E SUBCLASSES • EXEMPLO:
  14. 14. SUPERCLASSES E SUBCLASSES • EXEMPLO:
  15. 15. SUPERCLASSES E SUBCLASSES • EXEMPLO: • A leitura do diagrama é feita da seguinte forma: de baixo para cima, seguindo as setas: • Um Administrador é um membro do Corpo Docente • Um Professor é um membro do Corpo Docente • Um Corpo Docente é um membro de Empregado
  16. 16. SUPERCLASSES E SUBCLASSES • EXEMPLO: • Um Funcionário é membro de Empregado • Um Empregado é membro da comunidade • Um Aluno é membro da comunidade • Um Graduado é membro da comunidade • Membro da Comunidade é a superclasse direta de Empregado, Aluno e Graduados
  17. 17. SUPERCLASSES E SUBCLASSES • EXEMPLO: • Membro da Comunidade é a superclasse indireta de todas as outras subclasses no diagrama • Um administrador é um membro do corpo docente que é um membro de empregado que é um membro da comunidade
  18. 18. SUPERCLASSES E SUBCLASSES • EXEMPLO:
  19. 19. SUPERCLASSES E SUBCLASSES • Nem todo relacionamento de classe é um relacionamento de herança • Relacionamento TEM UM: • As classes têm membros que são referencias a objetos de outras classes • Criam classes compondo classes existentes
  20. 20. SUPERCLASSES E SUBCLASSES • EXEMPLO: • Classe empregado • Classe dataDeNascimento • Classe numeroDeTelefone • Um empregado é uma dataDeNascimento????? • Um empregado TEM UMA dataDeNascimento! • Um empregado é um numeroDeTelefone? • Um empregado TEM UM numeroDeTelefone!
  21. 21. SUPERCLASSES E SUBCLASSES • Importante: • Objetos de superclasse não podem ser tratados como objetos de suas subclasses • Exemplo: • Todos os carros são veículos, mas nem todos os veículos são carros
  22. 22. SUPERCLASSES E SUBCLASSES • Desvantagem da herança: • Uma subclassepode herdar métodos que ela não necessita ou que não deveria ter • Às vezes a subclasse precisa de uma versão personalizada do método • SOBRESCREVER: • A subclasse pode redefinir o método da superclasse com uma implementação mais adequada para ela (@OVERRIDE)
  23. 23. MEMBROS PROTECTED • Membros public: • São acessíveis onde quer que o programa tenha uma referencia a um objeto dessa classe ou uma de suas subclasses • Membor private: • Só são acessíveis por dentro da própria classe • Membros private de uma superclasse NÃO SÃO HERDADOS pelas suas subclasses
  24. 24. MEMBROS PROTECTED • MEMBROS PROTECTED: • Nível intermediário de acesso • Membros protected de uma SUPERCLASSE podem ser acessados por: • membros dessa SUPERCLASSE • membros de suas SUBCLASSES • membros de OUTRAS classes no mesmo PACOTE
  25. 25. MEMBROS PROTECTED • Membros public e protected da SUPERCLASSE tornam-se membros public e protected da subclasse • PALAVRA CHAVE SUPER: • Quando um método da SUBCLASSE sobrescrever um método da SUPERCLASSE, o método da SUPERCLASSE pode ser acessado a partir da SUBCLASSE usando a palavra chave SUPER antes o nome de método da SUPERCLASSE e um separador de ponto
  26. 26. RELACIONAMENTOS • PALAVRA CHAVE EXTENDS: • Usada para indicar que a classe herda de outra classe: • public class ClasseExemplo extends Object • public class Classe2 extends Classe1 • A classe exemplo herda da classe objeto • A classe2 herda da classe 1
  27. 27. CLASSE OBJECT • Herança utilizada para criar classes de classes existentes • Cada classe Java herda uma classe existente – exceto a classe OBJECT (que não contem nenhum campo) • Cada classe Java herda direta ou indiretamente métodos de OBJECT. • Se uma classe Java não especificar que ela herda outra classe, a nova classe herda OBJECT implicitamente
  28. 28. CLASSE OBJECT • Toda e qualquer classe em Java é uma subclasse da classe OBJECT • É a superclasse de todas as classes • http://docs.oracle.com/javase/7/docs/api/
  29. 29. Construtores em subclasses • Instanciar um objeto de SUBCLASSE inicia uma cadeia de chamadas de construtor; • O construtor de SUBCLASSE, invoca o construtor de sua SUPERCLASSE direta, antes de realizar suas próprias tarefas • Invocação implícita: chama o construtor padrão ou construtor sem argumentos • Invocação explícita: usa a palavra chave SUPER
  30. 30. Construtores em subclasses • Se a SUPERCLASSE é derivada de outra classe, o construtor da SUPERCLASSE invoca o construtor da próxima classe no topo da hierarquia • O último construtor chamado na cadeia é sempre o construtor da classe OBJECT • O corpo do construtor de SUBCLASSE original termina a execução por último.
  31. 31. Construtores em subclasses • O construtor de cada SUPERCLASSE manipula as variáveis de instância de SUPERCLASSE que o objeto de SUBCLASSE herda • Quando um programa cria um objeto da SUBCLASSE, o construtor da SUBCLASSE imediatamente chama o construtor da SUPERCLASSE
  32. 32. Construtores em subclasses • O corpo do construtor da SUPERCLASSE executa para inicializar as variáveis de instância da SUPERCLASSE que fazem parte do objeto da SUBCLASSE • O corpo do construtor da SUBCLASSE, então, executa para inicializar variáveis de instância somente da SUBCLASSE
  33. 33. Patentes de código • A herança permite que você patenteie seu código e os venda com as licenças apropriadas ou apenas disponibilizando para outros usuários em formato de bytecode • BYTECODE JAVA: é um formato de código intermediário entre o código fonte, o texto que o programador consegue manipular, e o código de máquina, que o computador consegue executar.
  34. 34. Patentes de código Permite portabilidade pois executa em qualquer plataforma computacional
  35. 35. Patentes de código • A herança permite que o programador NÃO altere o código-fonte da SUPERCLASSE, mas permite que ele o utilize em sua classe proprietária • Classes proprietárias: são as classes desenvolvidas por desenvolvedores (por vocês – são classes personalizadas) • Herança preserva a integridade da SUPERCLASSE, portanto a sua SUBCLASSE não afeta o códigofonte da SUPERCLASSE
  36. 36. Patentes de código • Um programador Java não precisa entender — e nem tomar conhecimento — dos bytecodes Java para ser proficiente na linguagem, da mesma forma que um programador de qualquer linguagem de alto nível compilada para linguagem de máquina não precisa conhecer a linguagem de montagem do computador hospedeiro para escrever bons programas naquela linguagem.
  37. 37. Patentes de código • Em seus projeto crie menos classes que fornecem funcionalidades mais substanciais, isso evitará problemas na utilização das classes • Muitas classes cria problema de gerenciamento e pode indicar mal uso de reutilização de software
  38. 38. Patentes de código • Se SUBCLASSES tem mais funcionalidades do que precisam de fato, a memória e os recursos computacionais podem ser desperdiçados • Portanto, use herança com sabedoria! Herde apenas das SUPERCLASSES que fornecem as funcionalidades que de fato você precisa
  39. 39. EXEMPLO 1 package br.com.exemploheranca; public class pessoa { String nome, idade, endereco = "R: Java ,501"; public void ImprimeNome() { System.out.println("o nome é:"); System.out.println("Endereco: " + endereco); } }
  40. 40. EXEMPLO 1 package br.com.exemploheranca; public class fornecedor extends pessoa{ String cnpj; public void ImprimeNome() { System.out.println("O nome do fornecedor é : " + nome + "n Cnpj: " + cnpj); } }
  41. 41. EXEMPLO 1 package br.com.exemploheranca; public class cliente extends pessoa { String cpf; public void ImprimeNome() { System.out.println("Nome do cliente é : " + nome + "n Nº CPF: " + cpf + "n Seu endereco :" + endereco); } }
  42. 42. EXEMPLO 1 package br.com.exemploheranca; public class principal { public static void main(String[] args) { cliente c = new cliente(); c.nome = "Luiz"; c.cpf = "073.777.796-21"; c.ImprimeNome(); fornecedor f = new fornecedor(); f.nome = "Deltatronic"; f.cnpj = "073.856.9856.52-10"; f.ImprimeNome(); } }
  43. 43. EXEMPLO 2
  44. 44. EXERCÍCIOS • Desenhe uma hierarquia de herança para alunos universitários. Utilize ALUNO como superclasse da hierarquia, então herde ALUNO com as classes ALUNODEGRADUAÇÃO e ALUNOGRADUADO. Continue a estender a hierarquia o mais profundo que conseguir (vários níveis). Depois de desenhar a hierarquia, discuta os relacionamentos entre as classes. Em seguida, crie as classes e crie um programa Java que demonstre sua utilização.
  45. 45. EXERCÍCIOS • Desenhe uma hierarquia de herança para QUADRILATERIO, TRAPEZIO, PARALELOGRAMO, RETANGULO e QUADRADO. Utilize QUADRILATERO como a superclasse da hierarquia. Faça a hierarquia o mais profundo que conseguir (com muitos níveis). Especifique as variáveis de instância e os métodos para cada classe. As variáveis de instância private de QUADRILATERO devem ser os pares x e y de coordenadas para os quatro ontos que delimitam o QUADRILATERO. Escreva um programa em Java que instancia os objetos de suas classes e gera saída da área de cada objeto – menos o QUADRILATERO.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×