@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("//
|
|
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("
|
|
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
|
|
327
|
-
console.log("3.
|
|
328
|
-
console.log("4.
|
|
329
|
-
|
|
330
|
-
|
|
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("•
|
|
334
|
-
console.log("• COLABORACIÓN:
|
|
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("
|
|
353
|
-
console.log("
|
|
354
|
-
console.log("
|
|
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
|
|
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
|
}
|