@icarusmx/creta 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/creta.js +7 -7
- package/lessons/lesson7-object-definition.js +13 -13
- package/package.json +1 -1
package/bin/creta.js
CHANGED
|
@@ -673,7 +673,7 @@ Salgamos de este laberinto 🏛️
|
|
|
673
673
|
if (key === 'q' || key === '\x03') { // q or Ctrl+C
|
|
674
674
|
process.stdin.setRawMode(false)
|
|
675
675
|
process.stdin.removeListener('data', onKeyPress)
|
|
676
|
-
console.log("\
|
|
676
|
+
console.log("\nHecho con <3 por icarus.mx")
|
|
677
677
|
resolve()
|
|
678
678
|
return
|
|
679
679
|
}
|
|
@@ -732,7 +732,7 @@ async function startMainMenuFallback() {
|
|
|
732
732
|
const respuesta = await askQuestion("Elige una opción (1-2) o 'q' para salir: ")
|
|
733
733
|
|
|
734
734
|
if (respuesta.toLowerCase() === 'q') {
|
|
735
|
-
console.log("
|
|
735
|
+
console.log("Hecho con <3 por icarus.mx")
|
|
736
736
|
rl.close()
|
|
737
737
|
return
|
|
738
738
|
}
|
|
@@ -844,7 +844,7 @@ async function startEnunciadosSelectorInteractive() {
|
|
|
844
844
|
if (key === 'q' || key === '\x03') { // q or Ctrl+C
|
|
845
845
|
process.stdin.setRawMode(false)
|
|
846
846
|
process.stdin.removeListener('data', onKeyPress)
|
|
847
|
-
console.log("\
|
|
847
|
+
console.log("\nHecho con <3 por icarus.mx")
|
|
848
848
|
resolve()
|
|
849
849
|
return
|
|
850
850
|
}
|
|
@@ -1054,7 +1054,7 @@ async function startEnunciadosSelectorFallback() {
|
|
|
1054
1054
|
const respuesta = await askQuestion("Elige un número (1-7) o 'q' para salir: ")
|
|
1055
1055
|
|
|
1056
1056
|
if (respuesta.toLowerCase() === 'q') {
|
|
1057
|
-
console.log("
|
|
1057
|
+
console.log("Hecho con <3 por icarus.mx")
|
|
1058
1058
|
rl.close()
|
|
1059
1059
|
return
|
|
1060
1060
|
}
|
|
@@ -1283,7 +1283,7 @@ async function startProyectosSelectorInteractive() {
|
|
|
1283
1283
|
if (key === 'q' || key === '\x03') { // q or Ctrl+C
|
|
1284
1284
|
process.stdin.setRawMode(false)
|
|
1285
1285
|
process.stdin.removeListener('data', onKeyPress)
|
|
1286
|
-
console.log("\
|
|
1286
|
+
console.log("\nHecho con <3 por icarus.mx")
|
|
1287
1287
|
resolve()
|
|
1288
1288
|
return
|
|
1289
1289
|
}
|
|
@@ -1345,7 +1345,7 @@ async function returnToMainMenu() {
|
|
|
1345
1345
|
console.clear()
|
|
1346
1346
|
await startMainMenu()
|
|
1347
1347
|
} else {
|
|
1348
|
-
console.log("\
|
|
1348
|
+
console.log("\nHecho con <3 por icarus.mx")
|
|
1349
1349
|
rl.close()
|
|
1350
1350
|
}
|
|
1351
1351
|
}
|
|
@@ -1375,7 +1375,7 @@ async function startProyectosSelectorFallback() {
|
|
|
1375
1375
|
const respuesta = await askQuestion("Elige una opción (1-4) o 'q' para salir: ")
|
|
1376
1376
|
|
|
1377
1377
|
if (respuesta.toLowerCase() === 'q') {
|
|
1378
|
-
console.log("
|
|
1378
|
+
console.log("Hecho con <3 por icarus.mx")
|
|
1379
1379
|
rl.close()
|
|
1380
1380
|
return
|
|
1381
1381
|
}
|
|
@@ -125,8 +125,7 @@ deposit(100) // ¿A cuál cuenta?`
|
|
|
125
125
|
console.log("=" .repeat(50))
|
|
126
126
|
|
|
127
127
|
console.log("\n💡 Un objeto AGRUPA datos y procedimientos")
|
|
128
|
-
console.log("Los datos
|
|
129
|
-
console.log("Los procedimientos se convierten en MÉTODOS")
|
|
128
|
+
console.log("Los datos quedan unidos con las operaciones que los manipulan")
|
|
130
129
|
|
|
131
130
|
await this.waitForEnter("\nPresiona Enter para ver el código...")
|
|
132
131
|
|
|
@@ -139,7 +138,7 @@ deposit(100) // ¿A cuál cuenta?`
|
|
|
139
138
|
this.isActive = true
|
|
140
139
|
}
|
|
141
140
|
|
|
142
|
-
//
|
|
141
|
+
// OPERACIONES que operan sobre ESTOS datos específicos
|
|
143
142
|
deposit(amount) {
|
|
144
143
|
if (!this.isActive) {
|
|
145
144
|
console.log("Cuenta inactiva")
|
|
@@ -201,7 +200,7 @@ account2.withdraw(200)
|
|
|
201
200
|
console.log(account1.getBalance()) // 5500
|
|
202
201
|
console.log(account2.getBalance()) // 2800
|
|
203
202
|
|
|
204
|
-
//
|
|
203
|
+
// Las operaciones operan sobre los datos del objeto específico
|
|
205
204
|
account1.deactivate()
|
|
206
205
|
console.log(account1.isActive) // false
|
|
207
206
|
console.log(account2.isActive) // true ← No afectado`
|
|
@@ -218,12 +217,12 @@ console.log(account2.isActive) // true ← No afectado`
|
|
|
218
217
|
|
|
219
218
|
console.log("\n🔴 Enfoque Procedural:")
|
|
220
219
|
console.log(" Datos: let balance = 5000")
|
|
221
|
-
console.log("
|
|
220
|
+
console.log(" Operación: function deposit(amount) { balance += amount }")
|
|
222
221
|
console.log(" ❌ Separados, sin relación formal")
|
|
223
222
|
|
|
224
223
|
console.log("\n🟢 Enfoque Orientado a Objetos:")
|
|
225
224
|
console.log(" Datos: this.balance = 5000")
|
|
226
|
-
console.log("
|
|
225
|
+
console.log(" Operación: deposit(amount) { this.balance += amount }")
|
|
227
226
|
console.log(" ✅ Unidos en el MISMO objeto")
|
|
228
227
|
|
|
229
228
|
await this.waitForEnter("\nPresiona Enter para ver ejemplo visual...")
|
|
@@ -241,7 +240,7 @@ console.log(account2.isActive) // true ← No afectado`
|
|
|
241
240
|
console.log("│ • balance = 5000 │")
|
|
242
241
|
console.log("│ • isActive = true │")
|
|
243
242
|
console.log("├─────────────────────────────────────┤")
|
|
244
|
-
console.log("│
|
|
243
|
+
console.log("│ OPERACIONES: │")
|
|
245
244
|
console.log("│ • deposit(amount) │")
|
|
246
245
|
console.log("│ • withdraw(amount) │")
|
|
247
246
|
console.log("│ • getBalance() │")
|
|
@@ -249,7 +248,7 @@ console.log(account2.isActive) // true ← No afectado`
|
|
|
249
248
|
console.log("└─────────────────────────────────────┘")
|
|
250
249
|
|
|
251
250
|
console.log("\n📌 Nota clave:")
|
|
252
|
-
console.log("
|
|
251
|
+
console.log("Las operaciones SOLO operan sobre los datos de ESTE objeto")
|
|
253
252
|
console.log("account1.deposit() modifica account1.balance")
|
|
254
253
|
console.log("account2.deposit() modifica account2.balance")
|
|
255
254
|
|
|
@@ -267,7 +266,7 @@ console.log(account2.isActive) // true ← No afectado`
|
|
|
267
266
|
this.totalAmount = 0
|
|
268
267
|
}
|
|
269
268
|
|
|
270
|
-
//
|
|
269
|
+
// OPERACIONES que operan sobre estos datos
|
|
271
270
|
addItem(product, quantity) {
|
|
272
271
|
const item = { product, quantity, price: product.price * quantity }
|
|
273
272
|
this.items.push(item)
|
|
@@ -320,9 +319,9 @@ console.log(cart.getItemCount()) // 3`
|
|
|
320
319
|
|
|
321
320
|
console.log("\n🔍 Desglose:")
|
|
322
321
|
console.log("1️⃣ CONJUNTO → agrupación unificada")
|
|
323
|
-
console.log("2️⃣ DATOS →
|
|
324
|
-
console.log("3️⃣ PROCEDIMIENTOS →
|
|
325
|
-
console.log("4️⃣ OPERAN SOBRE →
|
|
322
|
+
console.log("2️⃣ DATOS → información del objeto (this.balance, this.name)")
|
|
323
|
+
console.log("3️⃣ PROCEDIMIENTOS → operaciones del objeto (deposit, withdraw)")
|
|
324
|
+
console.log("4️⃣ OPERAN SOBRE → las operaciones modifican/leen los datos")
|
|
326
325
|
|
|
327
326
|
console.log("\n✅ Ventajas demostradas:")
|
|
328
327
|
console.log("• Encapsulación: datos y operaciones juntos")
|
|
@@ -337,7 +336,8 @@ console.log(cart.getItemCount()) // 3`
|
|
|
337
336
|
console.log("\n🔗 Conexión con otros enunciados:")
|
|
338
337
|
console.log("• Enunciado 1: Estos objetos son los que descomponemos del sistema")
|
|
339
338
|
console.log("• Enunciado 2: Estos objetos interactúan mediante solicitudes")
|
|
340
|
-
console.log("• Enunciado
|
|
339
|
+
console.log("• Enunciado 4: Cada operación tiene una firma (nombre, insumos, retorno)")
|
|
340
|
+
console.log("• Enunciado 5: La interfaz expone las operaciones disponibles")
|
|
341
341
|
|
|
342
342
|
console.log("\n💭 Reflexión:")
|
|
343
343
|
console.log("Antes de diseñar cómo los objetos interactúan,")
|