1
resposta

Exercicios

Estou me sentindo muito burro quando cheguei nesses exercícios do curso 3. Minha lógica está horrível e não to conseguindo acompanhar, agora dificultou bastante. Eu leio e releio diversas vezes a resolução do exercício e não dá pra entender. )))):

1 resposta

Oi, Lucas! Tudo bem?

Não se sinta mal por estar com dificuldades, isso é completamente normal quando estamos aprendendo algo novo, especialmente conceitos mais avançados como herança e polimorfismo em orientação a objetos, no meu primeiro contato com esses conceitos também senti bastante! Vou tentar te ajudar com um exemplo prático para esclarecer melhor esses conceitos.

Vamos pegar um dos exercícios como exemplo, o exercício 2, que envolve a criação de classes Animal, Cachorro e Gato:

Passo a passo:

1 . Crie a classe Animal:

  • Esta será a classe base com um método emitirSom(). Aqui é como se fizéssemos um molde para todos os animais que vamos declarar (instanciar) no futuro, em que o método que declaramos, emitirSom(), nos informa uma ação comum aos animais, ou seja, os animais deverão emitir um som.
public class Animal {
    public void emitirSom() {
        System.out.println("Animal faz um som");
    }
}

2 . Crie a subclasse Cachorro:

  • Esta classe herda de Animal e sobrescreve o método emitirSom(), além disso, adiciona um método específico abanarRabo().
public class Cachorro extends Animal {
    @Override
    public void emitirSom() {
        System.out.println("Cachorro late");
    }

    public void abanarRabo() {
        System.out.println("Cachorro está abanando o rabo");
    }
}

Ou seja, a nossa classe chamada Animal funciona como um molde geral para todos os animais, e tem um método chamado emitirSom().

Quando criamos a classe Cachorro estamos criando uma classe específica para esse tipo de animal. Essa nova classe é como um molde específico baseado no molde geral de Animal. A classe Cachorro vai pegar tudo o que a classe Animal tem e usar, mas também vai mudar o método emitirSom() para fazer um som específico de cachorro, como um latido. Esse processo de mudança de um método é chamado de sobrescrever.

Além disso, a classe Cachorro pode ter coisas que são só de cachorros, como o método abanarRabo(), que descreve uma ação específica de cachorros abanarem o rabo. Então, enquanto todos os animais podem emitir um som, apenas os cachorros têm o método especial para abanar o rabo.

Essa é uma maneira de organizar as coisas, dizendo que todos os cachorros são animais, mas também têm características únicas.

3 . Crie a subclasse Gato:

  • Esta classe também herda de Animal e sobrescreve o método emitirSom(), além de adicionar um método específico arranharMoveis().
public class Gato extends Animal {
    @Override
    public void emitirSom() {
        System.out.println("Gato mia");
    }

    public void arranharMoveis() {
        System.out.println("Gato está arranhando os móveis");
    }
}

4 . Teste as classes:

  • Crie uma classe principal para testar as funcionalidades das classes Cachorro e Gato.
public class TesteAnimais {
    public static void main(String[] args) {
        Animal meuCachorro = new Cachorro();
        Animal meuGato = new Gato();

        meuCachorro.emitirSom(); // Deve imprimir "Cachorro late"
        ((Cachorro) meuCachorro).abanarRabo(); // Deve imprimir "Cachorro está abanando o rabo"

        meuGato.emitirSom(); // Deve imprimir "Gato mia"
        ((Gato) meuGato).arranharMoveis(); // Deve imprimir "Gato está arranhando os móveis"
    }
}

Explicação:

  • Herança: Cachorro e Gato herdam de Animal, o que significa que elas têm todos os métodos e atributos de Animal, além dos seus próprios métodos específicos.
  • Sobrescrita de Métodos: Usamos @Override para indicar que emitirSom() nas subclasses Cachorro e Gato está substituindo o método da classe Animal.
  • Polimorfismo: No método main, usamos o polimorfismo ao declarar meuCachorro e meuGato como Animal, mas instanciá-los como Cachorro e Gato. Isso permite que a mesma referência (Animal) possa se comportar de diferentes maneiras (como Cachorro ou Gato).

Espero ter ajudado! E lembre-se que caso surja qualquer dúvida, pode comentar aqui no fórum, nossa comunidade está aqui para ajudar, eu mesma estou disponível e ficarei super feliz em poder contribuir com o seu aprendizado, o processo é dificil mesmo mas com dedicação e apoio a gente consegue!

Um forte abraço e bons estudos!