Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 22 — #60<br />
✐<br />
Capítulo 1. Introducción a los Objetos<br />
nales 11 . Sin embargo, usted quiere explicarlo, y a pesar de quejas y manipulaciones<br />
que ocurr<strong>en</strong> cuando publique la estimación, parece que esta regla funciona.<br />
1.9.3. Fase 2: ¿Cómo podemos construirlo<br />
En esta fase debe aparecer un diseño que describa qué clases hay y cómo interactúan.<br />
Una técnica excel<strong>en</strong>te para determinar clases es la tarjeta Clase-Responsabilidad-<br />
Colaboración (Class-Responsibility-Collaboration) o CRC. Parte del valor de esta herrami<strong>en</strong>ta<br />
es que es baja-tecnología: empieza con una colección de 3 a 5 tarjeta <strong>en</strong> blanco,<br />
y se escribe sobre ellas. Cada tarjeta repres<strong>en</strong>ta una única clase, y <strong>en</strong> ella se escribe:<br />
1. El nombre de la clase. Es importante que el nombre refleje la es<strong>en</strong>cia de lo que<br />
hace la clase, así todo ti<strong>en</strong>e s<strong>en</strong>tido con un simple vistazo.<br />
2. Las «responsabilidades» de la clase: qué debe hacer. Típicam<strong>en</strong>te se puede resumir<br />
por la misma declaración de las funciones miembro o métodos (ya que<br />
esos nombres pued<strong>en</strong> ser descritos <strong>en</strong> un bu<strong>en</strong> diseño), pero no descarte otras<br />
notas. Si necesita hacer una selección previa, mire el problema desde un punto<br />
de vista de programador perezoso: ¿Qué objetos quiere que aparezcan por arte<br />
de magia para resolver su problema<br />
3. Las «colaboraciones» de la clase: ¿qué otras clases interactúan con ésta «Interacción»<br />
es un término amplio a propósito; puede significar agregación o simplem<strong>en</strong>te<br />
que algún otro objeto que lleva a cabo servicios para un objeto de la<br />
clase. Las colaboraciones deberían considerar también la audi<strong>en</strong>cia para esta<br />
clase. Por ejemplo, si crea una clase Petardo, ¿quién va a observarlo, un Q-<br />
uímico o un Espectador El primero puede querer saber qué compon<strong>en</strong>tes<br />
químicos se han usado <strong>en</strong> su construcción, y el último responderá a los colores<br />
y figuras que aparezcan cuando explote.<br />
Puede creer que las fichas pued<strong>en</strong> ser más grandes por toda la información que<br />
pondrá <strong>en</strong> ellas, pero son pequeñas a propósito, no sólo para que las clases se mant<strong>en</strong>gan<br />
pequeñas también para evitar t<strong>en</strong>er que manejar demasiados detalles demasiado<br />
pronto. Si no puede apuntar todo lo que necesita saber sobre una clase <strong>en</strong> una<br />
ficha pequeña, la clase es demasiado compleja (a está poni<strong>en</strong>do demasiados detalles,<br />
o debería crear más de una clase). La clase ideal se <strong>en</strong>ti<strong>en</strong>de con un vistazo. La idea<br />
de las fichas CRC es ayudarle a realizar un acercami<strong>en</strong>to con un primer corte del<br />
diseño y que pueda obt<strong>en</strong>er una visión global y después refinar su diseño.<br />
Uno de los mayores b<strong>en</strong>eficios de las tarjetas CRC es la comunicación. Se hace<br />
mejor <strong>en</strong> tiempo-real, <strong>en</strong> grupo, sin computadores. Cada persona es responsable de<br />
varias clases (que al principio no ti<strong>en</strong><strong>en</strong> nombres ni otra información). Haga una simulación<br />
<strong>en</strong> vivo resolvi<strong>en</strong>do un esc<strong>en</strong>ario cada vez, decidi<strong>en</strong>do qué m<strong>en</strong>sajes <strong>en</strong>vía<br />
a varios objetos para satisfacer las necesidades de cada esc<strong>en</strong>ario. Al pasar por este<br />
proceso, descubrirá las clases que necesita con sus responsabilidades y colaboraciones,<br />
rell<strong>en</strong>e las tarjetas del mismo modo. Cuando haya pasado por todos los casos<br />
de uso, debería disponer de un primer corte bastante completo su diseño.<br />
Antes de empezar a usar fichas CRC, las mayoría de las experi<strong>en</strong>cias de consultoría<br />
exitosas las tuve cuando me <strong>en</strong>fr<strong>en</strong>taba con un diseño inicial complicado estando<br />
11 Últimam<strong>en</strong>te mi idea respeto a esto ha cambiado. Doblar y añadir un 10% puede darle una estimación<br />
bastante acertada (asumi<strong>en</strong>do que no hay demasiados factores comodín), pero debe trabajar con<br />
bastante dilig<strong>en</strong>cia para acabar a tiempo. Si realm<strong>en</strong>te quiere tiempo para hacerlo de forma elegante y<br />
estar orgulloso del proceso, el multiplicador correcto es más bi<strong>en</strong> tres o cuatro veces, creo yo.<br />
22<br />
✐<br />
✐<br />
✐<br />
✐