🚗 Veículos Orientado a Objetos (Python OOP)
Vamos aplicar os pilares da Orientação a Objetos.
🧱 1. Classe Base: o Molde dos Veículos
from abc import ABC, abstractmethod class Veiculo(ABC): def __init__(self, cor, marca, modelo): self.cor = cor self.marca = marca self.modelo = modelo @abstractmethod def dirigir(self): pass
⚡ 2. Veículos Específicos: Gasolina e Elétrico
class CarroGasolina(Veiculo): def dirigir(self): print(f"🚘 {self.marca} {self.modelo} está rugindo com gasolina!") class CarroEletrico(Veiculo): def dirigir(self): print(f"🔋 {self.marca} {self.modelo} está deslizando com energia elétrica!")
⚙️ 3. Componentes Plugáveis com Injeção de Dependência
class Bateria: def __init__(self, capacidade): self.capacidade = capacidade def obter_capacidade(self): return f"{self.capacidade} kWh" class Tanque: def __init__(self, litros): self.litros = litros def obter_capacidade(self): return f"{self.litros} litros"
class CarroEletrico(Veiculo): def __init__(self, cor, marca, modelo, bateria: Bateria): super().__init__(cor, marca, modelo) self.bateria = bateria def dirigir(self): print(f"🔋 Dirigindo {self.marca} com bateria de {self.bateria.obter_capacidade()}")
🎮 4. Interface de Ação: Dirigível e Acelerável
class Aceleravel(ABC): @abstractmethod def acelerar(self): pass class CarroCorrida(CarroGasolina, Aceleravel): def acelerar(self): print("🏎️ Acelerando a toda velocidade!")
🧩 5. Mixins: Funcionalidades Extras
class Imprimivel: def imprimir_info(self): print(f"🔍 STATUS: {self.__dict__}") class CarroVIP(CarroEletrico, Imprimivel): pass
🕹️ 6. Simulando uma Corrida
def simular_veiculo(veiculo): print("==== Simulação Iniciada ====") veiculo.dirigir() if isinstance(veiculo, Aceleravel): veiculo.acelerar() if hasattr(veiculo, "imprimir_info"): veiculo.imprimir_info()
🧪 7. Testando no Terminal
bateria = Bateria(100) tanque = Tanque(45) tesla = CarroVIP("Azul", "Tesla", "Model 3", bateria) mustang = CarroCorrida("Vermelho", "Ford", "Mustang") simular_veiculo(tesla) print() simular_veiculo(mustang)
✅ Conclusão
Conceito | Carro Obj | O que representa |
---|---|---|
class |
Moldes dos veículos | Estrutura base |
Herança | CarroGasolina herda de Veiculo | Reuso de comportamento |
Interface | Aceleravel , Dirigivel |
Ações que certos carros fazem |
Injc dep | Plug baterias e tanques | Flexibilidade e testes |
Mixin | Imprimivel |
Funcionalidade plugável |