Desarrollar un programa en Python que gestione distintos tipos de vehículos (autos, motos y camiones) aplicando los principios de clases, herencia y encapsulamiento Crear la clase Vehículo con los siguientes atributos: Marca Modelo Año Precio Proponga otro atributo Crear las clases Auto, Moto y Camión con atributos de la clase vehículo y los atributos adicionales siguientes: Auto: número de puertas y proponga otro atributo Moto: tipo de moto (deportiva, urbana, etc.) y Proponga otro atributo Camión: capacidad de carga y Proponga otro atributo En cada clase, definir un método mostrar_info() que imprima los atributos de cada clase en consola. nota: no se debe usar el @property
A continuación, te presento un ejemplo de cómo podrías implementar el programa en Python utilizando las clases, herencia y encapsulamiento que solicitaste: ```python class Vehiculo: def __init__(self, marca, modelo, año, precio, color): self.__marca = marca self.__modelo = modelo self.__año = año self.__precio = precio self.__color = color def mostrar_info(self): print(f"Marca: {self.__marca}") print(f"Modelo: {self.__modelo}") print(f"Año: {self.__año}") print(f"Precio: {self.__precio}") print(f"Color: {self.__color}") class Auto(Vehiculo): def __init__(self, marca, modelo, año, precio, color, numero_puertas, transmision): super().__init__(marca, modelo, año, precio, color) self.__numero_puertas = numero_puertas self.__transmision = transmision def mostrar_info(self): super().mostrar_info() print(f"Número de puertas: {self.__numero_puertas}") print(f"Transmisión: {self.__transmision}") class Moto(Vehiculo): def __init__(self, marca, modelo, año, precio, color, tipo_moto, cilindrada): super().__init__(marca, modelo, año, precio, color) self.__tipo_moto = tipo_moto self.__cilindrada = cilindrada def mostrar_info(self): super().mostrar_info() print(f"Tipo de moto: {self.__tipo_moto}") print(f"Cilindrada: {self.__cilindrada} cc") class Camion(Vehiculo): def __init__(self, marca, modelo, año, precio, color, capacidad_carga, tipo_motor): super().__init__(marca, modelo, año, precio, color) self.__capacidad_carga = capacidad_carga self.__tipo_motor = tipo_motor def mostrar_info(self): super().mostrar_info() print(f"Capacidad de carga: {self.__capacidad_carga} kg") print(f"Tipo de motor: {self.__tipo_motor}") # Crear objetos de cada clase auto = Auto("Toyota", "Corolla", 2022, 25000, "Blanco", 4, "Automático") moto = Moto("Honda", "CBR500R", 2020, 15000, "Rojo", "Deportiva", 500) camion = Camion("Volvo", "FH16", 2018, 80000, "Azul", 20000, "Diésel") # Mostrar información de cada objeto print("Información del auto:") auto.mostrar_info() print("\nInformación de la moto:") moto.mostrar_info() print("\nInformación del camión:") camion.mostrar_info() ``` En este ejemplo, la clase `Vehiculo` es la clase base que contiene los atributos comunes a todos los vehículos. Las clases `Auto`, `Moto` y `Camion` heredan de la clase `Vehiculo` y agregan atributos adicionales específicos de cada tipo de vehículo. El método `mostrar_info()` se redefine en cada clase para imprimir los atributos de cada tipo de vehículo. El uso de `super()` permite acceder a los métodos y atributos de la clase base desde las clases hijas.