Skip to content

Commit 0bbd147

Browse files
committed
Corrección Roadmap 27 + Nuevo ejercicio 28
1 parent cff8252 commit 0bbd147

File tree

3 files changed

+120
-3
lines changed

3 files changed

+120
-3
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
2828
## Corrección y próximo ejercicio
2929

30-
> #### Lunes 8 de julio de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
31-
> #### Consulta el **[horario](https://discord.gg/4azkvPUJ?event=1254974320136949871)** por país y crea un **[recordatorio](https://discord.gg/4azkvPUJ?event=1254974320136949871)**
30+
> #### Lunes 15 de julio de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
31+
> #### Consulta el **[horario](https://discord.gg/ssrS9zeS?event=1257395660962005113)** por país y crea un **[recordatorio](https://discord.gg/ssrS9zeS?event=1257395660962005113)**
3232
3333
## Roadmap
3434

@@ -61,7 +61,8 @@
6161
|24|[DECORADORES](./Roadmap/24%20-%20DECORADORES/ejercicio.md)|[📝](./Roadmap/24%20-%20DECORADORES/python/mouredev.py)|[▶️](https://youtu.be/jxJOjg7gPG4)|[👥](./Roadmap/24%20-%20DECORADORES/)
6262
|25|[LOGS](./Roadmap/25%20-%20LOGS/ejercicio.md)|[📝](./Roadmap/25%20-%20LOGS/python/mouredev.py)|[▶️](https://youtu.be/y2O6L1r_skc)|[👥](./Roadmap/25%20-%20LOGS/)
6363
|26|[SOLID: PRINCIPIO DE RESPONSABILIDAD ÚNICA](./Roadmap/26%20-%20SOLID%20SRP/ejercicio.md)|[📝](./Roadmap/26%20-%20SOLID%20SRP/python/mouredev.py)|[▶️](https://youtu.be/7NM8FK9G91M)|[👥](./Roadmap/26%20-%20SOLID%20SRP)
64-
|27|[SOLID: PRINCIPIO ABIERTO-CERRADO](./Roadmap/27%20-%20SOLID%20OCP/ejercicio.md)|[🗓️ 08/07/24](https://discord.gg/4azkvPUJ?event=1254974320136949871)||[👥](./Roadmap/27%20-%20SOLID%20OCP/)
64+
|27|[SOLID: PRINCIPIO ABIERTO-CERRADO](./Roadmap/27%20-%20SOLID%20OCP/ejercicio.md)|[📝](./Roadmap/27%20-%20SOLID%20OCP/python/mouredev.py)||[👥](./Roadmap/27%20-%20SOLID%20OCP/)
65+
|28|[SOLID: PRINCIPIO DE SUSTITUCIÓN DE LISKOV](./Roadmap/28%20-%20SOLID%20LSP/ejercicio.md)|[🗓️ 15/07/24](https://discord.gg/ssrS9zeS?event=1257395660962005113)||[👥](./Roadmap/28%20-%20SOLID%20LSP/)
6566

6667
## Instrucciones
6768

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
"""
2+
Ejercicio
3+
"""
4+
5+
6+
from abc import ABC, abstractmethod
7+
8+
9+
class Form:
10+
def draw(self):
11+
pass
12+
13+
14+
class Square(Form):
15+
def draw(self):
16+
print("Dibuja un cuadrado")
17+
18+
19+
class Circle(Form):
20+
def draw(self):
21+
print("Dibuja un círculo")
22+
23+
24+
class Triangle(Form):
25+
def draw(self):
26+
print("Dibuja un triángulo")
27+
28+
29+
"""
30+
Extra
31+
"""
32+
33+
34+
class Operation(ABC):
35+
@abstractmethod
36+
def execute(self, a, b):
37+
pass
38+
39+
40+
class Addition(Operation):
41+
def execute(self, a, b):
42+
return a + b
43+
44+
45+
class Substration(Operation):
46+
def execute(self, a, b):
47+
return a - b
48+
49+
50+
class Multiplication(Operation):
51+
def execute(self, a, b):
52+
return a * b
53+
54+
55+
class Division(Operation):
56+
def execute(self, a, b):
57+
return a / b
58+
59+
60+
class Power(Operation):
61+
def execute(self, a, b):
62+
return a ** b
63+
64+
65+
class Calculator:
66+
def __init__(self) -> None:
67+
self.operations = {}
68+
69+
def add_operation(self, name, operation):
70+
self.operations[name] = operation
71+
72+
def calculate(self, name, a, b):
73+
if name not in self.operations:
74+
raise ValueError(f"La operación {name} no está soportada.")
75+
return self.operations[name].execute(a, b)
76+
77+
78+
calculator = Calculator()
79+
calculator.add_operation("addition", Addition())
80+
calculator.add_operation("substration", Substration())
81+
calculator.add_operation("multiplication", Multiplication())
82+
calculator.add_operation("division", Division())
83+
calculator.add_operation("power", Power())
84+
85+
print(calculator.calculate("addition", 10, 5))
86+
print(calculator.calculate("substration", 10, 5))
87+
print(calculator.calculate("multiplication", 10, 5))
88+
print(calculator.calculate("division", 10, 5))
89+
print(calculator.calculate("power", 10, 5))
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# #28 SOLID: PRINCIPIO DE SUSTITUCIÓN DE LISKOV (LSP)
2+
> #### Dificultad: Media | Publicación: 08/07/24 | Corrección: 15/07/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* Explora el "Principio SOLID de Sustitución de Liskov (Liskov Substitution Principle, LSP)"
10+
* y crea un ejemplo simple donde se muestre su funcionamiento
11+
* de forma correcta e incorrecta.
12+
*
13+
* DIFICULTAD EXTRA (opcional):
14+
* Crea una jerarquía de vehículos. Todos ellos deben poder acelerar y frenar, así como
15+
* cumplir el LSP.
16+
* Instrucciones:
17+
* 1. Crea la clase Vehículo.
18+
* 2. Añade tres subclases de Vehículo.
19+
* 3. Implementa las operaciones "acelerar" y "frenar" como corresponda.
20+
* 4. Desarrolla un código que compruebe que se cumple el LSP.
21+
*/
22+
```
23+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
24+
25+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
26+
27+
> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**.

0 commit comments

Comments
 (0)