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 3 — #41<br />

✐<br />

1.2. Cada objeto ti<strong>en</strong>e una interfaz<br />

2. Un programa es un grupo de objetos <strong>en</strong>viando m<strong>en</strong>sajes a otros para decirles<br />

qué hacer. Para hacer una petición a un objeto, «<strong>en</strong>vía un m<strong>en</strong>saje» a ese objeto.<br />

Más concretam<strong>en</strong>te, puede p<strong>en</strong>sar <strong>en</strong> un m<strong>en</strong>saje como una petición de<br />

invocación a una función que pert<strong>en</strong>ece a un objeto particular.<br />

3. Cada objeto ti<strong>en</strong>e su propia memoria constituida por otros objetos. Visto de<br />

otra manera, puede crear un nuevo tipo de objeto haci<strong>en</strong>do un paquete que<br />

cont<strong>en</strong>ga objetos exist<strong>en</strong>tes. Por consigui<strong>en</strong>te, puede hacer cosas complejas <strong>en</strong><br />

un programa ocultando la complejidad de los objetos.<br />

4. Cada objeto ti<strong>en</strong>e un tipo. Usando el argot, cada objeto es una instancia de una<br />

clase, <strong>en</strong> el que «clase» es sinónimo de «tipo». La característica más importante<br />

que lo distingue de una clase es «¿Qué m<strong>en</strong>sajes puede <strong>en</strong>viarle»<br />

5. Todos los objetos de un tipo particular pued<strong>en</strong> recibir los mismos m<strong>en</strong>sajes. En<br />

realidad es una frase con doble s<strong>en</strong>tido, como verá más tarde. Como un objeto<br />

de tipo círculo es también un objeto de tipo figura, está garantizado que un<br />

círculo aceptará los m<strong>en</strong>sajes de figura. Esto significa que puede escribir código<br />

que habla con objetos figura y automáticam<strong>en</strong>te funcionará con cualquier<br />

otro objeto que coincida con la descripción de figura. Esta sustituibilidad es<br />

uno de los conceptos más poderosos <strong>en</strong> la POO.<br />

1.2. Cada objeto ti<strong>en</strong>e una interfaz<br />

Aristóteles fue probablem<strong>en</strong>te el primero <strong>en</strong> hacer un estudio minucioso del concepto<br />

de tipo; él habló de «la clase de peces y la clase de pájaros». La idea de que<br />

todos los objetos, aún si<strong>en</strong>do únicos, también son parte de una clase de objetos que<br />

ti<strong>en</strong><strong>en</strong> características y comportami<strong>en</strong>tos comunes se utilizó directam<strong>en</strong>te <strong>en</strong> el primer<br />

l<strong>en</strong>guaje ori<strong>en</strong>tado a objetos, Simula-67, con su palabra reservada class que<br />

introduce un nuevo tipo <strong>en</strong> un programa.<br />

Simula, como su nombre indica, fue creado para desarrollar simulaciones como el<br />

clásico «problema del cajero» 2 . Ti<strong>en</strong>e un grupo de cajeros, cli<strong>en</strong>tes, cu<strong>en</strong>tas, transacciones,<br />

y unidades de moneda - un montón de «objetos». Los objetos idénticos, exceptuando<br />

su estado durante la ejecución del programa, se agrupan <strong>en</strong> «clases de<br />

objetos» y de ahí vi<strong>en</strong>e la palabra reservada class. Crear tipos de datos abstractos<br />

(clases) es un concepto fundam<strong>en</strong>tal <strong>en</strong> la programación ori<strong>en</strong>tada a objetos. Los<br />

tipos de datos abstractos trabajan casi exactam<strong>en</strong>te como tipos predefinidos: puede<br />

crear variables de un tipo (llamadas objetos o instancias <strong>en</strong> el argot de la programación<br />

ori<strong>en</strong>tada a objetos) y manipular estas variables (llamado <strong>en</strong>vío de m<strong>en</strong>sajes o peticiones;<br />

<strong>en</strong>vía un m<strong>en</strong>saje y el objeto decide qué hacer con él). Los miembros (elem<strong>en</strong>tos)<br />

de cada clase ti<strong>en</strong><strong>en</strong> algo <strong>en</strong> común: cada cu<strong>en</strong>ta ti<strong>en</strong>e un balance, cada cajero puede<br />

aceptar un depósito, etc. Al mismo tiempo, cada miembro ti<strong>en</strong>e su propio estado,<br />

cada cu<strong>en</strong>ta ti<strong>en</strong>e un balance difer<strong>en</strong>te, cada cajero ti<strong>en</strong>e un nombre. De este modo,<br />

cada cajero, cli<strong>en</strong>te, cu<strong>en</strong>ta, transacción, etc., se puede repres<strong>en</strong>tar con una única<br />

<strong>en</strong>tidad <strong>en</strong> el programa de computador. Esta <strong>en</strong>tidad es un objeto, y cada objeto pert<strong>en</strong>ece<br />

a una clase particular que define sus características y comportami<strong>en</strong>tos.<br />

Por eso, lo que hace realm<strong>en</strong>te un programa ori<strong>en</strong>tado a objetos es crear nuevos<br />

tipos de datos, prácticam<strong>en</strong>te todos los l<strong>en</strong>guajes de programación ori<strong>en</strong>tados a<br />

objetos usan la palabra reservada class. Cuando vea la palabra «type», pi<strong>en</strong>se <strong>en</strong><br />

2 Puede <strong>en</strong>contrar una implem<strong>en</strong>tación interesante de este problema <strong>en</strong> el Volum<strong>en</strong> 2 de este libro,<br />

disponible <strong>en</strong> www.BruceEckel.com<br />

3<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!