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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 4 — #42<br />

✐<br />

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

«class» y viceversa 3 .<br />

Dado que una clase describe un conjunto de objetos que ti<strong>en</strong><strong>en</strong> idénticas características<br />

(elem<strong>en</strong>tos de datos) y comportami<strong>en</strong>tos (funcionalidad), una clase es realm<strong>en</strong>te<br />

un tipo de datos porque un número de punto flotante, por ejemplo, también<br />

ti<strong>en</strong>e un conjunto de características y comportami<strong>en</strong>tos. La difer<strong>en</strong>cia está <strong>en</strong> que el<br />

programador define una clase para resolver un problema <strong>en</strong> lugar de estar obligado<br />

a usar un tipo de dato exist<strong>en</strong>te diseñado para repres<strong>en</strong>tar una unidad de almac<strong>en</strong>ami<strong>en</strong>to<br />

<strong>en</strong> una máquina. Amplía el l<strong>en</strong>guaje de programación añadi<strong>en</strong>do nuevos<br />

tipos de datos específicos según sus necesidades. El sistema de programación acoge<br />

las nuevas clases y les presta toda la at<strong>en</strong>ción y comprobación de tipo que da a los<br />

tipos predefinidos.<br />

El <strong>en</strong>foque ori<strong>en</strong>tado a objetos no está limitado a la construcción de simulaciones.<br />

Esté o no de acuerdo con que cualquier problema es una simulación del sistema que<br />

está diseñando, el uso de técnicas POO puede reducir fácilm<strong>en</strong>te un amplio conjunto<br />

de problemas a una solución simple.<br />

Una vez establecida una clase, puede hacer tantos objetos de esta clase como<br />

quiera, y manipularlos como si fueran elem<strong>en</strong>tos que exist<strong>en</strong> <strong>en</strong> el problema que está<br />

int<strong>en</strong>tando resolver. De hecho, uno de los desafíos de la programación ori<strong>en</strong>tada a<br />

objetos es crear una correspond<strong>en</strong>cia unívoca <strong>en</strong>tre los elem<strong>en</strong>tos <strong>en</strong> el espacio del<br />

problema y objetos <strong>en</strong> el espacio de la solución.<br />

Pero, ¿cómo se consigue que un objeto haga algo útil por usted Debe haber<br />

una forma de hacer una petición al objeto para que haga algo, como completar una<br />

transacción, dibujar algo <strong>en</strong> la pantalla o activar un interruptor. Y cada objeto puede<br />

satisfacer sólo ciertas peticiones. Las peticiones que puede hacer un objeto están<br />

definidas por su intefaz, y es el tipo lo que determina la interfaz. Un ejemplo simple<br />

puede ser una repres<strong>en</strong>tación de una bombilla:<br />

Nombre del Tipo<br />

Luz<br />

Interfaz<br />

<strong>en</strong>c<strong>en</strong>der( )<br />

apagar( )<br />

int<strong>en</strong>sificar( )<br />

at<strong>en</strong>uar( )<br />

Figura 1.1: Clase Luz<br />

Luz luz1;<br />

luz1.<strong>en</strong>c<strong>en</strong>der();<br />

La interfaz establece qué peticiones se pued<strong>en</strong> hacer a un objeto particular. Sin<br />

embargo, se debe codificar <strong>en</strong> algún sitio para satisfacer esta petición. Ésta, junto con<br />

los datos ocultos, constituy<strong>en</strong> la implem<strong>en</strong>tación. Desde el punto de vista de la programación<br />

procedural, no es complicado. Un tipo ti<strong>en</strong>e una función asociada para cada<br />

posible petición, y cuando se hace una petición particular a un objeto, se llama a esa<br />

3 Hay qui<strong>en</strong> hace una distinción, afirmando que type determina la interfaz mi<strong>en</strong>tras class es una<br />

implem<strong>en</strong>tación particular de esta interfaz.<br />

4<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!