2
respostas

[Dúvida] Hora da prática - Minha resolução

veiculo.py

from abc import ABC, abstractmethod

class Veiculo(ABC):
    def __init__(self, marca, modelo):
        self._marca = marca
        self._modelo = modelo
        self._ligado = True
        
    @abstractmethod
    def ligar(self):
        pass

carro.py

Gostaria de saber se faz sentido a "def ligar(self)", da forma a seguir:

from Exer_aula2.veiculo import Veiculo

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

    def ligar(self):
        return '☑' if self._ligado == True else '☐'
            
    def __str__(self):
        return f"{self._marca.ljust(15)} | {self._modelo.ljust(15)} | {self._cor.ljust(15)} | {self.ligar()}"

main.py

from Exer_aula2.carro import Carro

carro1 = Carro('Chevrolet', 'Camaro', 'Preto')
carro2 = Carro('BMW', "Mini Cooper", 'Vermelho')
carro3 = Carro('Toyota', 'Corolla Cross', 'Azul')


def main():
    print(f"\n{'Marca'.ljust(15)} | {'Modelo'.ljust(15)} | {'Cor'.ljust(15)} | {'Ligado'}")
    print(f"{carro1}")
    print(f"{carro2}")
    print(f"{carro3}")

if __name__ == '__main__':
    main()
2 respostas

Oi Patricia! Tudo bem?

Seu código está bem estruturado e a lógica está correta.

A implementação do método ligar na classe Carro faz sentido, mas há um pequeno detalhe que pode ser melhorado para refletir melhor a funcionalidade esperada. Atualmente, o atributo _ligado é inicializado como True no construtor da classe Veiculo, o que significa que todos os veículos começarão ligados.

Talvez seja interessante inicializá-lo como False e adicionar um método para ligar e desligar o veículo. Vou sugerir algumas modificações:

veiculo.py

from abc import ABC, abstractmethod

class Veiculo(ABC):
    def __init__(self, marca, modelo):
        self._marca = marca
        self._modelo = modelo
        self._ligado = False  # Inicializa como desligado
        
    @abstractmethod
    def ligar(self):
        pass

    def ligar_veiculo(self):
        self._ligado = True

    def desligar_veiculo(self):
        self._ligado = False

carro.py

from Exer_aula2.veiculo import Veiculo

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

    def ligar(self):
        return '☑' if self._ligado else '☐'
            
    def __str__(self):
        return f"{self._marca.ljust(15)} | {self._modelo.ljust(15)} | {self._cor.ljust(15)} | {self.ligar()}"

main.py

from Exer_aula2.carro import Carro

carro1 = Carro('Chevrolet', 'Camaro', 'Preto')
carro2 = Carro('BMW', "Mini Cooper", 'Vermelho')
carro3 = Carro('Toyota', 'Corolla Cross', 'Azul')

# Ligando os carros
carro1.ligar_veiculo()
carro2.ligar_veiculo()

def main():
    print(f"\n{'Marca'.ljust(15)} | {'Modelo'.ljust(15)} | {'Cor'.ljust(15)} | {'Ligado'}")
    print(f"{carro1}")
    print(f"{carro2}")
    print(f"{carro3}")

if __name__ == '__main__':
    main()

Com essas mudanças, agora você tem métodos para ligar e desligar o veículo, e o estado inicial é "desligado". No main.py, você pode ligar alguns veículos para testar a funcionalidade.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Oi, Armando... obrigada pela ajuda!!!