Skip to content

Commit 6413365

Browse files
committed
#28-bash
1 parent dd267bf commit 6413365

File tree

1 file changed

+172
-0
lines changed

1 file changed

+172
-0
lines changed
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
#!/bin/bash
2+
3+
echo -e "\n\n=======================================EJERCICIO=======================================\n\n"
4+
5+
6+
# * EJERCICIO:
7+
# * Explora el "Principio SOLID de Sustitucion de Liskov (Liskov Substitution Principle, LSP)"
8+
# * y crea un ejemplo simple donde se muestre su funcionamiento
9+
# * de forma correcta e incorrecta.
10+
11+
12+
# FORMA INCORRECTA LSP
13+
14+
15+
function bird_have_beak(){
16+
echo -e "\n\tSoy un $1, soy un pajaro y mi boca es un pico"
17+
}
18+
19+
function bird_fly(){
20+
echo -e "\n\tSoy un $1, soy un pajaro y vuelo\n"
21+
}
22+
23+
function hawk_have_beak(){
24+
bird_have_beak "$1"
25+
}
26+
27+
function hawk_fly(){
28+
bird_fly "$1"
29+
}
30+
31+
function penguin_have_beak(){
32+
bird_have_beak "$1"
33+
}
34+
35+
function penguin_fly(){
36+
echo -e "\n\tSoy un pingüino, soy un pajaro y nado, no vuelo\n"
37+
return 1
38+
}
39+
40+
41+
echo "Hawk:"
42+
hawk_have_beak halcon
43+
hawk_fly halcon
44+
45+
echo "Penguin"
46+
penguin_have_beak pingüino
47+
penguin_fly pingüino
48+
49+
50+
# FORMA CORRECTA LSP
51+
52+
function bird_have_beak(){
53+
echo -e "\n\tSoy un $1, soy un pajaro y mi boca es un pico"
54+
}
55+
56+
function flying_bird_have_beak(){
57+
bird_have_beak "$1"
58+
}
59+
60+
function flying_bird_fly(){
61+
echo -e "\n\tSoy un $1, soy un pajaro y vuelo\n"
62+
}
63+
64+
function hawk_have_beak(){
65+
flying_bird_have_beak "$1"
66+
}
67+
68+
function hawk_fly(){
69+
flying_bird_fly "$1"
70+
}
71+
72+
function non_flying_bird_have_beak(){
73+
bird_have_beak "$1"
74+
}
75+
76+
function penguin_have_beak(){
77+
non_flying_bird_have_beak "$1"
78+
}
79+
80+
function penguin_swim(){
81+
echo -e "\n\tSoy un $1, soy un pajaro y nado, no vuelo\n"
82+
}
83+
84+
85+
86+
echo "Hawk"
87+
hawk_have_beak halcon
88+
hawk_fly halcon
89+
90+
echo "Penguin"
91+
penguin_have_beak pingüino
92+
penguin_swim pingüino
93+
94+
95+
96+
97+
echo -e "\n\n=======================================DIFICULTAD EXTRA=======================================\n\n"
98+
99+
100+
101+
# * DIFICULTAD EXTRA (opcional):
102+
# * Crea una jerarquia de vehiculos. Todos ellos deben poder acelerar y frenar, asi como
103+
# * cumplir el LSP.
104+
# * Instrucciones:
105+
# * 1. Crea la clase Vehiculo.
106+
# * 2. Añade tres subclases de Vehiculo.
107+
# * 3. Implementa las operaciones "acelerar" y "frenar" como corresponda.
108+
# * 4. Desarrolla un codigo que compruebe que se cumple el LSP.
109+
110+
111+
function vehicle_init(){
112+
local name=$1
113+
echo $1
114+
}
115+
function vehicle_accelerate(){
116+
pass
117+
}
118+
119+
function vehicle_brake(){
120+
pass
121+
}
122+
123+
function engine_vehicle(){
124+
local name=$1
125+
echo -e "$1 es un vehi­culo de motor"
126+
}
127+
128+
129+
function engine_vehicle_brake(){
130+
local name=$1
131+
echo -e "$1 esta frenando con los discos de freno"
132+
}
133+
134+
function electric_motor_accelerate(){
135+
local name=$1
136+
echo -e "$1 está acelerando con el motor electrico"
137+
}
138+
139+
function gas_motor_accelerate(){
140+
local name=$1
141+
echo -e "$1 está acelerando con el motor de gasoil"
142+
}
143+
144+
function non_engine_vehicle(){
145+
local name=$1
146+
echo -e "$1 es un vehiculo sin motor"
147+
}
148+
149+
function non_engine_accelerate(){
150+
local name=$1
151+
echo -e "$1 está acelerando con los pedales"
152+
}
153+
154+
function non_engine_brake(){
155+
local name=$1
156+
echo -e "$1 está frenando con las zapatas"
157+
}
158+
159+
camion_name=$(vehicle_init "camion")
160+
engine_vehicle $camion_name
161+
gas_motor_accelerate $camion_name
162+
engine_vehicle_brake $camion_name
163+
164+
coche_name=$(vehicle_init "coche")
165+
engine_vehicle $coche_name
166+
electric_motor_accelerate $coche_name
167+
engine_vehicle_brake $coche_name
168+
169+
bici_name=$(vehicle_init "bicicleta")
170+
non_engine_vehicle $bici_name
171+
non_engine_accelerate $bici_name
172+
non_engine_brake $bici_name

0 commit comments

Comments
 (0)