• Subclasses em Simula-67 (a primeira linguagem OO da história)

  • Herança - funcionamento do sistema de execução ao receber uma mensagem



  • Herança: Relação é-um

  • Hierarquia de Classes

  • Bom exemplos de Herança

    • Pessoas numa Universidade

    • Animal

    • Stream em Java 

  • Exemplos de mau-uso de Herança

    • Carro e suas partes


  • Implementação de Herança em Java: usar palavra reservada extends


Construtores e herança

class Animal {
   int peso;
   Animal () {
    System.out.println("Eu respiro e me mexo.");
   }
   Animal (int peso) {
            this.peso = peso;
    System.out.println("Eu respiro e me mexo e peso" + peso + " gramas");
   }
}


class AnimalVertebrado extends Animal {
   AnimalVertebrado (){
    System.out.println("Eu tenho coluna vertebral.");
   }
class Cachorro extends AnimalVertebrado {
   Cachorro (){
    System.out.println("Eu tenho coluna vertebral e lato.");
   }
   Cachorro (int peso) {
            super(peso);
            System.out.println("Eu tenho coluna vertebral e lato.");
   }


   public static void main(String args[]) {
             Animal totó = new Cachorro ();
             Cachorro rex = new Cachorro (12000);
   }
}

O construtor da classe filha chama o construtor padrão da classe mãe.

Se quisermos chamar um outro construtor, devemos colocar explicitamente

super (parâmetros) no início do construtor da classe filha

Herança e sobreposição de métodos

class Veículo {
   void movimente () {
    System.out.println ("Eu me movimento por aí.");
   }
}
class Carro extends Veículo {
   void movimente () {
    super.movimente (); // opcional
    System.out.println("Eu gasto combustível, gero trânsito e poluo o ar.");
   }
  class Ferrari extends Carro {
   void movimente () {
    super.movimente (); // opcional
    System.out.println("Sou vermelha, super-da-hora mas faço um barulhão.");
   }
  class Bicicleta extends Veículo {
   void movimente () {
    super.movimente (); // opcional
    System.out.println("Faço bem para a saúde física e mental e não poluo.");
   }



Exercício: Biblioteca de músicas (usando arrays).

Um aficcionado por música de 50 anos contratou você para organizar sua biblioteca de músicas. Ele possui músicas armazenadas em arquivos mp3 em seu computador, em CDs e, também, alguns LPs de vinil. Ele quer ser capaz de armazenar todas as músicas em um único Banco de Dados e poder fazer buscas por título da música, compositor, intérprete, período (ano de início, ano de fim). Ele quer também ser capaz de descobrir quais arquivos MP3 estão ocupando muito espaço em seu disco. Em qualquer um desses casos, deve ser fácil imprimir uma lista de músicas contendo uma música por linha. 


Implemente um conjunto de classes em Java para modelar esse banco de dados. 


  • Um arquivo MP3 possui título da música, nome do álbum, compositor, intérprete, ano, tamanho em bytes.

  • Uma música num LP possui título, nome do álbum, compositor, intérprete, ano e velocidade (33, 45 ou 78 rotações por minuto).

  • Uma música em CD possui título, nome do álbum, compositor, intérprete e ano.


Escreva testes em JUnit para testar a busca por título, compositor e intérprete.


Escreva um programa main() que crie uma biblioteca com 10 músicas em diferentes formatos e que depois exercite uma busca por músicas dos anos 90, imprimindo a lista. A impressão deve mostrar as informações armazenadas em todos os atributos dos objetos.


Lembre-se de evitar duplicação de código.


Parte 2: baixe um software livre (open source) para desenhar diagramas UML e desenhe o diagrama UML da sua solução.



Lição de casa: Leitura https://www.javatpoint.com/uml-class-diagram





Última atualização: quinta-feira, 12 mar. 2020, 11:12