From ef3cc8f363aba8af728dcee9a61f58c0c05358d1 Mon Sep 17 00:00:00 2001 From: RicMonster1 <147381654+RicMonster1@users.noreply.github.com> Date: Wed, 3 Jul 2024 09:56:03 -0400 Subject: [PATCH] #27 - JavaScript --- Roadmap/27 - SOLID OCP/javascript/RicJDev.js | 65 ++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Roadmap/27 - SOLID OCP/javascript/RicJDev.js diff --git a/Roadmap/27 - SOLID OCP/javascript/RicJDev.js b/Roadmap/27 - SOLID OCP/javascript/RicJDev.js new file mode 100644 index 0000000000..5a80dd1045 --- /dev/null +++ b/Roadmap/27 - SOLID OCP/javascript/RicJDev.js @@ -0,0 +1,65 @@ +/* + * EJERCICIO: + * Explora el "Principio SOLID Abierto-Cerrado (Open-Close Principle, OCP)" + * y crea un ejemplo simple donde se muestre su funcionamiento + * de forma correcta e incorrecta. + * + * DIFICULTAD EXTRA (opcional): + * Desarrolla una calculadora que necesita realizar diversas operaciones matemáticas. + * Requisitos: + * - Debes diseñar un sistema que permita agregar nuevas operaciones utilizando el OCP. + * Instrucciones: + * 1. Implementa las operaciones de suma, resta, multiplicación y división. + * 2. Comprueba que el sistema funciona. + * 3. Agrega una quinta operación para calcular potencias. + * 4. Comprueba que se cumple el OCP. + */ + +//EJERCICIO +/* +PRINCIPIO ABIERTO-CERRADO: + +"Las entidades de software (clases, módulos, funciones, etc.) deben estar abiertas para su extensión, pero cerradas para su modificación" + +*/ + +//EXTRA +class Calculator { + display(operation, a, b) { + const operationOptions = { + add: this.add, + susbtrac: this.susbtrac, + multiplicate: this.multiplicate, + divide: this.divide, + }; + + function defaultfun() { + console.log('Operacion no soportada o inexistente'); + } + + const fun = operationOptions[operation] || defaultfun; + + fun(a, b); + } + + add(a, b) { + console.log(a + b); + } + + susbtrac(a, b) { + console.log(a - b); + } + + multiplicate(a, b) { + console.log(a * b); + } + + divide(a, b) { + console.log(a / b); + } +} + +const calculator = new Calculator(); + +calculator.display('add', 12, 10); +calculator.display('potencia', 12, 10);