Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 23 — #61<br />
✐<br />
1.9. Análisis y diseño<br />
al fr<strong>en</strong>te de un equipo, que no había construido un proyecto POO antes, y dibujando<br />
objetos <strong>en</strong> un pizarra blanca. Hablábamos sobre cómo los objetos deberían comunicarse<br />
unos con otros, y borrábamos algunos de ellos para reemplazarlos por otros<br />
objetos. Efectivam<strong>en</strong>te, yo gestionaba todas las«tarjetas CRC» <strong>en</strong> la pizarra. Realm<strong>en</strong>te,<br />
el equipo (que conocía lo que el proyecto se suponía t<strong>en</strong>ía que hacer) creó<br />
el diseño; ellos «poseían» el diseño <strong>en</strong> lugar de t<strong>en</strong>er que dárselo. Todo lo que yo<br />
hacía era guiar el proceso haci<strong>en</strong>do las preguntas correctas, poni<strong>en</strong>do a prueba los<br />
suposiciones, y llevando la retroalim<strong>en</strong>tación del equipo para modificar esas suposiciones.<br />
La verdadera belleza del proceso era que el equipo apr<strong>en</strong>día cómo hacer<br />
diseños ori<strong>en</strong>tado a objetos no revisando ejemplos abstractos, sino trabajando sobre<br />
un diseño que era más interesante para ellos <strong>en</strong> ese mom<strong>en</strong>to: los suyos.<br />
Una vez que t<strong>en</strong>ga con una serie de tarjetas CRC, quizá quiera crear una descripción<br />
más formal de su diseño usando UML 12 . No necesita usar UML, pero puede<br />
servirle de ayuda, especialm<strong>en</strong>te si quiere poner un diagrama <strong>en</strong> la pared para que<br />
todo el mundo lo t<strong>en</strong>ga <strong>en</strong> cu<strong>en</strong>ta, lo cual es una bu<strong>en</strong>a idea. Una alternativa a UML<br />
es una descripción textual de los objetos y sus interfaces, o, dep<strong>en</strong>di<strong>en</strong>do de su l<strong>en</strong>guaje<br />
de programación, el propio código 13 .<br />
UML también proporciona una notación de diagramas adicional para describir<br />
el modelo dinámico de su sistema. Eso es útil <strong>en</strong> situaciones <strong>en</strong> las que las transiciones<br />
de estado de un sistema o subsistema son bastante más dominantes de lo que<br />
necesitan sus propios diagramas (como <strong>en</strong> un sistema de control). También puede<br />
necesitar describir las estructuras de datos, para sistemas o subsistemas <strong>en</strong> los que<br />
los propios datos son un factor dominante (como una base de datos).<br />
Sabrá qué está haci<strong>en</strong>do con la fase 2 cuando haya descrito los objetos y sus interfaces.<br />
Bi<strong>en</strong>, <strong>en</strong> muchos de ellos hay algunos que no se pued<strong>en</strong> conocer hasta la<br />
fase 3. Pero está bi<strong>en</strong>. Todo lo que le preocupa es que ev<strong>en</strong>tualm<strong>en</strong>te descubra todo<br />
sobre sus objetos. Es bu<strong>en</strong>o descubrirlos pronto pero la POO proporciona sufici<strong>en</strong>te<br />
estructura de modo que no es grave si los descubre más tarde. De hecho, el diseño<br />
de un objeto suele ocurrir <strong>en</strong> cinco etapas, durante todo el proceso de desarrollo del<br />
programa.<br />
Las cinco etapas del diseño de objetos<br />
La vida del diseño de un objeto no se limita a la escritura del programa. En cambio,<br />
el diseño de un objeto ocurre <strong>en</strong> una secu<strong>en</strong>cia de etapas. Es útil t<strong>en</strong>er esta perspectiva<br />
porque no debería esperar alcanzar la perfección <strong>en</strong>seguida; <strong>en</strong> lugar de eso,<br />
se dará cu<strong>en</strong>ta que <strong>en</strong>t<strong>en</strong>der lo que hace un objeto y a qué se debería que ocurre con<br />
el tiempo. Esta vista también se aplica al diseño de varios tipos de programas; el patrón<br />
para un tipo particular de programas surge a fuerza de pelearse una y otra vez<br />
con ese problema (los Patrones de Diseño se desarrollan <strong>en</strong> el Volum<strong>en</strong> 2). Los objetos,<br />
también, ti<strong>en</strong><strong>en</strong> sus patrones que surg<strong>en</strong> del <strong>en</strong>t<strong>en</strong>dimi<strong>en</strong>to, uso y reutilización.<br />
1. Descubrimi<strong>en</strong>to de objetos. Esta etapa ocurre durante el análisis inicial de un<br />
programa. Los objetos pued<strong>en</strong> descubrirse vi<strong>en</strong>do los factores externos y los<br />
límites, duplicación de elem<strong>en</strong>tos <strong>en</strong> el sistema, y las unidades conceptuales<br />
más pequeñas. Algunos objetos son obvios si se dispone de un conjunto de<br />
librerías de clases. Las partes comunes <strong>en</strong>tre clases pued<strong>en</strong> sugerir clases base<br />
y her<strong>en</strong>cia que pued<strong>en</strong> aparecer pronto, o más tarde <strong>en</strong> el proceso de diseño.<br />
12 Para novatos, recomi<strong>en</strong>do el m<strong>en</strong>cionado UML Distilled.<br />
13 Python (www.python.org) suele utilizarse como «pseudocódigo ejecutable».<br />
23<br />
✐<br />
✐<br />
✐<br />
✐