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