Questão 5 - Implementação Prática (2,0 pontos)

Com base na classe Veiculo abaixo, crie duas classes derivadas: VeiculoPasseio e VeiculoCarga, cada uma com atributos e métodos específicos.

Classe Base:

class Veiculo:
    def __init__(self, marca, modelo, ano):
        self.marca = marca
        self.modelo = modelo
        self.ano = ano
    def exibir_dados(self):
        print(f"Marca: {self.marca}, Modelo: {self.modelo}, Ano: {self.ano}")

Requisitos:

  • VeiculoPasseio deve ter um atributo adicional km_rodados e um método calcular_seguro() que retorna \mathrm{km} \_rodados * 0.05.
  • VeiculoCarga deve ter atributos capacidade_maxima e carga_atual, além de um método verificar_carga() que retorna True se carga_atual <= capacidade_maxima.

Exemplo de uso esperado:

passeio = VeiculoPasseio("Toyota", "Corolla", 2022, 15000)
passeio.exibir_dados()
print(f"Valor do seguro: R${passeio.calcular_seguro()}")
carga = VeiculoCarga("Volvo", "FH16", 2020, 10000, 8000)
carga.exibir_dados()
print(f"Carga dentro do limite? {"Sim" if carga.verificar_carga() else "Não"}")

Passo 1

O enunciado nos dá a classe base Veiculo com atributos marca, modelo e ano, além do método exibir_dados(). Precisamos aplicar herança para criar duas subclasses:
  • VeiculoPasseio, que adiciona o atributo km_rodados e um método calcular_seguro() que retorna o valor dos quilômetros rodados multiplicados por 0,05.
  • VeiculoCarga, que adiciona os atributos capacidade_maxima e carga_atual e um método verificar_carga() que devolve True se carga_atual for menor ou igual a capacidade_maxima.

Passo 2

Implementamos VeiculoPasseio herdando de Veiculo. No construtor chamamos super().__init__ para inicializar marca, modelo e ano, depois definimos self.km_rodados. O método calcular_seguro() faz a conta dos quilômetros rodados vezes 0,05.

Passo 3

Implementamos VeiculoCarga herdando de Veiculo. No construtor chamamos super().__init__ para os atributos básicos e depois definimos self.capacidade_maxima e self.carga_atual. O método verificar_carga() compara carga_atual com capacidade_maxima e retorna o resultado lógico dessa comparação.

Passo 4

Testamos as duas classes com o exemplo de uso fornecido, criando instâncias, exibindo dados e chamando os métodos específicos para verificação.

Resposta

class Veiculo:
 def __init__(self, marca, modelo, ano):
 self.marca = marca
 self.modelo = modelo
 self.ano = ano

 def \(exibir_dados\)(self):
 print(f"Marca: {self.marca}, Modelo: {self.modelo}, Ano: {self.ano}")

class VeiculoPasseio(Veiculo):
 def __init__(self, marca, modelo, ano, \(km_rodados\)):
 super().__init__(marca, modelo, ano)
 self.\(km_rodados\) = \(km_rodados\)

 def \(calcular_seguro\)(self):
 return self.\(km_rodados\) * 0.05

class VeiculoCarga(Veiculo):
 def __init__(self, marca, modelo, ano, \(capacidade_maxima\), \(carga_atual\)):
 super().__init__(marca, modelo, ano)
 self.\(capacidade_maxima\) = \(capacidade_maxima\)
 self.\(carga_atual\) = \(carga_atual\)

 def \(verificar_carga\)(self):
 return self.\(carga_atual\) <= self.\(capacidade_maxima\)

# Exemplo de uso
passeio = VeiculoPasseio("Toyota", "Corolla", 2022, 15000)
passeio.\(exibir_dados\)()
print(f"Valor do seguro: R${passeio.calcular_seguro()}")

carga = VeiculoCarga("Volvo", "FH16", 2020, 10000, 8000)
carga.\(exibir_dados\)()
print(f"Carga dentro do limite? {'Sim' if carga.verificar_carga() else 'Não'}")

Exercícios relacionados