Skip to content

Commit 153687a

Browse files
committed
Corrección Roadmap 28 + Nuevo ejercicio 29
1 parent f2d71cc commit 153687a

File tree

2 files changed

+135
-0
lines changed

2 files changed

+135
-0
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
"""
2+
Ejercicio
3+
"""
4+
5+
# Incorrecto
6+
7+
8+
class Bird:
9+
def fly(self):
10+
return "Flying"
11+
12+
13+
class Chicken(Bird):
14+
def fly(self):
15+
raise Exception("Los pollos no vuelan")
16+
17+
18+
# bird = Bird()
19+
# bird.fly()
20+
# chicken = Chicken()
21+
# chicken.fly()
22+
23+
# Correcto
24+
25+
class Bird:
26+
def move(self):
27+
return "Moving"
28+
29+
30+
class Chicken(Bird):
31+
def move(self):
32+
return "Walking"
33+
34+
35+
bird = Bird()
36+
print(bird.move())
37+
chicken = Chicken()
38+
print(chicken.move())
39+
40+
bird = Chicken()
41+
print(bird.move())
42+
chicken = Bird()
43+
print(chicken.move())
44+
45+
"""
46+
Extra
47+
"""
48+
49+
50+
class Vehicle:
51+
52+
def __init__(self, speed=0):
53+
self.speed = speed
54+
55+
def accelerate(self, increment):
56+
self.speed += increment
57+
print(f"Velocidad: {self.speed} Km/h")
58+
59+
def brake(self, decrement):
60+
self.speed -= decrement
61+
if self.speed <= 0:
62+
self.speed = 0
63+
print(f"Velocidad: {self.speed} Km/h")
64+
65+
66+
class Car(Vehicle):
67+
def accelerate(self, increment):
68+
print("El coche está acelerando")
69+
super().accelerate(increment)
70+
71+
def brake(self, decrement):
72+
print("El coche está frenando")
73+
super().brake(decrement)
74+
75+
76+
class Bicycle(Vehicle):
77+
def accelerate(self, increment):
78+
print("La bicicleta está acelerando")
79+
super().accelerate(increment)
80+
81+
def brake(self, decrement):
82+
print("La bicicleta está frenando")
83+
super().brake(decrement)
84+
85+
86+
class Motorcycle(Vehicle):
87+
def accelerate(self, increment):
88+
print("La moto está acelerando")
89+
super().accelerate(increment)
90+
91+
def brake(self, decrement):
92+
print("La moto está frenando")
93+
super().brake(decrement)
94+
95+
96+
def test_vehicle(vehicle):
97+
vehicle.accelerate(2)
98+
vehicle.brake(1)
99+
100+
101+
car = Car()
102+
bicycle = Bicycle()
103+
motorcycle = Motorcycle()
104+
105+
test_vehicle(car)
106+
test_vehicle(bicycle)
107+
test_vehicle(motorcycle)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# #29 SOLID: PRINCIPIO DE SEGREGACIÓN DE INTERFACES (ISP)
2+
> #### Dificultad: Media | Publicación: 15/07/24 | Corrección: 22/07/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* Explora el "Principio SOLID de Segregación de Interfaces (Interface Segregation Principle, ISP)"
10+
* y crea un ejemplo simple donde se muestre su funcionamiento de forma correcta e incorrecta.
11+
*
12+
* DIFICULTAD EXTRA (opcional):
13+
* Crea un gestor de impresoras.
14+
* Requisitos:
15+
* 1. Algunas impresoras sólo imprimen en blanco y negro.
16+
* 2. Otras sólo a color.
17+
* 3. Otras son multifunción, pueden imprimir, escanear y enviar fax.
18+
* Instrucciones:
19+
* 1. Implementa el sistema, con los diferentes tipos de impresoras y funciones.
20+
* 2. Aplica el ISP a la implementación.
21+
* 3. Desarrolla un código que compruebe que se cumple el principio.
22+
*/
23+
```
24+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
25+
26+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
27+
28+
> 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)