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_rodados
e um métodocalcular_seguro()
que retorna o valor dos quilômetros rodados multiplicados por 0,05.VeiculoCarga
, que adiciona os atributoscapacidade_maxima
ecarga_atual
e um métodoverificar_carga()
que devolveTrue
secarga_atual
for 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'}")