¿Cómo crear clases y herencia en programación orientada a objetos?
La programación orientada a objetos nos permite modelar situaciones del mundo real a través de clases y objetos. En este ejercicio, aprenderemos a crear una estructura básica de clases que representan diferentes tipos de vehículos, incluyendo autos, bicicletas y camiones. Además, añadiremos clases adicionales para simular un concesionario y sus clientes, aprovechando la herencia para fomentar el reuso y la simplicidad en el código.
¿Cómo definir una clase y aplicar herencia?
Comenzamos con la creación de una clase Vehículo que servirá como superclase para nuestras otras clases. Esta clase define los parámetros fundamentales que comparten en común todos los vehículos.
classVehiculo:def__init__(self, marca, modelo, precio): self.marca = marca
self.modelo = modelo
self.precio = precio
self.disponible =Truedefiniciar(self):pass# Implementación específica en clases hijasdefdetener(self):pass# Implementación específica en clases hijas
Creación de subclases: Bicicleta y Camión
Nuestra clase Vehículo puede ser expandida mediante herencia. A continuación, creamos las clases Bicicleta y Camión que heredan de Vehiculo, adaptando las funciones de la superclase a su uso específico.
classBicicleta(Vehiculo):definiciar(self):print(f"La bicicleta {self.marca} está en marcha")defdetener(self):print(f"La bicicleta {self.marca} se ha detenido")classCamion(Vehiculo):definiciar(self):print(f"El motor del camión {self.marca} está en marcha")defdetener(self):print(f"El motor del camión {self.marca} se ha detenido")
¿Cómo gestionar clientes y concesionarios en un sistema OOP?
Las clases Comprador y Concesionaria permitirán la interacción entre vehículos y clientes dentro del contexto de una tienda.
Implementación de clase Comprador
Esta clase no hereda de ninguna, pero integra la funcionalidad para comprar y consultar vehículos disponibles.
classComprador:def__init__(self, nombre): self.nombre = nombre
self.coleccion_vehiculos =[]defcomprar_vehiculo(self, vehiculo):if vehiculo.disponible: self.coleccion_vehiculos.append(vehiculo) vehiculo.disponible =Falseprint(f"{vehiculo.marca} ha sido añadido a la colección de {self.nombre}")else:print(f"Lo siento, el {vehiculo.marca} no está disponible")
Desarrollo de clase Concesionaria
La Concesionaria manejará el inventario de vehículos y el registro de clientes, permitiendo la adición y la visualización del inventario.
classConcesionaria:def__init__(self): self.inventario =[] self.clientes =[]def añadir_vehiculo(self, vehiculo): self.inventario.append(vehiculo)print(f"{vehiculo.marca} ha sido añadido al inventario")defregistrar_cliente(self, cliente): self.clientes.append(cliente)print(f"{cliente.nombre} ha sido registrado como cliente")defmostrar_vehiculos_disponibles(self):print("Vehículos disponibles en la tienda:")for vehiculo in self.inventario:if vehiculo.disponible:print(f"Marca: {vehiculo.marca}, Precio: {vehiculo.precio}")
Motivación final
Este sistema básico refleja cómo el paradigma orientado a objetos puede aplicarse para representar situaciones y relaciones complejas de manera eficiente. Con este conocimiento de clases y herencia, estás equipado para crear sistemas más detallados y realistas. ¡Sigue explorando y desarrollando tus habilidades en programación!