Skip to content

Latest commit

 

History

History
75 lines (57 loc) · 2.12 KB

heranca.org

File metadata and controls

75 lines (57 loc) · 2.12 KB

Herança

1 Herança

Uma classe herda comportamento e atributos de outra

  • Permite refinamentos
  • Utilizada para organizar o código

Gera uma hierarquia de tipos

  • Refletem relacionamentos no espaço de problemas
  • \pause Nova terminologia para lidar com tipos
    • classe derivada ou subclasse
    • classe pai ou superclasse
    • Métodos (funções) e mensagens (chamadas de métodos)

\pause Diferenças entre subclasse e superclasse

  • Superclasse pode definir atributos privados
  • \pause Subclasse pode adicionar novos atributos/variáveis
  • \pause Subclasse pode modificar o comportamento da classe pai
    • Sobrescrita de método

Exemplo

  • Veiculo (cor, ano) ← Caminhao (rodas, capacidade)

2 Tipos de métodos e atributos

Métodos e atributos de instância

  • Métodos são compartilhados entre os objetos da classe
  • Atributos diferenciam dois objetos da mesma classe

Métodos e atributos de classe

  • Definem comport. da classe (métodos globais da classe)
  • Atributos pertencem à classe (só existe um)

3 Herança simples versus múltipla

Simples

  • Cada classe herda de uma única classe
  • Gera uma árvore de derivação

Múltipla

  • Uma classe pode herdar de mais de uma superclasse
  • Grafo de derivação

Problemas na implementação de herança múltipla

  • Herdar dois métodos com mesmo nome
  • \pause Herança repetida (problema do diamante)
    • Herança replicada (várias cópias) → C++
    • \pause Herança compartilhada (uma cópia) → Eiffel
  • \pause Alternativa: interfaces (Java, C#, Ada), protocolos (ObjC)
    • Uma das heranças apenas contém métodos