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 403 — #441<br />
✐<br />
14: Her<strong>en</strong>cia y Composición<br />
Una de las características más importantes acerca de <strong>C++</strong> es la reutilización<br />
de código. Pero para ser revolucionario, necesita ser capaz<br />
de hacer algo más que copiar código y modificarlo.<br />
Este es un <strong>en</strong>foque de C y no fue demasiado bi<strong>en</strong>. Como <strong>en</strong> la mayoría de los casos<br />
<strong>en</strong> <strong>C++</strong>, la solución gira alrededor de la clase. Se reutiliza código creando nuevas<br />
clases, pero <strong>en</strong> vez de crearlas desde la nada, utilizará clases exist<strong>en</strong>tes que algui<strong>en</strong><br />
ha realizado y comprobado que funcionan correctam<strong>en</strong>te.<br />
La clave consiste <strong>en</strong> utilizar estas clases sin modificarlas. En este capítulo, apr<strong>en</strong>derá<br />
los dos modos de hacerlo. El primero es bastante directo: simplem<strong>en</strong>te cree<br />
objetos de la clase exist<strong>en</strong>te d<strong>en</strong>tro de la nueva clase. A esto se le llama composición<br />
porqué la nueva clase esta compuesta por objetos de clases ya exist<strong>en</strong>tes.<br />
La segunda forma es mucho más sutil. Crear la nueva clase como un tipo de una<br />
clase exist<strong>en</strong>te. Literalm<strong>en</strong>te se toma la forma de la clase exist<strong>en</strong>te y se añade código,<br />
pero sin modificar la clase ya exist<strong>en</strong>te. A este hecho mágico se le llama her<strong>en</strong>cia,<br />
y la mayoría del trabajo es realizado por el compilador. La her<strong>en</strong>cia es uno de los<br />
pilares de la programación ori<strong>en</strong>tada a objetos y ti<strong>en</strong>e ext<strong>en</strong>siones adicionales que<br />
serán exploradas <strong>en</strong> el capítulo 15.<br />
Esto es, resulta que gran parte de la sintaxis y el comportami<strong>en</strong>to son similares<br />
tanto <strong>en</strong> la composición como <strong>en</strong> la her<strong>en</strong>cia (lo cual ti<strong>en</strong>e s<strong>en</strong>tido; ambas son dos<br />
formas de crear nuevos tipos utilizando tipos ya exist<strong>en</strong>tes). En este capítulo, apr<strong>en</strong>derá<br />
acerca de los mecanismos para la reutilización de código.<br />
14.1. Sintaxis de la composición<br />
Realm<strong>en</strong>te, ha utilizado la composición a lo largo de la creación de una clase.<br />
Ha estado construy<strong>en</strong>do clases principalm<strong>en</strong>te con tipos predefinidos (y <strong>en</strong> ocasiones<br />
cad<strong>en</strong>as). Por esto, resulta fácil usar la composición con tipos definidos por el<br />
usuario.<br />
Considere la sigui<strong>en</strong>te clase:<br />
//: C14:Useful.h<br />
// A class to reuse<br />
#ifndef USEFUL_H<br />
#define USEFUL_H<br />
class X {<br />
int i;<br />
public:<br />
403<br />
✐<br />
✐<br />
✐<br />
✐