13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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 />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!