Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Praticando sobrepor exercícios

Adaptando ao exercício anterior, faz sentido? Projeto Exercício-Veículos

main.py

import os
os.system('cls')

from carro import Carro
from moto import Moto

carro = Carro('Wolks', 'Gol', 'Preto', 2)
moto = Moto('Honda', 'CG', 'Cinza', 'casual')

print(carro)
print(moto)

veiculo.py

from abc import ABC, abstractmethod

class Veiculo:
    def __init__(self, marca, modelo, cor):
        self._marca = marca
        self._modelo = modelo    
        self._cor = cor    
        self._ligado = False
    
    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self._marca} {self._modelo} - Cor: {self._cor} - Status: {status}"
    
    @abstractmethod
    def ligar(self):
        pass

carro.py

from veiculo import Veiculo

class Carro(Veiculo):
    def __init__(self, marca, modelo, cor, portas):
        super().__init__(marca, modelo, cor)
        self._portas = portas

    def ligar(self):
        print(f"O carro {self._modelo} está ligado.")

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self._marca} {self._modelo} - Cor: {self._cor} - Portas: {self._portas} - Status: {status}"

moto.py

from veiculo import Veiculo

class Moto(Veiculo):
    def __init__(self, marca, modelo, cor, tipo):
        super().__init__(marca, modelo, cor)
        self._tipo = tipo

    def __str__(self):
        status = "ligado" if self._ligado else "desligado"
        return f"{self._marca} {self._modelo} - Cor: {self._cor} - Tipo: {self._tipo} - Status: {status}"
2 respostas
solução!

Olá Cleber! Tudo bem?

Seu projeto está super bem estruturado e você está no caminho certo da atividade. Vou comentar alguns pontos que percei que podem ajudar a melhorar ainda mais o seu código:

  1. Método ligar na classe Moto: Vi que a classe Moto não implementa o método ligar, que é abstrato na classe Veiculo. Como Veiculo é uma classe abstrata, todas as subclasses precisam implementar os métodos abstratos. Então, seria interessante adicionar o método ligar na classe Moto também. Por exemplo:

    def ligar(self):
        print("A moto {self._modelo} está ligada.")
    
  2. Uso do método ligar: No seu main.py, você poderia chamar o método ligar para cada veículo que você instanciou, para ver o método em ação. Algo parecido com:

    carro.ligar()
    moto.ligar()
    
  3. Status do veículo: Atualmente, o status "ligado" ou "desligado" é sempre "desligado" porque a variável _ligado nunca é alterada. Você poderia adicionar lógica no método ligar para mudar o status do veículo. Por exemplo, dentro do método ligar:

    self._ligado = True
    
  4. Instanciação de mais objetos: A atividade sugere instanciar três objetos da classe Carro. No seu main.py, você poderia adicionar mais um objeto Carro para seguir essa sugestão.

Esses foram os pontos, mas quero reforçar que você fez um ótimo trabalho! Recomendo sempre dar uma olhada na "Opinião do Instrutor" na atividade para comparar e ver maneiras diferentes de criar soluções de código. Você está de parabéns pela dedicação em realizar a atividade e em buscar melhorias. Continue assim!

Em caso de dúvidas, conte com o apoio do fórum :)

Um abraço e bons estudos!

Obrigado Rafaela,

Adicionei, juntamente com seus comentários no código para lembrar.