Skip to content

Commit 0c2bb07

Browse files
mouredev#28 - Python
1 parent 580f4a6 commit 0c2bb07

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
"""
2+
Mauricio Leyva
3+
4+
Jerarquía de vehículos que cumple con el Principio de Sustitución de Liskov (LSP).
5+
Todos los vehículos deben poder acelerar y frenar.
6+
7+
Instrucciones:
8+
1. Crea la clase Vehículo.
9+
2. Añade tres subclases de Vehículo.
10+
3. Implementa las operaciones "acelerar" y "frenar" como corresponda.
11+
4. Desarrolla un código que compruebe que se cumple el LSP.
12+
"""
13+
14+
from abc import ABC, abstractmethod
15+
16+
class Vehiculo(ABC):
17+
def __init__(self):
18+
self.velocidad = 0
19+
20+
@abstractmethod
21+
def acelerar(self, incremento):
22+
pass
23+
24+
@abstractmethod
25+
def frenar(self, decremento):
26+
pass
27+
28+
def obtener_velocidad(self):
29+
return self.velocidad
30+
31+
class Coche(Vehiculo):
32+
def acelerar(self, incremento):
33+
self.velocidad += incremento
34+
return f"Coche acelerando. Velocidad actual: {self.velocidad} km/h"
35+
36+
def frenar(self, decremento):
37+
self.velocidad = max(0, self.velocidad - decremento)
38+
return f"Coche frenando. Velocidad actual: {self.velocidad} km/h"
39+
40+
class Motocicleta(Vehiculo):
41+
def acelerar(self, incremento):
42+
self.velocidad += incremento * 1.2 # Las motos aceleran un poco más rápido
43+
return f"Motocicleta acelerando. Velocidad actual: {self.velocidad} km/h"
44+
45+
def frenar(self, decremento):
46+
self.velocidad = max(0, self.velocidad - decremento * 1.1) # Las motos frenan un poco más rápido
47+
return f"Motocicleta frenando. Velocidad actual: {self.velocidad} km/h"
48+
49+
class Camion(Vehiculo):
50+
def acelerar(self, incremento):
51+
self.velocidad += incremento * 0.8 # Los camiones aceleran más lento
52+
return f"Camión acelerando. Velocidad actual: {self.velocidad} km/h"
53+
54+
def frenar(self, decremento):
55+
self.velocidad = max(0, self.velocidad - decremento * 0.9) # Los camiones frenan más lento
56+
return f"Camión frenando. Velocidad actual: {self.velocidad} km/h"
57+
58+
def probar_vehiculo(vehiculo):
59+
print(vehiculo.acelerar(30))
60+
print(vehiculo.acelerar(20))
61+
print(vehiculo.frenar(10))
62+
print(vehiculo.frenar(15))
63+
print(f"Velocidad final: {vehiculo.obtener_velocidad()} km/h")
64+
print("-" * 50)
65+
66+
# Comprobación del LSP
67+
vehiculos = [Coche(), Motocicleta(), Camion()]
68+
69+
for v in vehiculos:
70+
print(f"Probando {v.__class__.__name__}:")
71+
probar_vehiculo(v)

0 commit comments

Comments
 (0)