• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Herança
 

Herança

on

  • 279 views

 

Statistics

Views

Total Views
279
Views on SlideShare
278
Embed Views
1

Actions

Likes
0
Downloads
3
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Herança Herança Presentation Transcript

    • 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 existente e aprimorada com capacidades novas ou modificadas. • Permite enconomia de tempo no desenvolvimento de programas, reutilizando software de alta qualidade, testado e depurado
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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 setas: • Um Administrador é um membro do Corpo Docente • Um Professor é um membro do Corpo Docente • Um Corpo Docente é um membro de Empregado
    • 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
    • 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
    • SUPERCLASSES E SUBCLASSES • EXEMPLO:
    • 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
    • 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!
    • 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
    • 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)
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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/
    • 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
    • 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.
    • 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
    • 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
    • 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.
    • 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 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
    • 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.
    • 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
    • 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
    • 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); } }
    • 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); } }
    • 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); } }
    • 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(); } }
    • EXEMPLO 2
    • 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.
    • 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.