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

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

Saved successfully!

Ooh no, something went wrong!