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

✐<br />

Capítulo 1. Introducción a los Objetos<br />

ría cambiar la implem<strong>en</strong>tación interna de la clase sin preocuparse de cómo afectará<br />

a los programadores cli<strong>en</strong>tes. Por ejemplo, podría implem<strong>en</strong>tar una clase particular<br />

de una manera s<strong>en</strong>cilla para un desarrollo fácil, y más tarde descubrir que necesita<br />

reescribirla para hacerla más rápida. Si la interfaz y la implem<strong>en</strong>tación están claram<strong>en</strong>te<br />

separadas y protegidas, puede lograrlo fácilm<strong>en</strong>te y sólo requiere que el<br />

usuario vuelva a <strong>en</strong>lazar la aplicación.<br />

<strong>C++</strong> utiliza tres palabras reservadas explícitas para poner límites <strong>en</strong> una clase:<br />

public, private, y protected. Su uso y significado son bastante s<strong>en</strong>cillos. Estos<br />

especificadores de acceso determinan quién puede usar las definiciones que sigu<strong>en</strong>. public<br />

significa que las definiciones posteriores están disponibles para cualquiera. La<br />

palabra reservada private, por otro lado, significa que nadie puede acceder a estas<br />

definiciones excepto el creador del tipo, es decir, los métodos internos de la clase. p-<br />

rivate es una pared <strong>en</strong>tre el creador de la clase y el programador cli<strong>en</strong>te. Si algui<strong>en</strong><br />

int<strong>en</strong>ta acceder a un miembro privado, obt<strong>en</strong>drá un error al compilar. protected<br />

actúa como private, con la excepción de que las clases derivadas ti<strong>en</strong><strong>en</strong> acceso a<br />

miembros protegidos, pero no a los privados. La her<strong>en</strong>cia se explicará <strong>en</strong> breve.<br />

1.4. Reutilizar la implem<strong>en</strong>tación<br />

Una vez que una clase se ha creado y probado, debería constituir (idealm<strong>en</strong>te)<br />

una unidad útil de código. Sin embargo, esta reutilización no es tan fácil de conseguir<br />

como muchos esperarían; producir un bu<strong>en</strong> diseño requiere experi<strong>en</strong>cia y conocimi<strong>en</strong>tos.<br />

Pero una vez que lo ti<strong>en</strong>e, pide ser reutilizado. El código reutilizado es<br />

una de las mejores v<strong>en</strong>tajas de los l<strong>en</strong>guajes para programación ori<strong>en</strong>tada a objetos.<br />

La forma más fácil de reutilizar una clase es precisam<strong>en</strong>te utilizar un objeto de<br />

esa clase directam<strong>en</strong>te, pero también puede colocar un objeto de esta clase d<strong>en</strong>tro<br />

de una clase nueva. Podemos llamarlo «crear un objeto miembro». Su nueva clase<br />

puede estar compuesta de varios objetos de cualquier tipo, <strong>en</strong> cualquier combinación<br />

que necesite para conseguir la funcionalidad deseada <strong>en</strong> su nueva clase. Como<br />

está componi<strong>en</strong>do una nueva clase a partir de clases exist<strong>en</strong>tes, este concepto se llama<br />

composición (o de forma más g<strong>en</strong>eral, agregación). A m<strong>en</strong>udo nos referimos a la<br />

composición como una relación «ti<strong>en</strong>e-un», como <strong>en</strong> «un coche ti<strong>en</strong>e-un motor».<br />

Coche<br />

Motor<br />

Figura 1.2: Un coche ti<strong>en</strong>e un motor<br />

(El diagrama UML anterior indica composición con el rombo rell<strong>en</strong>o, lo cual implica<br />

que hay un coche. Típicam<strong>en</strong>te usaré una forma más simple: sólo una línea, sin<br />

el rombo, para indicar una asociación. 5 )<br />

La composición es un mecanismo muy flexible. Los objetos miembro de su nueva<br />

clase normalm<strong>en</strong>te son privados, haciéndolos inaccesibles para los programadores<br />

cli<strong>en</strong>tes que están usando la clase. Eso permite cambiar esos miembros sin perturbar<br />

al código cli<strong>en</strong>te exist<strong>en</strong>te. También puede cambiar los miembros del objeto <strong>en</strong> tiem-<br />

5 Normalm<strong>en</strong>te esto es sufici<strong>en</strong>te para la mayoría de los diagramas y no necesita especificar si está<br />

usando agregación o composición.<br />

6<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!