Skip to content

Commit ef3cc8f

Browse files
committed
#27 - JavaScript
1 parent 17856ae commit ef3cc8f

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el "Principio SOLID Abierto-Cerrado (Open-Close Principle, OCP)"
4+
* y crea un ejemplo simple donde se muestre su funcionamiento
5+
* de forma correcta e incorrecta.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Desarrolla una calculadora que necesita realizar diversas operaciones matemáticas.
9+
* Requisitos:
10+
* - Debes diseñar un sistema que permita agregar nuevas operaciones utilizando el OCP.
11+
* Instrucciones:
12+
* 1. Implementa las operaciones de suma, resta, multiplicación y división.
13+
* 2. Comprueba que el sistema funciona.
14+
* 3. Agrega una quinta operación para calcular potencias.
15+
* 4. Comprueba que se cumple el OCP.
16+
*/
17+
18+
//EJERCICIO
19+
/*
20+
PRINCIPIO ABIERTO-CERRADO:
21+
22+
"Las entidades de software (clases, módulos, funciones, etc.) deben estar abiertas para su extensión, pero cerradas para su modificación"
23+
24+
*/
25+
26+
//EXTRA
27+
class Calculator {
28+
display(operation, a, b) {
29+
const operationOptions = {
30+
add: this.add,
31+
susbtrac: this.susbtrac,
32+
multiplicate: this.multiplicate,
33+
divide: this.divide,
34+
};
35+
36+
function defaultfun() {
37+
console.log('Operacion no soportada o inexistente');
38+
}
39+
40+
const fun = operationOptions[operation] || defaultfun;
41+
42+
fun(a, b);
43+
}
44+
45+
add(a, b) {
46+
console.log(a + b);
47+
}
48+
49+
susbtrac(a, b) {
50+
console.log(a - b);
51+
}
52+
53+
multiplicate(a, b) {
54+
console.log(a * b);
55+
}
56+
57+
divide(a, b) {
58+
console.log(a / b);
59+
}
60+
}
61+
62+
const calculator = new Calculator();
63+
64+
calculator.display('add', 12, 10);
65+
calculator.display('potencia', 12, 10);

0 commit comments

Comments
 (0)