{"id":10240,"date":"2026-02-21T11:51:04","date_gmt":"2026-02-21T03:51:04","guid":{"rendered":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/"},"modified":"2026-02-21T11:51:04","modified_gmt":"2026-02-21T03:51:04","slug":"mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study","status":"publish","type":"post","link":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/","title":{"rendered":"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes"},"content":{"rendered":"<blockquote data-nodeid=\"3344\">\n<p data-nodeid=\"3345\"><em data-nodeid=\"3691\">\u201cLa mejor manera de aprender el dise\u00f1o orientado a objetos no es memorizando patrones \u2014 es interpretando los roles.\u201d<\/em><\/p>\n<\/blockquote>\n<p data-nodeid=\"3346\">En este art\u00edculo, repasaremos un<strong data-nodeid=\"3703\">introducci\u00f3n paso a paso a las tarjetas CRC<\/strong>\u00a0(clase\u2013responsabilidad\u2013colaborador) utilizando un ejemplo del mundo real, amigable para principiantes: un<strong data-nodeid=\"3704\">Sistema de pr\u00e9stamo de libros de biblioteca<\/strong>. Ya sea que est\u00e9s comenzando tu viaje hacia el dise\u00f1o de software o dirigiendo un taller de equipo, las tarjetas CRC ofrecen una forma sencilla, potente y colaborativa para modelar sistemas orientados a objetos.<\/p>\n<hr data-nodeid=\"3347\"\/>\n<h2 data-nodeid=\"3348\">\ud83c\udfaf \u00bfQu\u00e9 son las tarjetas CRC?<\/h2>\n<p data-nodeid=\"3349\"><strong data-nodeid=\"3714\">Tarjetas CRC<\/strong>\u00a0son una t\u00e9cnica ligera de modelado, f\u00edsica (o digital), utilizada en el dise\u00f1o orientado a objetos. Cada tarjeta representa una<strong data-nodeid=\"3715\">clase<\/strong>\u00a0y contiene tres elementos clave:<\/p>\n<table data-nodeid=\"3351\">\n<thead data-nodeid=\"3352\">\n<tr data-nodeid=\"3353\">\n<th data-nodeid=\"3355\">Campo<\/th>\n<th data-nodeid=\"3356\">Descripci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"3359\">\n<tr data-nodeid=\"3360\">\n<td data-nodeid=\"3361\"><strong data-nodeid=\"3721\">Clase<\/strong><\/td>\n<td data-nodeid=\"3362\">El nombre de la clase (por ejemplo,<code data-backticks=\"1\" data-nodeid=\"3723\">Libro<\/code>)<\/td>\n<\/tr>\n<tr data-nodeid=\"3363\">\n<td data-nodeid=\"3364\"><strong data-nodeid=\"3728\">Responsabilidades<\/strong><\/td>\n<td data-nodeid=\"3365\">Lo que la clase<strong data-nodeid=\"3737\">sabe<\/strong>\u00a0o\u00a0<strong data-nodeid=\"3738\">hace<\/strong><\/td>\n<\/tr>\n<tr data-nodeid=\"3366\">\n<td data-nodeid=\"3367\"><strong data-nodeid=\"3742\">Colaboradores<\/strong><\/td>\n<td data-nodeid=\"3368\">Otras clases con las que esta clase necesita trabajar<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nodeid=\"3369\">Son especialmente efectivas para<strong data-nodeid=\"3757\">lluvia de ideas<\/strong>,\u00a0<strong data-nodeid=\"3758\">dise\u00f1ar<\/strong>, y\u00a0<strong data-nodeid=\"3759\">validando<\/strong>\u00a0estructuras de clases temprano en el desarrollo \u2014 antes de escribir una sola l\u00ednea de c\u00f3digo.<\/p>\n<hr data-nodeid=\"3370\"\/>\n<h2 data-nodeid=\"3371\">\ud83d\udcda Estudio de caso: Sistema de pr\u00e9stamo de libros de biblioteca<\/h2>\n<p data-nodeid=\"3372\">Imaginemos una peque\u00f1a biblioteca p\u00fablica donde los miembros pueden:<\/p>\n<ul data-nodeid=\"3373\">\n<li data-nodeid=\"3374\">\n<p data-nodeid=\"3375\">Buscar libros por t\u00edtulo<\/p>\n<\/li>\n<li data-nodeid=\"3376\">\n<p data-nodeid=\"3377\">Pedir prestados libros disponibles (hasta un l\u00edmite)<\/p>\n<\/li>\n<li data-nodeid=\"3378\">\n<p data-nodeid=\"3379\">Devolver libros cuando terminen<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"3380\">El sistema debe registrar:<\/p>\n<ul data-nodeid=\"3381\">\n<li data-nodeid=\"3382\">\n<p data-nodeid=\"3383\">Qu\u00e9 libros est\u00e1n prestados<\/p>\n<\/li>\n<li data-nodeid=\"3384\">\n<p data-nodeid=\"3385\">Por qui\u00e9n<\/p>\n<\/li>\n<li data-nodeid=\"3386\">\n<p data-nodeid=\"3387\">Cu\u00e1ndo vencen<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"3388\">Usaremos el m\u00e9todo de tarjetas CRC<strong data-nodeid=\"3774\">m\u00e9todo de tarjetas CRC<\/strong>\u00a0para descubrir y refinar las clases en este sistema \u2014 paso a paso.<\/p>\n<hr data-nodeid=\"3389\"\/>\n<h2 data-nodeid=\"3390\">\u2705 Paso 1: Encontrar clases candidatas (lluvia de ideas de sustantivos)<\/h2>\n<p data-nodeid=\"3391\">Comience leyendo el escenario y extraiga<strong data-nodeid=\"3781\">sustantivos<\/strong>\u00a0\u2014 estos son posibles clases.<\/p>\n<p data-nodeid=\"3392\">A partir de la descripci\u00f3n, identificamos:<\/p>\n<ul data-nodeid=\"3393\">\n<li data-nodeid=\"3394\">\n<p data-nodeid=\"3395\">Biblioteca<\/p>\n<\/li>\n<li data-nodeid=\"3396\">\n<p data-nodeid=\"3397\">Miembro (o Usuario)<\/p>\n<\/li>\n<li data-nodeid=\"3398\">\n<p data-nodeid=\"3399\">Libro<\/p>\n<\/li>\n<li data-nodeid=\"3400\">\n<p data-nodeid=\"3401\">Pr\u00e9stamo (o pr\u00e9stamo)<\/p>\n<\/li>\n<li data-nodeid=\"3402\">\n<p data-nodeid=\"3403\">Fecha de vencimiento (posiblemente demasiado peque\u00f1o)<\/p>\n<\/li>\n<li data-nodeid=\"3404\">\n<p data-nodeid=\"3405\">Tarjeta de biblioteca (podr\u00eda formar parte del Miembro)<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"3406\">Filtramos y mantenemos solo los m\u00e1s significativos:<\/p>\n<blockquote data-nodeid=\"3407\">\n<p data-nodeid=\"3408\">\u2705\u00a0<strong data-nodeid=\"3802\">Miembro<\/strong>,\u00a0<strong data-nodeid=\"3803\">Libro<\/strong>,\u00a0<strong data-nodeid=\"3804\">Prestamo<\/strong><\/p>\n<\/blockquote>\n<blockquote data-nodeid=\"3409\">\n<p data-nodeid=\"3410\">\u26a0\ufe0f\u00a0<em data-nodeid=\"3810\">Nota: No te preocupes por tener todos los clases correctas desde el principio \u2014 esa es la belleza de las tarjetas CRC. Descubrir\u00e1s las que faltan mediante el juego de roles!<\/em><\/p>\n<\/blockquote>\n<hr data-nodeid=\"3411\"\/>\n<h2 data-nodeid=\"3412\">\u270f\ufe0f Paso 2: Crear tarjetas CRC iniciales<\/h2>\n<p data-nodeid=\"3413\">Ahora, asignamos<strong data-nodeid=\"3821\">responsabilidades<\/strong> y <strong data-nodeid=\"3822\">colaboradores<\/strong> a cada clase.<\/p>\n<h3 data-nodeid=\"3414\">\ud83d\udcd8\u00a0<strong data-nodeid=\"3827\">Clase: Libro<\/strong><\/h3>\n<table data-nodeid=\"3416\">\n<thead data-nodeid=\"3417\">\n<tr data-nodeid=\"3418\">\n<th data-nodeid=\"3420\">Responsabilidades<\/th>\n<th data-nodeid=\"3421\">Colaboradores<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"3424\">\n<tr data-nodeid=\"3425\">\n<td data-nodeid=\"3426\">Saber su t\u00edtulo<\/td>\n<td data-nodeid=\"3427\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3428\">\n<td data-nodeid=\"3429\">Saber su autor<\/td>\n<td data-nodeid=\"3430\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3431\">\n<td data-nodeid=\"3432\">Saber su ISBN<\/td>\n<td data-nodeid=\"3433\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3434\">\n<td data-nodeid=\"3435\">Saber si actualmente est\u00e1 disponible<\/td>\n<td data-nodeid=\"3436\">Prestamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3437\">\n<td data-nodeid=\"3438\">Ser prestado<\/td>\n<td data-nodeid=\"3439\">Prestamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3440\">\n<td data-nodeid=\"3441\">Ser devuelto<\/td>\n<td data-nodeid=\"3442\">Prestamo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote data-nodeid=\"3443\">\n<p data-nodeid=\"3444\">\ud83d\udcac\u00a0<em data-nodeid=\"3846\">El libro no &#8216;sabe&#8217; qui\u00e9n lo ha tomado prestado \u2014 solo sabe si tiene un pr\u00e9stamo activo.<\/em><\/p>\n<\/blockquote>\n<hr data-nodeid=\"3445\"\/>\n<h3 data-nodeid=\"3446\">\ud83d\udc64\u00a0<strong data-nodeid=\"3851\">Clase: Miembro<\/strong><\/h3>\n<table data-nodeid=\"3448\">\n<thead data-nodeid=\"3449\">\n<tr data-nodeid=\"3450\">\n<th data-nodeid=\"3452\">Responsabilidades<\/th>\n<th data-nodeid=\"3453\">Colaboradores<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"3456\">\n<tr data-nodeid=\"3457\">\n<td data-nodeid=\"3458\">Conocer el nombre<\/td>\n<td data-nodeid=\"3459\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3460\">\n<td data-nodeid=\"3461\">Conocer el ID del miembro<\/td>\n<td data-nodeid=\"3462\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3463\">\n<td data-nodeid=\"3464\">Conocer cu\u00e1ntos libros est\u00e1n actualmente prestados<\/td>\n<td data-nodeid=\"3465\">Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3466\">\n<td data-nodeid=\"3467\">Prestar un libro (si est\u00e1 permitido)<\/td>\n<td data-nodeid=\"3468\">Libro, Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3469\">\n<td data-nodeid=\"3470\">Devolver un libro<\/td>\n<td data-nodeid=\"3471\">Libro, Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3472\">\n<td data-nodeid=\"3473\">Verificar si se ha alcanzado el l\u00edmite de pr\u00e9stamo<\/td>\n<td data-nodeid=\"3474\">Pr\u00e9stamo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote data-nodeid=\"3475\">\n<p data-nodeid=\"3476\">\ud83d\udcac\u00a0<em data-nodeid=\"3870\">El miembro gestiona su propio comportamiento de pr\u00e9stamo y verifica los l\u00edmites a trav\u00e9s de la clase Pr\u00e9stamo.<\/em><\/p>\n<\/blockquote>\n<hr data-nodeid=\"3477\"\/>\n<h3 data-nodeid=\"3478\">\ud83d\udcc5\u00a0<strong data-nodeid=\"3875\">Clase: Pr\u00e9stamo<\/strong><\/h3>\n<table data-nodeid=\"3480\">\n<thead data-nodeid=\"3481\">\n<tr data-nodeid=\"3482\">\n<th data-nodeid=\"3484\">Responsabilidades<\/th>\n<th data-nodeid=\"3485\">Colaboradores<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"3488\">\n<tr data-nodeid=\"3489\">\n<td data-nodeid=\"3490\">Registrar qu\u00e9 libro fue prestado<\/td>\n<td data-nodeid=\"3491\">Libro<\/td>\n<\/tr>\n<tr data-nodeid=\"3492\">\n<td data-nodeid=\"3493\">Registrar qu\u00e9 miembro lo prest\u00f3<\/td>\n<td data-nodeid=\"3494\">Miembro<\/td>\n<\/tr>\n<tr data-nodeid=\"3495\">\n<td data-nodeid=\"3496\">Registrar la fecha de pr\u00e9stamo<\/td>\n<td data-nodeid=\"3497\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3498\">\n<td data-nodeid=\"3499\">Calcular la fecha de vencimiento<\/td>\n<td data-nodeid=\"3500\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3501\">\n<td data-nodeid=\"3502\">Saber si est\u00e1 vencido<\/td>\n<td data-nodeid=\"3503\">\u2014<\/td>\n<\/tr>\n<tr data-nodeid=\"3504\">\n<td data-nodeid=\"3505\">Marcar como devuelto<\/td>\n<td data-nodeid=\"3506\">Libro<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote data-nodeid=\"3507\">\n<p data-nodeid=\"3508\">\ud83d\udcac\u00a0<em data-nodeid=\"3894\">La clase Pr\u00e9stamo contiene la relaci\u00f3n entre un Miembro y un Libro, incluyendo detalles de tiempo.<\/em><\/p>\n<\/blockquote>\n<hr data-nodeid=\"3509\"\/>\n<h2 data-nodeid=\"3510\">\ud83c\udfad Paso 3: Representa un escenario \u2014 \u201cPedir prestado un libro\u201d<\/h2>\n<p data-nodeid=\"3511\">Ahora viene la parte divertida:\u00a0<strong data-nodeid=\"3904\">representaci\u00f3n de roles<\/strong>el escenario como si las cartas fueran objetos reales.<\/p>\n<h3 data-nodeid=\"3512\">\ud83d\udcd6 Escenario: Curtis quiere pedir prestado\u00a0<em data-nodeid=\"3912\">\u201cC\u00f3digo limpio\u201d<\/em>, que est\u00e1 disponible.<\/h3>\n<p data-nodeid=\"3513\">Vamos a recorrerlo paso a paso:<\/p>\n<ol data-nodeid=\"3514\">\n<li data-nodeid=\"3515\">\n<p data-nodeid=\"3516\"><strong data-nodeid=\"3947\">Miembro (Curtis)<\/strong>dice:<em data-nodeid=\"3948\">\u201cQuiero pedir prestado \u2018C\u00f3digo limpio\u2019.\u201d<\/em><br \/>\n\u2192 Primera verificaci\u00f3n:\u00a0<em data-nodeid=\"3949\">\u201c\u00bfTengo menos de 3 libros ya?\u201d<\/em><br \/>\n\u2192 Pregunta\u00a0<strong data-nodeid=\"3950\">Pr\u00e9stamo<\/strong>:\u00a0<em data-nodeid=\"3951\">\u201c\u00bfCu\u00e1ntos pr\u00e9stamos activos tengo?\u201d<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3517\">\n<p data-nodeid=\"3518\"><strong data-nodeid=\"3961\">Pr\u00e9stamo<\/strong>responde:<em data-nodeid=\"3962\">\u201cTienes 1 pr\u00e9stamo activo \u2192 puedes pedir prestado.\u201d<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3519\">\n<p data-nodeid=\"3520\"><strong data-nodeid=\"3988\">Miembro<\/strong>busca el libro:<em data-nodeid=\"3989\">\u201c\u00bfD\u00f3nde est\u00e1 \u2018C\u00f3digo limpio\u2019?\u201d<\/em><br \/>\n\u2192 Pregunta\u00a0<strong data-nodeid=\"3990\">Libro<\/strong>:\u00a0<em data-nodeid=\"3991\">\u00bfEst\u00e1s disponible?<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3521\">\n<p data-nodeid=\"3522\"><strong data-nodeid=\"4013\">Libro<\/strong>\u00a0verifica:\u00a0<em data-nodeid=\"4014\">\u00bfTengo un pr\u00e9stamo activo (no devuelto)?<\/em><br \/>\n\u2192 Pregunta\u00a0<strong data-nodeid=\"4015\">Pr\u00e9stamo<\/strong>:\u00a0<em data-nodeid=\"4016\">\u00bfHay un pr\u00e9stamo activo para m\u00ed?<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3523\">\n<p data-nodeid=\"3524\"><strong data-nodeid=\"4029\">Pr\u00e9stamo<\/strong>\u00a0responde:\u00a0<em data-nodeid=\"4030\">\u00a1No \u2014 est\u00e1s disponible!<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3525\">\n<p data-nodeid=\"3526\"><strong data-nodeid=\"4039\">Miembro<\/strong>\u00a0crea un nuevo\u00a0<strong data-nodeid=\"4040\">Pr\u00e9stamo<\/strong>\u00a0objeto:<\/p>\n<ul data-nodeid=\"3527\">\n<li data-nodeid=\"3528\">\n<p data-nodeid=\"3529\">Enlaza con este\u00a0<strong data-nodeid=\"4049\">Libro<\/strong>\u00a0y\u00a0<strong data-nodeid=\"4050\">Miembro<\/strong><\/p>\n<\/li>\n<li data-nodeid=\"3530\">\n<p data-nodeid=\"3531\">Establece la fecha de pr\u00e9stamo = hoy<\/p>\n<\/li>\n<li data-nodeid=\"3532\">\n<p data-nodeid=\"3533\">Calcula la fecha de devoluci\u00f3n = hoy + 14 d\u00edas<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li data-nodeid=\"3534\">\n<p data-nodeid=\"3535\"><strong data-nodeid=\"4062\">Libro<\/strong>\u00a0se actualiza:\u00a0<em data-nodeid=\"4063\">Ahora tengo un pr\u00e9stamo activo \u2192 ya no estoy disponible.<\/em><\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"3536\">\u2705\u00a0<strong data-nodeid=\"4069\">Resultado<\/strong>: El proceso de pr\u00e9stamo se siente natural, distribuido y l\u00f3gico.<\/p>\n<hr data-nodeid=\"3537\"\/>\n<h2 data-nodeid=\"3538\">\ud83d\udd04 Paso 4: Otro escenario \u2014 \u201cDevolver un libro\u201d<\/h2>\n<h3 data-nodeid=\"3539\">\ud83d\udcd6 Escenario: Curtis devuelve\u00a0<em data-nodeid=\"4080\">\u201cC\u00f3digo limpio\u201d<\/em><\/h3>\n<ol data-nodeid=\"3540\">\n<li data-nodeid=\"3541\">\n<p data-nodeid=\"3542\"><strong data-nodeid=\"4094\">Miembro (Curtis)<\/strong>\u00a0dice:\u00a0<em data-nodeid=\"4095\">\u201cQuiero devolver \u2018C\u00f3digo limpio\u2019.\u201d<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3543\">\n<p data-nodeid=\"3544\"><strong data-nodeid=\"4108\">Miembro<\/strong>\u00a0encuentra el correspondiente\u00a0<strong data-nodeid=\"4109\">Pr\u00e9stamo<\/strong>\u00a0(probablemente mediante una consulta a\u00a0<strong data-nodeid=\"4110\">Pr\u00e9stamo<\/strong>\u00a0con el libro y el miembro).<\/p>\n<\/li>\n<li data-nodeid=\"3545\">\n<p data-nodeid=\"3546\"><strong data-nodeid=\"4119\">Pr\u00e9stamo<\/strong>\u00a0se marca a s\u00ed mismo como\u00a0<em data-nodeid=\"4120\">devuelto<\/em>.<\/p>\n<\/li>\n<li data-nodeid=\"3547\">\n<p data-nodeid=\"3548\"><strong data-nodeid=\"4134\">Pr\u00e9stamo<\/strong>\u00a0dice\u00a0<strong data-nodeid=\"4135\">Libro<\/strong>:\u00a0<em data-nodeid=\"4136\">\u201cAhora est\u00e1s disponible nuevamente.\u201d<\/em><\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"3549\">\u2705\u00a0<strong data-nodeid=\"4142\">Limpio, claro y cohesivo<\/strong>\u00a0\u2014 ninguna clase est\u00e1 realizando trabajo fuera de su responsabilidad.<\/p>\n<hr data-nodeid=\"3550\"\/>\n<h2 data-nodeid=\"3551\">\ud83d\udd0d Paso 5: Refinar y agregar clases faltantes<\/h2>\n<p data-nodeid=\"3552\">Despu\u00e9s de representar roles, notamos una\u00a0<strong data-nodeid=\"4151\">brecha<\/strong>:<\/p>\n<blockquote data-nodeid=\"3553\">\n<p data-nodeid=\"3554\">\u2753\u00a0<em data-nodeid=\"4156\">\u00bfQui\u00e9n encuentra el libro por t\u00edtulo?<\/em><\/p>\n<\/blockquote>\n<p data-nodeid=\"3555\">Actualmente,\u00a0<strong data-nodeid=\"4178\">Miembro<\/strong>\u00a0est\u00e1 preguntando\u00a0<strong data-nodeid=\"4179\">Libro<\/strong>\u00a0directamente \u2014 pero\u00a0<strong data-nodeid=\"4180\">Libro<\/strong>\u00a0no sabe c\u00f3mo buscar!<br \/>\nNecesitamos un\u00a0<strong data-nodeid=\"4181\">coordinador central<\/strong>.<\/p>\n<h3 data-nodeid=\"3556\">\u2795 Nueva clase:\u00a0<strong data-nodeid=\"4186\">Biblioteca<\/strong><\/h3>\n<table data-nodeid=\"3558\">\n<thead data-nodeid=\"3559\">\n<tr data-nodeid=\"3560\">\n<th data-nodeid=\"3562\">Responsabilidades<\/th>\n<th data-nodeid=\"3563\">Colaboradores<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"3566\">\n<tr data-nodeid=\"3567\">\n<td data-nodeid=\"3568\">Agregar un nuevo libro a la colecci\u00f3n<\/td>\n<td data-nodeid=\"3569\">Libro<\/td>\n<\/tr>\n<tr data-nodeid=\"3570\">\n<td data-nodeid=\"3571\">Buscar libro por t\u00edtulo<\/td>\n<td data-nodeid=\"3572\">Libro<\/td>\n<\/tr>\n<tr data-nodeid=\"3573\">\n<td data-nodeid=\"3574\">Registrar un nuevo miembro<\/td>\n<td data-nodeid=\"3575\">Miembro<\/td>\n<\/tr>\n<tr data-nodeid=\"3576\">\n<td data-nodeid=\"3577\">Procesar solicitud de pr\u00e9stamo de libro<\/td>\n<td data-nodeid=\"3578\">Miembro, Libro, Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3579\">\n<td data-nodeid=\"3580\">Procesar devoluci\u00f3n de libro<\/td>\n<td data-nodeid=\"3581\">Miembro, Libro, Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3582\">\n<td data-nodeid=\"3583\">Conocer todos los pr\u00e9stamos actuales<\/td>\n<td data-nodeid=\"3584\">Pr\u00e9stamo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote data-nodeid=\"3585\">\n<p data-nodeid=\"3586\">\ud83d\udcac\u00a0<em data-nodeid=\"4205\">La Biblioteca act\u00faa como el centro principal \u2014 conoce todos los libros, todos los miembros y todos los pr\u00e9stamos.<\/em><\/p>\n<\/blockquote>\n<hr data-nodeid=\"3587\"\/>\n<h3 data-nodeid=\"3588\">\u2728 Flujo actualizado: \u201cPedir un libro\u201d con Biblioteca<\/h3>\n<ol data-nodeid=\"3589\">\n<li data-nodeid=\"3590\">\n<p data-nodeid=\"3591\"><strong data-nodeid=\"4228\">Miembro<\/strong>\u00a0\u2192\u00a0<strong data-nodeid=\"4229\">Biblioteca<\/strong>:\u00a0<em data-nodeid=\"4230\">\u201cEncuentra el libro titulado \u2018C\u00f3digo limpio\u2019.\u201d<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3592\">\n<p data-nodeid=\"3593\"><strong data-nodeid=\"4241\">Biblioteca<\/strong>\u00a0busca en su colecci\u00f3n y devuelve el\u00a0<strong data-nodeid=\"4242\">Libro<\/strong>\u00a0(o\u00a0<code data-backticks=\"1\" data-nodeid=\"4239\">nulo<\/code>\u00a0si no se encuentra).<\/p>\n<\/li>\n<li data-nodeid=\"3594\">\n<p data-nodeid=\"3595\"><strong data-nodeid=\"4256\">Miembro<\/strong>\u00a0ahora sabe que el libro existe \u2192 pregunta\u00a0<strong data-nodeid=\"4257\">Biblioteca<\/strong>:\u00a0<em data-nodeid=\"4258\">\u201c\u00bfPuedo tomar prestado este libro?\u201d<\/em><\/p>\n<\/li>\n<li data-nodeid=\"3596\">\n<p data-nodeid=\"3597\"><strong data-nodeid=\"4263\">Biblioteca<\/strong>\u00a0verifica:<\/p>\n<ul data-nodeid=\"3598\">\n<li data-nodeid=\"3599\">\n<p data-nodeid=\"3600\">\u00bfEst\u00e1 disponible el libro? (a trav\u00e9s de\u00a0<code data-backticks=\"1\" data-nodeid=\"4265\">Libro.est\u00e1Disponible()<\/code>)<\/p>\n<\/li>\n<li data-nodeid=\"3601\">\n<p data-nodeid=\"3602\">\u00bfEl miembro est\u00e1 dentro del l\u00edmite de pr\u00e9stamos? (a trav\u00e9s de\u00a0<code data-backticks=\"1\" data-nodeid=\"4268\">Prestamo.contarPrestamosActivos(miembro)<\/code>)<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li data-nodeid=\"3603\">\n<p data-nodeid=\"3604\">Si es as\u00ed \u2192\u00a0<strong data-nodeid=\"4287\">Biblioteca<\/strong>\u00a0crea un nuevo\u00a0<strong data-nodeid=\"4288\">Prestamo<\/strong>\u00a0y actualiza tanto\u00a0<strong data-nodeid=\"4289\">Libro<\/strong>\u00a0como\u00a0<strong data-nodeid=\"4290\">Prestamo<\/strong>.<\/p>\n<\/li>\n<li data-nodeid=\"3605\">\n<p data-nodeid=\"3606\"><strong data-nodeid=\"4299\">Libro<\/strong>\u00a0queda fuera de disponibilidad;\u00a0<strong data-nodeid=\"4300\">Pr\u00e9stamo<\/strong>\u00a0rastrea la relaci\u00f3n.<\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"3607\">\u2705\u00a0<strong data-nodeid=\"4310\">Ahora el flujo tiene sentido<\/strong>\u00a0\u2014 el\u00a0<strong data-nodeid=\"4311\">Biblioteca<\/strong>\u00a0gestiona la descubrimiento y coordinaci\u00f3n.<\/p>\n<hr data-nodeid=\"3608\"\/>\n<h2 data-nodeid=\"3609\">\ud83e\udde9 Resumen final de las tarjetas CRC (simplificado para principiantes)<\/h2>\n<table data-nodeid=\"3611\">\n<thead data-nodeid=\"3612\">\n<tr data-nodeid=\"3613\">\n<th data-nodeid=\"3615\">Clase<\/th>\n<th data-nodeid=\"3616\">Responsabilidades clave<\/th>\n<th data-nodeid=\"3617\">Colaboradores clave<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"3621\">\n<tr data-nodeid=\"3622\">\n<td data-nodeid=\"3623\"><strong data-nodeid=\"4319\">Biblioteca<\/strong><\/td>\n<td data-nodeid=\"3624\">Gestiona libros, miembros y pr\u00e9stamos; maneja pr\u00e9stamos\/devoluciones<\/td>\n<td data-nodeid=\"3625\">Libro, Miembro, Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3626\">\n<td data-nodeid=\"3627\"><strong data-nodeid=\"4325\">Miembro<\/strong><\/td>\n<td data-nodeid=\"3628\">Conoce la informaci\u00f3n personal; inicia el pr\u00e9stamo\/devoluci\u00f3n<\/td>\n<td data-nodeid=\"3629\">Biblioteca, Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3630\">\n<td data-nodeid=\"3631\"><strong data-nodeid=\"4331\">Libro<\/strong><\/td>\n<td data-nodeid=\"3632\">Almacena metadatos; rastrea la disponibilidad<\/td>\n<td data-nodeid=\"3633\">Biblioteca, Pr\u00e9stamo<\/td>\n<\/tr>\n<tr data-nodeid=\"3634\">\n<td data-nodeid=\"3635\"><strong data-nodeid=\"4337\">Pr\u00e9stamo<\/strong><\/td>\n<td data-nodeid=\"3636\">Rastrea el historial de pr\u00e9stamos; calcula fechas de vencimiento; gestiona el estado de devoluci\u00f3n<\/td>\n<td data-nodeid=\"3637\">Miembro, Libro, Biblioteca<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote data-nodeid=\"3638\">\n<p data-nodeid=\"3639\">\u2705\u00a0<strong data-nodeid=\"4353\">Principio de dise\u00f1o<\/strong>: Cada clase tiene\u00a0<strong data-nodeid=\"4354\">un prop\u00f3sito claro<\/strong>, y las responsabilidades son\u00a0<strong data-nodeid=\"4355\">cohesivas y bien distribuidas<\/strong>.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"3640\"\/>\n<h2 data-nodeid=\"3641\">\ud83c\udf1f \u00bfPor qu\u00e9 las tarjetas CRC funcionan tan bien (conclusiones para principiantes)?<\/h2>\n<table data-nodeid=\"3643\">\n<thead data-nodeid=\"3644\">\n<tr data-nodeid=\"3645\">\n<th data-nodeid=\"3647\">Beneficio<\/th>\n<th data-nodeid=\"3648\">Explicaci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"3651\">\n<tr data-nodeid=\"3652\">\n<td data-nodeid=\"3653\"><strong data-nodeid=\"4362\">Dise\u00f1o centrado en responsabilidades<\/strong><\/td>\n<td data-nodeid=\"3654\">Te obliga a pensar:\u00a0<em data-nodeid=\"4370\">\u201c\u00bfQu\u00e9 sabe o hace esta clase?\u201d<\/em>\u00a0en lugar de simplemente almacenar datos.<\/td>\n<\/tr>\n<tr data-nodeid=\"3655\">\n<td data-nodeid=\"3656\"><strong data-nodeid=\"4374\">Descubrimiento natural de clases faltantes<\/strong><\/td>\n<td data-nodeid=\"3657\">El juego de roles revela brechas (como la falta de<code data-backticks=\"1\" data-nodeid=\"4376\">Biblioteca<\/code>) \u2014 no se necesita adivinar.<\/td>\n<\/tr>\n<tr data-nodeid=\"3658\">\n<td data-nodeid=\"3659\"><strong data-nodeid=\"4381\">Retroalimentaci\u00f3n inmediata mediante juego de roles<\/strong><\/td>\n<td data-nodeid=\"3660\">Si un flujo se siente inc\u00f3modo, sabes que la responsabilidad est\u00e1 en el lugar equivocado.<\/td>\n<\/tr>\n<tr data-nodeid=\"3661\">\n<td data-nodeid=\"3662\"><strong data-nodeid=\"4388\">Bajo protocolo y colaborativo<\/strong><\/td>\n<td data-nodeid=\"3663\">Sin herramientas complejas \u2014 solo tarjetas de \u00edndice, notas adhesivas o una pizarra. Ideal para equipos.<\/td>\n<\/tr>\n<tr data-nodeid=\"3664\">\n<td data-nodeid=\"3665\"><strong data-nodeid=\"4393\">Conecta los requisitos con el c\u00f3digo<\/strong><\/td>\n<td data-nodeid=\"3666\">Convierte las historias de usuarios en interacciones reales entre clases.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"3667\"\/>\n<h2 data-nodeid=\"3668\">\ud83d\udee0\ufe0f Consejos r\u00e1pidos para tu primera sesi\u00f3n de CRC<\/h2>\n<ol data-nodeid=\"4729\">\n<li data-nodeid=\"4730\">\n<p data-nodeid=\"4731\"><strong data-nodeid=\"4821\">Usa tarjetas f\u00edsicas<\/strong>\u00a0(tarjetas de \u00edndice 3\u00d75 o notas adhesivas) \u2014 es m\u00e1s atractivo.<\/p>\n<\/li>\n<li data-nodeid=\"4732\">\n<p data-nodeid=\"4733\"><strong data-nodeid=\"4826\">Una clase por tarjeta<\/strong>\u00a0\u2014 mant\u00e9nlo simple.<\/p>\n<\/li>\n<li data-nodeid=\"4734\">\n<p data-nodeid=\"4735\"><strong data-nodeid=\"4831\">Escribe grande y legible<\/strong>\u00a0\u2014 otros deber\u00edan poder leerlo f\u00e1cilmente.<\/p>\n<\/li>\n<li data-nodeid=\"4736\">\n<p data-nodeid=\"4737\"><strong data-nodeid=\"4836\">Juega los roles en voz alta<\/strong>\u00a0\u2014 pasa las tarjetas como si fueran objetos reales.<\/p>\n<\/li>\n<li data-nodeid=\"4738\">\n<p data-nodeid=\"4739\"><strong data-nodeid=\"4841\">Empieza con 3\u20136 escenarios principales<\/strong>\u00a0(por ejemplo, pedir prestado, devolver, buscar).<\/p>\n<\/li>\n<li data-nodeid=\"4740\">\n<p data-nodeid=\"4741\"><strong data-nodeid=\"4850\">No busques la perfecci\u00f3n<\/strong>\u00a0\u2014 el objetivo es\u00a0<strong data-nodeid=\"4851\">iteraci\u00f3n<\/strong>, no un dise\u00f1o final. Mej\u00f3ralo conforme avances.<\/p>\n<\/li>\n<li data-nodeid=\"4742\">\n<p data-nodeid=\"4743\"><strong data-nodeid=\"4856\">Usa nombres simples y espec\u00edficos del dominio<\/strong>\u00a0\u2014 evita jerga t\u00e9cnica. Usa \u201cMiembro\u201d en lugar de \u201cPatr\u00f3n\u201d si tu equipo est\u00e1 de acuerdo.<\/p>\n<\/li>\n<li data-nodeid=\"4744\">\n<p data-nodeid=\"4745\"><strong data-nodeid=\"4861\">Invita a todos a participar<\/strong>\u00a0\u2014 incluso los no programadores pueden ayudar a detectar responsabilidades faltantes.<\/p>\n<\/li>\n<li data-nodeid=\"4746\">\n<p data-nodeid=\"4747\"><strong data-nodeid=\"4866\">Dibuja un diagrama de clases simple despu\u00e9s<\/strong>\u00a0\u2014 para visualizar las relaciones y confirmar la consistencia.<\/p>\n<\/li>\n<li data-nodeid=\"4748\">\n<p data-nodeid=\"4749\"><strong data-nodeid=\"4871\">Mant\u00e9n la diversi\u00f3n<\/strong>\u00a0\u2014 tr\u00e1talo como un juego. Cuanto m\u00e1s comprometido est\u00e9 tu equipo, mejores ser\u00e1n los resultados.<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"4750\"\/>\n<h2 data-nodeid=\"4751\">\ud83d\udd04 Pru\u00e9balo t\u00fa mismo: Pr\u00f3ximos dominios para explorar<\/h2>\n<p data-nodeid=\"4752\">Una vez que domines el sistema de biblioteca, intenta aplicar las tarjetas CRC a otros dominios amigables para principiantes:<\/p>\n<h3 data-nodeid=\"4753\">\u2615 Sistema de pedidos de cafeter\u00eda<\/h3>\n<ul data-nodeid=\"4754\">\n<li data-nodeid=\"4755\">\n<p data-nodeid=\"4756\">Clases:\u00a0<code data-backticks=\"1\" data-nodeid=\"4876\">Cliente<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4878\">Pedido<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4880\">Elemento del men\u00fa<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4882\">Barista<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4884\">Caja registradora<\/code><\/p>\n<\/li>\n<li data-nodeid=\"4757\">\n<p data-nodeid=\"4758\">Escenarios: Hacer pedido \u2192 Agregar bebida \u2192 Aplicar descuento \u2192 Pagar \u2192 Imprimir recibo<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"4759\">\ud83e\ude99 M\u00e1quina expendedora<\/h3>\n<ul data-nodeid=\"4760\">\n<li data-nodeid=\"4761\">\n<p data-nodeid=\"4762\">Clases:\u00a0<code data-backticks=\"1\" data-nodeid=\"4888\">M\u00e1quina expendedora<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4890\">Producto<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4892\">Moneda<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4894\">Distribuidor<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4896\">Calculadora de Cambio<\/code><\/p>\n<\/li>\n<li data-nodeid=\"4763\">\n<p data-nodeid=\"4764\">Escenarios: Insertar moneda \u2192 Seleccionar art\u00edculo \u2192 Entregar producto \u2192 Devolver cambio<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"4765\">\ud83c\udfae Juego de Preguntas<\/h3>\n<ul data-nodeid=\"4766\">\n<li data-nodeid=\"4767\">\n<p data-nodeid=\"4768\">Clases:\u00a0<code data-backticks=\"1\" data-nodeid=\"4900\">Cuestionario<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4902\">Pregunta<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4904\">Jugador<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4906\">Seguimiento de Puntuaci\u00f3n<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4908\">Sesi\u00f3n de Juego<\/code><\/p>\n<\/li>\n<li data-nodeid=\"4769\">\n<p data-nodeid=\"4770\">Escenarios: Iniciar cuestionario \u2192 Responder pregunta \u2192 Verificar correcci\u00f3n \u2192 Mostrar puntuaci\u00f3n final<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"4771\">\ud83d\ude97 Estacionamiento<\/h3>\n<ul data-nodeid=\"4772\">\n<li data-nodeid=\"4773\">\n<p data-nodeid=\"4774\">Clases:\u00a0<code data-backticks=\"1\" data-nodeid=\"4912\">Estacionamiento<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4914\">Coche<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4916\">Lugar de estacionamiento<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4918\">Boleto<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"4920\">Carrera<\/code><\/p>\n<\/li>\n<li data-nodeid=\"4775\">\n<p data-nodeid=\"4776\">Escenarios: Entrar al garaje \u2192 Estacionar el auto \u2192 Salir \u2192 Pagar cuota \u2192 Obtener ticket<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"4777\">Cada uno de estos sistemas se basa en los mismos principios:<\/p>\n<ul data-nodeid=\"4778\">\n<li data-nodeid=\"4779\">\n<p data-nodeid=\"4780\">Identificar sustantivos \u2192 asignar responsabilidades \u2192 representar roles \u2192 perfeccionar \u2192 repetir.<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"4781\"\/>\n<h2 data-nodeid=\"4782\">\ud83d\udccc Pensamientos finales: Las tarjetas CRC son m\u00e1s que una t\u00e9cnica \u2014 son una mentalidad<\/h2>\n<p data-nodeid=\"4783\">El verdadero poder de las tarjetas CRC no est\u00e1 en las tarjetas en s\u00ed \u2014 est\u00e1 en el\u00a0<strong data-nodeid=\"4930\">di\u00e1logo<\/strong>que generan.<\/p>\n<p data-nodeid=\"4784\">Cuando escribes una tarjeta y dices,\u00a0<em data-nodeid=\"4940\">\u201c\u00bfQui\u00e9n hace esto?\u201d<\/em>\u00a0o\u00a0<em data-nodeid=\"4941\">\u201c\u00bfCon qui\u00e9n necesita hablar?\u201d<\/em>, ya est\u00e1s pensando como un dise\u00f1ador orientado a objetos.<\/p>\n<blockquote data-nodeid=\"4785\">\n<p data-nodeid=\"4786\">\ud83d\udd25\u00a0<strong data-nodeid=\"4947\">Consejo profesional<\/strong>: Usa tarjetas CRC durante la planificaci\u00f3n de sprints, los spikes t\u00e9cnicos o incluso en entrevistas para demostrar tu pensamiento de dise\u00f1o.<\/p>\n<\/blockquote>\n<p data-nodeid=\"4787\">No son solo para desarrolladores \u2014 son para\u00a0<strong data-nodeid=\"4953\">cualquiera<\/strong>\u00a0involucrado en la creaci\u00f3n de software: gerentes de producto, dise\u00f1adores, testers y estudiantes.<\/p>\n<hr data-nodeid=\"4788\"\/>\n<h2 data-nodeid=\"4789\">\ud83d\udcce \u00bfQuieres m\u00e1s?<\/h2>\n<p data-nodeid=\"4790\">\ud83d\udc49\u00a0<strong data-nodeid=\"4972\">Descarga una plantilla imprimible de tarjetas CRC<\/strong>\u00a0(PDF o digital) para usar en tu pr\u00f3ximo taller.<br \/>\n\ud83d\udc49\u00a0<strong data-nodeid=\"4973\">Prueba una sesi\u00f3n en vivo de CRC<\/strong>\u00a0con un compa\u00f1ero de equipo \u2014 asigna roles: \u201cT\u00fa eres el Miembro\u201d, \u201cT\u00fa eres el Libro\u201d, etc.<br \/>\n\ud83d\udc49\u00a0<strong data-nodeid=\"4974\">Comparte tus resultados<\/strong>\u00a0\u2014 publica tus tarjetas en redes sociales con #CRCcards o #OODesignJourney.<\/p>\n<hr data-nodeid=\"4791\"\/>\n<h2 data-nodeid=\"4792\">\ud83c\udfc1 Conclusi\u00f3n<\/h2>\n<p data-nodeid=\"4793\">El\u00a0<strong data-nodeid=\"4985\">Sistema de pr\u00e9stamo de libros de biblioteca<\/strong>es uno de los ejemplos m\u00e1s cl\u00e1sicos y efectivos de tarjetas CRC \u2014 no porque sea complejo, sino porque es<strong data-nodeid=\"4986\">sencillo, f\u00e1cil de relacionar y revelador<\/strong>.<\/p>\n<p data-nodeid=\"4794\">Siguiendo solo<strong data-nodeid=\"4992\">cinco pasos<\/strong>\u2014 lluvia de ideas, creaci\u00f3n de tarjetas, juego de roles, refinamiento e iteraci\u00f3n \u2014 puedes:<\/p>\n<ul data-nodeid=\"4795\">\n<li data-nodeid=\"4796\">\n<p data-nodeid=\"4797\">Descubrir clases de forma natural<\/p>\n<\/li>\n<li data-nodeid=\"4798\">\n<p data-nodeid=\"4799\">Asignar responsabilidades de forma clara<\/p>\n<\/li>\n<li data-nodeid=\"4800\">\n<p data-nodeid=\"4801\">Detectar fallos de dise\u00f1o temprano<\/p>\n<\/li>\n<li data-nodeid=\"4802\">\n<p data-nodeid=\"4803\">Construir un modelo mental compartido como equipo<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"4804\">Y lo mejor de todo: no necesitas ser un desarrollador senior para hacerlo.<br \/>\nSolo necesitas curiosidad, unas cuantas tarjetas y disposici\u00f3n para jugar.<\/p>\n<hr data-nodeid=\"4805\"\/>\n<blockquote data-nodeid=\"4806\">\n<p data-nodeid=\"4807\">\u2705\u00a0<strong data-nodeid=\"5005\">Ahora te toca a ti<\/strong>: Toma algunas notas adhesivas, elige un sistema sencillo (como una cafeter\u00eda o una m\u00e1quina expendedora) y prueba el m\u00e9todo CRC.<\/p>\n<p data-nodeid=\"4808\">\ud83d\udccc\u00a0<strong data-nodeid=\"5011\">Recuerda<\/strong>: Un buen dise\u00f1o no se trata de escribir c\u00f3digo perfecto \u2014 se trata de hacer las preguntas correctas.<\/p>\n<p data-nodeid=\"4809\">Y con las tarjetas CRC, ya est\u00e1s haci\u00e9ndolas.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"4810\"\/>\n<h3 data-nodeid=\"4811\">\ud83d\udccc Bono: Plantilla imprimible de tarjetas CRC (versi\u00f3n de texto)<\/h3>\n<pre data-nodeid=\"4812\"><code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502    [NOMBRE DE CLASE]    \u2502\r\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\r\n\u2502 Responsabilidades:  \u2502\r\n\u2502 -                  \u2502\r\n\u2502 -                  \u2502\r\n\u2502 -                  \u2502\r\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\r\n\u2502 Colaboradores:     \u2502\r\n\u2502 -                  \u2502\r\n\u2502 -                  \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n<\/code><\/pre>\n<p data-nodeid=\"4813\">Imprime esto en tarjetas de 3\u00d75 o util\u00edzalo en una herramienta digital como Miro, Figma o Google Slides.<\/p>\n<hr data-nodeid=\"4814\"\/>\n<p data-nodeid=\"4815\">\ud83d\udcda\u00a0<strong data-nodeid=\"5029\">\u00bfSiguiente paso?<\/strong><br \/>\n\u00bfQuieres una explicaci\u00f3n completa del<strong data-nodeid=\"5030\">Sistema de pedidos de cafeter\u00eda<\/strong>usando el mismo estilo CRC?<br \/>\n\ud83d\udc49 Solo di la palabra \u2014 te enviar\u00e9 el siguiente estudio de caso, paso a paso, con tarjetas, escenarios y juego de roles!<\/p>\n<p class=\"\" data-nodeid=\"4816\">\u00a1Feliz dise\u00f1o! \ud83c\udfae\ud83e\udde9\ud83d\udcbb<\/p>\n<ul>\n<li data-nodeid=\"655\"><a data-nodeid=\"684\" href=\"https:\/\/www.visual-paradigm.com\/support\/documents\/vpuserguide\/94\/1289\/6518_drawingcrcca.html\">C\u00f3mo dibujar tarjetas CRC en Visual Paradigm<\/a>: Esta gu\u00eda paso a paso proporciona instrucciones sobre c\u00f3mo crear tarjetas CRC utilizando las herramientas dedicadas de diagramaci\u00f3n del software.<\/li>\n<li data-nodeid=\"657\"><a data-nodeid=\"698\" href=\"https:\/\/www.visual-paradigm.com\/support\/documents\/vpuserguide\/94\/1289_crccarddiagr.html\">Comprender los diagramas de tarjetas CRC en Visual Paradigm<\/a>: Una visi\u00f3n general que explica c\u00f3mo se utilizan estos diagramas para modelar sistemas orientados a objetos y sus interacciones.<\/li>\n<li data-nodeid=\"659\"><a data-nodeid=\"710\" href=\"https:\/\/circle.visual-paradigm.com\/docs\/uml-and-sysml\/15-crc-diagram\/how-to-create-crc-card-diagram\/\">C\u00f3mo crear un diagrama de tarjetas CRC en Visual Paradigm<\/a>: Un tutorial detallado encontrado en el C\u00edrculo de la Comunidad que cubre la creaci\u00f3n y personalizaci\u00f3n de diagramas CRC.<\/li>\n<li data-nodeid=\"661\"><a data-nodeid=\"722\" href=\"https:\/\/circle.visual-paradigm.com\/docs\/uml-and-sysml\/15-crc-diagram\/\">Introducci\u00f3n a los diagramas CRC en Visual Paradigm<\/a>: Una gu\u00eda completa centrada en el uso de diagramas CRC para el dise\u00f1o orientado a objetos y la modelizaci\u00f3n m\u00e1s amplia de sistemas.<\/li>\n<li data-nodeid=\"663\"><a data-nodeid=\"734\" href=\"https:\/\/forums.visual-paradigm.com\/t\/how-can-i-generate-crc-cards-using-class-diagram\/8733\">Generar tarjetas CRC a partir de diagramas de clases<\/a>: Este debate comunitario explora m\u00e9todos para aprovechar los diagramas de clases existentes para generar tarjetas autom\u00e1ticamente mediante ingenier\u00eda inversa.<\/li>\n<li data-nodeid=\"665\"><a data-nodeid=\"746\" href=\"https:\/\/forums.visual-paradigm.com\/t\/creating-crc-card-based-on-class-or-visa-versa\/12361\">Sincronizar tarjetas CRC con diagramas de clases<\/a>: Un recurso t\u00e9cnico que discute la modelizaci\u00f3n bidireccional para garantizar la consistencia del dise\u00f1o entre las tarjetas y los modelos de clases.<\/li>\n<li data-nodeid=\"667\"><a data-nodeid=\"758\" href=\"https:\/\/circle.visual-paradigm.com\/docs\/uml-and-sysml\/15-crc-diagram\/?format=pdf\">Introducci\u00f3n a los diagramas de tarjetas CRC (gu\u00eda PDF)<\/a>: Un recurso t\u00e9cnico descargable que explica los conceptos fundamentales y aplicaciones de las tarjetas CRC en el an\u00e1lisis de sistemas.<\/li>\n<li data-nodeid=\"669\"><a data-nodeid=\"770\" href=\"https:\/\/forums.visual-paradigm.com\/t\/link-between-crc-and-class\/17656\">Establecer enlaces entre tarjetas CRC y diagramas de clases<\/a>: Este art\u00edculo destaca t\u00e9cnicas para mantener la trazabilidad y el enlace entre diferentes niveles de modelado.<\/li>\n<li data-nodeid=\"671\"><a data-nodeid=\"782\" href=\"https:\/\/www.visual-paradigm.com\/VPGallery\/capturing\/CRCCard.html\">Plantilla de tarjetas CRC en la galer\u00eda de Visual Paradigm<\/a>: Un recurso que presenta una plantilla descargable dise\u00f1ada para apoyar el dise\u00f1o orientado a objetos en etapas tempranas.<\/li>\n<li data-nodeid=\"673\"><a data-nodeid=\"794\" href=\"https:\/\/forums.visual-paradigm.com\/t\/crc-cards-moving-from-diagram-to-diagram\/10242\">Mover tarjetas CRC entre diagramas<\/a>: Una gu\u00eda que detalla c\u00f3mo transferir tarjetas entre diferentes diagramas mientras se mantiene la consistencia de los datos.<\/li>\n<\/ul>\n<p class=\"\" data-nodeid=\"4816\">\n","protected":false},"excerpt":{"rendered":"<p>\u201cLa mejor manera de aprender el dise\u00f1o orientado a objetos no es memorizando patrones \u2014 es interpretando los roles.\u201d En<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-10240","post","type-post","status-publish","format-standard","hentry","category-software-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes - Cibermedio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes - Cibermedio\" \/>\n<meta property=\"og:description\" content=\"\u201cLa mejor manera de aprender el dise\u00f1o orientado a objetos no es memorizando patrones \u2014 es interpretando los roles.\u201d En\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/\" \/>\n<meta property=\"og:site_name\" content=\"Cibermedio\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-21T03:51:04+00:00\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/\"},\"author\":{\"name\":\"curtis\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"headline\":\"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes\",\"datePublished\":\"2026-02-21T03:51:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/\"},\"wordCount\":2194,\"articleSection\":[\"Software Engineering\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/\",\"url\":\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/\",\"name\":\"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes - Cibermedio\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/#website\"},\"datePublished\":\"2026-02-21T03:51:04+00:00\",\"author\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.cybermedian.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#website\",\"url\":\"https:\/\/www.cybermedian.com\/es\/\",\"name\":\"Cibermedio\",\"description\":\"Aprendiendo una cosa nueva todos los d\u00edas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.cybermedian.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"caption\":\"curtis\"},\"url\":\"https:\/\/www.cybermedian.com\/es\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes - Cibermedio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/","og_locale":"es_ES","og_type":"article","og_title":"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes - Cibermedio","og_description":"\u201cLa mejor manera de aprender el dise\u00f1o orientado a objetos no es memorizando patrones \u2014 es interpretando los roles.\u201d En","og_url":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/","og_site_name":"Cibermedio","article_published_time":"2026-02-21T03:51:04+00:00","author":"curtis","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"curtis","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/#article","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/"},"author":{"name":"curtis","@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"headline":"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes","datePublished":"2026-02-21T03:51:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/"},"wordCount":2194,"articleSection":["Software Engineering"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/","url":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/","name":"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes - Cibermedio","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/es\/#website"},"datePublished":"2026-02-21T03:51:04+00:00","author":{"@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"breadcrumb":{"@id":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.cybermedian.com\/es\/mastering-object-oriented-design-with-crc-cards-a-beginner-friendly-case-study\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cybermedian.com\/es\/"},{"@type":"ListItem","position":2,"name":"Dominar el dise\u00f1o orientado a objetos con tarjetas CRC: Un estudio de caso amigable para principiantes"}]},{"@type":"WebSite","@id":"https:\/\/www.cybermedian.com\/es\/#website","url":"https:\/\/www.cybermedian.com\/es\/","name":"Cibermedio","description":"Aprendiendo una cosa nueva todos los d\u00edas","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cybermedian.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d","name":"curtis","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","caption":"curtis"},"url":"https:\/\/www.cybermedian.com\/es\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/posts\/10240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/comments?post=10240"}],"version-history":[{"count":0,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/posts\/10240\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/media?parent=10240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/categories?post=10240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/tags?post=10240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}