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