Exercícios da Semana 03: POO

Herança e Sobrescrita em Ação.

O Que Você Vai Aprender

Nesta seção de exercícios, você colocará em prática os conceitos de herança e sobrescrita de métodos para construir uma hierarquia de classes de veículos, demonstrando polimorfismo.

🌳 Criar Hierarquia de Classes

Desenvolver uma superclasse e suas subclasses.

🔄 Sobrescrever Métodos

Implementar um método com comportamento específico em subclasses.

Desafios Propostos

Siga os passos abaixo para construir a hierarquia de classes `Veiculo`, `Carro` e `Moto`.

  • 1. Crie uma classe `Veiculo`

    Com atributos: `marca` e `modelo`.

    class Veiculo:
        def __init__(self, marca, modelo):
            self.marca = marca
            self.modelo = modelo
        
        def exibir_dados(self):
            return f"Veículo: {self.marca} {self.modelo}"
    
  • 2. Crie as subclasses `Carro` e `Moto`

    Ambas devem herdar de `Veiculo`.

    class Carro(Veiculo):
        # ...
    
    class Moto(Veiculo):
        # ...
    
  • 3. Adicione atributos extras às subclasses

    • Classe `Carro`: atributo extra `portas`.
    • Classe `Moto`: atributo extra `cilindradas`.
    class Carro(Veiculo):
        def __init__(self, marca, modelo, portas):
            super().__init__(marca, modelo)
            self.portas = portas
    
    class Moto(Veiculo):
        def __init__(self, marca, modelo, cilindradas):
            super().__init__(marca, modelo)
            self.cilindradas = cilindradas
    
  • 4. Sobrescreva `exibir_dados()`

    Crie o método `exibir_dados()` na classe `Veiculo` e sobrescreva-o nas subclasses (`Carro` e `Moto`) para exibir também seus atributos específicos.

    class Veiculo:
        def __init__(self, marca, modelo):
            self.marca = marca
            self.modelo = modelo
        
        def exibir_dados(self):
            return f"Veículo: {self.marca} {self.modelo}"
    
    class Carro(Veiculo):
        def __init__(self, marca, modelo, portas):
            super().__init__(marca, modelo)
            self.portas = portas
    
        def exibir_dados(self): # Sobrescrita
            base_dados = super().exibir_dados()
            return f"{base_dados}, Portas: {self.portas}"
    
    class Moto(Veiculo):
        def __init__(self, marca, modelo, cilindradas):
            super().__init__(marca, modelo)
            self.cilindradas = cilindradas
    
        def exibir_dados(self): # Sobrescrita
            base_dados = super().exibir_dados()
            return f"{base_dados}, Cilindradas: {self.cilindradas}cc"
    

Simulador: Teste Sua Hierarquia de Veículos

Crie diferentes tipos de veículos e chame seus métodos `exibir_dados()` para ver a sobrescrita em ação.

Classes `Veiculo`, `Carro` e `Moto` (simuladas em JavaScript)

As classes foram implementadas em JavaScript para simular o comportamento de herança e sobrescrita em Python, permitindo interações em tempo real.

Criar Veículos

Dados dos Veículos Criados

Nenhum veículo criado ainda.