@icarusmx/creta 0.9.1 → 0.9.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.
@@ -309,10 +309,13 @@ export class Lesson6InterfaceDesign {
309
309
  console.log(" }")
310
310
  console.log("}")
311
311
  console.log("")
312
- console.log("// Bank sigue funcionando igual con cualquier tipo de cuenta!")
312
+ console.log("// Las cuentas pueden enviarse dinero directamente!")
313
313
  console.log("const savingsAcc = new SavingsAccount(123, 'María', 1000)")
314
314
  console.log("const creditAcc = new CreditAccount(456, 'Juan', 500, 2000) // límite crédito")
315
- console.log("bank.transfer(savingsAcc, creditAcc, 300) // ¡Funciona!")
315
+ console.log("savingsAcc.send(300, creditAcc) // ¡Funciona con cualquier tipo de cuenta!")
316
+ console.log("")
317
+ console.log("// O podemos usar el Bank para registro completo:")
318
+ console.log("bank.transfer(savingsAcc, creditAcc, 300) // Crea Transaction automáticamente")
316
319
 
317
320
  await this.waitForEnter("\nPresiona Enter para continuar con la conclusión...")
318
321
  }
@@ -323,15 +326,28 @@ export class Lesson6InterfaceDesign {
323
326
  console.log("=" .repeat(55))
324
327
  console.log("🎯 Hemos demostrado que:")
325
328
  console.log("\n1. El ÉNFASIS debe estar en definir QUÉ solicitudes maneja cada objeto")
326
- console.log("2. Las INTERFACES especifican cómo hacer estas solicitudes")
327
- console.log("3. La IMPLEMENTACIÓN viene después, siguiendo el contrato")
328
- console.log("4. Los objetos COLABORAN a través de estas interfaces bien definidas")
329
-
330
- console.log("\n🔑 Lecciones específicas del ejemplo bancario:")
329
+ console.log("2. Las INTERFACES son el CONJUNTO de todas las firmas de operación")
330
+ console.log("3. Cada FIRMA especifica: nombre, insumos y valor de retorno")
331
+ console.log("4. La IMPLEMENTACIÓN viene después, siguiendo el contrato")
332
+ console.log("5. Los objetos COLABORAN a través de estas interfaces bien definidas")
333
+
334
+ console.log("\n📋 Firmas de operación en nuestro ejemplo:")
335
+ console.log("• BankAccount.getBalance() → number")
336
+ console.log("• BankAccount.send(amount, targetAccount) → boolean")
337
+ console.log("• Bank.createAccount(ownerName, initialBalance) → BankAccount")
338
+ console.log("• Bank.transfer(fromAccount, toAccount, amount) → Transaction")
339
+ console.log("• Transaction.getDetails() → {from, to, amount, timestamp, status}")
340
+
341
+ console.log("\n🔑 La interfaz de BankAccount es el CONJUNTO completo:")
342
+ console.log(" {getBalance, getAccountInfo, deposit, send}")
343
+ console.log("🔑 La interfaz de Bank es el CONJUNTO completo:")
344
+ console.log(" {createAccount, transfer, getAllTransactions, validateOperation}")
345
+
346
+ console.log("\n💡 Beneficios de este enfoque:")
331
347
  console.log("• ENCAPSULACIÓN: getBalance() protege el acceso al estado interno")
332
348
  console.log("• VALIDACIÓN: send() ejecuta lógica de negocio antes de operar")
333
- console.log("• RESPONSABILIDAD: Cada objeto maneja su propia integridad")
334
- console.log("• COLABORACIÓN: Bank, BankAccount y Transaction trabajan juntos")
349
+ console.log("• CONTRATO CLARO: Cada firma especifica exactamente qué esperar")
350
+ console.log("• COLABORACIÓN: Los objetos conocen las firmas de otros objetos")
335
351
 
336
352
  console.log("\n📚 Conexión con lecciones anteriores:")
337
353
  console.log("• Lección 2: Los objetos interactúan a través de solicitudes ✓")
@@ -349,12 +365,15 @@ export class Lesson6InterfaceDesign {
349
365
  console.log("5. Haz que los objetos colaboren a través de solicitudes")
350
366
 
351
367
  console.log("\n💭 Reflexión final:")
352
- console.log("En el mundo real, ¿cómo te asegurarías de que tu cuenta bancaria")
353
- console.log("esté protegida y que solo se ejecuten operaciones válidas?")
354
- console.log("¡Exactamente como lo hicimos aquí: interfaces bien definidas!")
368
+ console.log("Antes de implementar cualquier objeto, pregúntate:")
369
+ console.log(" ¿Cuáles son TODAS las firmas de operación que necesito?")
370
+ console.log(" ¿Qué nombre, insumos y valor de retorno tendrá cada firma?")
371
+ console.log("• ¿Cómo van a colaborar los objetos usando estas firmas?")
372
+ console.log("• ¿El CONJUNTO de firmas forma una interfaz coherente?")
355
373
 
356
374
  console.log("\n🏆 ¡Has completado el ejemplo más importante del diseño orientado a objetos!")
357
- console.log("Ahora entiendes por qué el ÉNFASIS debe estar en las interfaces.")
375
+ console.log("Ahora entiendes que el ÉNFASIS debe estar en definir el CONJUNTO")
376
+ console.log("completo de firmas de operación ANTES de implementar.")
358
377
 
359
378
  await this.waitForEnter("\n✨ ¡Lección 6 completada! Presiona Enter para salir...")
360
379
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@icarusmx/creta",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Salgamos de este laberinto.",
5
5
  "type": "module",
6
6
  "bin": {