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
rodados
.
- 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"}")
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}")
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 atributokm_rodadose um métodocalcular_seguro()que retorna o valor dos quilômetros rodados multiplicados por 0,05.VeiculoCarga, que adiciona os atributoscapacidade_maximaecarga_atuale um métodoverificar_carga()que devolveTruesecarga_atualfor menor ou igual acapacidade_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'}")