Skip to content

Commit a893342

Browse files
authored
Merge pull request mouredev#4836 from agusrosero/develop
#27 - Python
2 parents 749594d + 97c4538 commit a893342

File tree

2 files changed

+134
-0
lines changed

2 files changed

+134
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"""
2+
/*
3+
* EJERCICIO:
4+
* Explora el "Principio SOLID Abierto-Cerrado (Open-Close Principle, OCP)"
5+
* y crea un ejemplo simple donde se muestre su funcionamiento
6+
* de forma correcta e incorrecta.
7+
*
8+
"""
9+
10+
11+
class Animal:
12+
def __init__(self, name):
13+
self.name = name
14+
15+
16+
class Sonido(Animal):
17+
def sonido(self):
18+
print(f"{self.name} hace ruidos!")
19+
20+
21+
class Comer(Animal):
22+
def comer(self):
23+
print(f"{self.name} come su comida...")
24+
25+
26+
class Saludar(Animal):
27+
def saludar(self):
28+
print(f"{self.name} saluda!!!")
29+
30+
31+
animal1 = Animal("Leon")
32+
print(animal1.name)
33+
sonido1 = Sonido("Leon")
34+
sonido1.sonido()
35+
comer1 = Comer("Elefante")
36+
comer1.comer()
37+
saludar1 = Saludar("Tigre")
38+
saludar1.saludar()
39+
40+
"""
41+
* DIFICULTAD EXTRA (opcional):
42+
* Desarrolla una calculadora que necesita realizar diversas operaciones matemáticas.
43+
* Requisitos:
44+
* - Debes diseñar un sistema que permita agregar nuevas operaciones utilizando el OCP.
45+
* Instrucciones:
46+
* 1. Implementa las operaciones de suma, resta, multiplicación y división.
47+
* 2. Comprueba que el sistema funciona.
48+
* 3. Agrega una quinta operación para calcular potencias.
49+
* 4. Comprueba que se cumple el OCP.
50+
*/
51+
"""
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
"""
2+
/*
3+
* EJERCICIO:
4+
* Explora el "Principio SOLID de Sustitución de Liskov (Liskov Substitution Principle, LSP)"
5+
* y crea un ejemplo simple donde se muestre su funcionamiento
6+
* de forma correcta e incorrecta.
7+
*
8+
"""
9+
10+
# Forma correcta
11+
class Bird:
12+
def fly(self):
13+
return "Flying"
14+
15+
16+
class Sparrow(Bird):
17+
pass
18+
19+
# Forma incorrecta
20+
class Ostrich(Bird):
21+
def fly(self):
22+
raise NotImplementedError("Ostriches can't fly")
23+
24+
25+
def make_bird_fly(bird):
26+
try:
27+
return bird.fly()
28+
except NotImplementedError as e:
29+
return str(e)
30+
31+
32+
sparrow = Sparrow()
33+
ostrich = Ostrich()
34+
35+
print(make_bird_fly(sparrow))
36+
print(make_bird_fly(ostrich))
37+
38+
"""
39+
* DIFICULTAD EXTRA (opcional):
40+
* Crea una jerarquía de vehículos. Todos ellos deben poder acelerar y frenar, así como
41+
* cumplir el LSP.
42+
* Instrucciones:
43+
* 1. Crea la clase Vehículo.
44+
* 2. Añade tres subclases de Vehículo.
45+
* 3. Implementa las operaciones "acelerar" y "frenar" como corresponda.
46+
* 4. Desarrolla un código que compruebe que se cumple el LSP.
47+
*/
48+
"""
49+
50+
class Vehiculos:
51+
def __init__(self, name):
52+
self.name = name
53+
54+
def acelerar(self):
55+
raise NotImplementedError
56+
57+
def frenar(self):
58+
raise NotImplementedError
59+
60+
61+
class Auto(Vehiculos):
62+
def acelerar(self):
63+
print(f"{self.name} esta acelerando..")
64+
65+
def frenar(self):
66+
print(f"{self.name} frenando...")
67+
68+
class Bicicleta(Vehiculos):
69+
def acelerar(self):
70+
print(f"{self.name} esta acelerando")
71+
72+
def frenar(self):
73+
print(f"{self.name} estas frenando")
74+
75+
def operar_vehiculo(vehiculo):
76+
vehiculo.acelerar()
77+
vehiculo.frenar()
78+
79+
auto1 = Auto("BMW")
80+
bici1 = Bicicleta("BMX")
81+
82+
operar_vehiculo(auto1)
83+
operar_vehiculo(bici1)

0 commit comments

Comments
 (0)