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

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

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

Saved successfully!

Ooh no, something went wrong!