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 7 — #45<br />

✐<br />

1.5. Her<strong>en</strong>cia: reutilización de interfaces<br />

po de ejecución, para cambiar dinámicam<strong>en</strong>te el comportami<strong>en</strong>to de su programa.<br />

La her<strong>en</strong>cia, descrita más adelante, no ti<strong>en</strong>e esta flexibilidad dado que el compilador<br />

debe imponer restricciones durante la compilación <strong>en</strong> clases creadas con her<strong>en</strong>cia.<br />

Como la her<strong>en</strong>cia es tan importante <strong>en</strong> la programación ori<strong>en</strong>tada a objetos, se<br />

suele <strong>en</strong>fatizar mucho su uso, y puede que el programador novel t<strong>en</strong>ga la idea de<br />

que la her<strong>en</strong>cia se debe usar <strong>en</strong> todas partes. Eso puede dar como resultado diseños<br />

torpes y demasiado complicados. En lugar de eso, debería considerar primero la<br />

composición cuando t<strong>en</strong>ga que crear nuevas clases, ya que es más simple y flexible.<br />

Si acepta este <strong>en</strong>foque, sus diseños serán más limpios. Una vez que t<strong>en</strong>ga experi<strong>en</strong>cia,<br />

los casos <strong>en</strong> los que necesite la her<strong>en</strong>cia resultarán evid<strong>en</strong>tes.<br />

1.5. Her<strong>en</strong>cia: reutilización de interfaces<br />

En sí misma, la idea de objeto es una herrami<strong>en</strong>ta útil. Permite empaquetar datos<br />

y funcionalidad junto al propio concepto, además puede repres<strong>en</strong>tar una idea apropiada<br />

del espacio del problema <strong>en</strong> vez de estar forzado a usar el vocabulario de la<br />

máquina subyac<strong>en</strong>te. Esos conceptos se expresan como unidades fundam<strong>en</strong>tales <strong>en</strong><br />

el l<strong>en</strong>guaje de programación mediante la palabra reservada class.<br />

Sin embargo, es una p<strong>en</strong>a tomarse tantas molestias <strong>en</strong> crear una clase y verse<br />

obligado a crear una más para un nuevo tipo que ti<strong>en</strong>e una funcionalidad similar. Es<br />

más s<strong>en</strong>cillo si se puede usar la clase exist<strong>en</strong>te, clonarla, y hacerle añadidos y modificaciones<br />

a ese clon. Esto es justam<strong>en</strong>te lo que hace la her<strong>en</strong>cia, con la excepción de<br />

que si cambia la clase original (llamada clase base, super o padre), el «clon» modificado<br />

(llamado clase derivada, heredada, sub o hija) también refleja esos cambios.<br />

Base<br />

Figura 1.3: subclases<br />

(En el diagrama UML anterior, la flecha apunta desde la clase derivada hacia la<br />

clase base. Como puede ver, puede haber más de una clase derivada.)<br />

Un tipo hace algo más que describir las restricciones de un conjunto de objetos;<br />

también ti<strong>en</strong>e una relación con otros tipos. Dos tipos pued<strong>en</strong> t<strong>en</strong>er características y<br />

comportami<strong>en</strong>tos <strong>en</strong> común, pero un tipo puede cont<strong>en</strong>er más características que<br />

otro y también puede manipular más m<strong>en</strong>sajes (o hacerlo de forma difer<strong>en</strong>te). La<br />

her<strong>en</strong>cia lo expresa de forma similar <strong>en</strong>tre tipos usando el concepto de tipos base<br />

y tipos derivados. Un tipo base conti<strong>en</strong>e todas las características y comportami<strong>en</strong>tos<br />

compartidos <strong>en</strong>tre los tipos derivados de él. Cree un tipo base para repres<strong>en</strong>tar<br />

lo es<strong>en</strong>cial de sus ideas sobre algunos objetos <strong>en</strong> su sistema. A partir del tipo base,<br />

derive otros tipos para expresar caminos difer<strong>en</strong>tes que puede realizar esa parte<br />

común.<br />

7<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!