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 8 — #46<br />

✐<br />

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

Por ejemplo, una máquina de reciclado de basura clasifica piezas de basura. El<br />

tipo base es «basura», y cada pieza de basura ti<strong>en</strong>e un peso, un valor, y también, se<br />

puede triturar, fundir o descomponer. A partir de ahí, se obti<strong>en</strong><strong>en</strong> más tipos específicos<br />

de basura que pued<strong>en</strong> t<strong>en</strong>er características adicionales (una botella ti<strong>en</strong>e un<br />

color) o comportami<strong>en</strong>tos (el aluminio puede ser aplastado, el acero puede ser magnético).<br />

Además, algunos comportami<strong>en</strong>tos pued<strong>en</strong> ser difer<strong>en</strong>tes (el valor del papel<br />

dep<strong>en</strong>de del tipo y condición). Usando la her<strong>en</strong>cia, se puede construir una jerarquía<br />

de tipos que exprese el problema que se int<strong>en</strong>ta resolver <strong>en</strong> términos de sus tipos.<br />

Un segundo ejemplo es el clásico ejemplo «figura», tal vez usado <strong>en</strong> un sistema<br />

de diseño asistido por computador o juegos de simulación. El tipo base es figura, y<br />

cada figura ti<strong>en</strong>e un tamaño, un color, una posición y así sucesivam<strong>en</strong>te. Cada figura<br />

se puede dibujar, borrar, mover, colorear, etc. A partir de ahí, los tipos específicos de<br />

figuras derivan (heredan) de ella: círculo, cuadrado, triángulo, y así sucesivam<strong>en</strong>te,<br />

cada uno de ellos puede t<strong>en</strong>er características y comportami<strong>en</strong>tos adicionales. Ciertas<br />

figuras pued<strong>en</strong> ser, por ejemplo, rotadas. Algunos comportami<strong>en</strong>tos pued<strong>en</strong> ser difer<strong>en</strong>tes,<br />

como cuando se quiere calcular el área de una figura. La jerarquía de tipos<br />

expresa las similitudes y las difer<strong>en</strong>cias <strong>en</strong>tre las figuras.<br />

dibujar( )<br />

borrar( )<br />

mover( )<br />

pedirColor( )<br />

fijarColor( )<br />

Figura 1.4: Jerarquía de Figura<br />

Modelar la solución <strong>en</strong> los mismos términos que el problema es trem<strong>en</strong>dam<strong>en</strong>te<br />

b<strong>en</strong>eficioso porque no se necesitan un montón de modelos intermedios para transformar<br />

una descripción del problema <strong>en</strong> una descripción de la solución. Con objetos,<br />

la jerarquía de tipos es el principal modelo, lleva directam<strong>en</strong>te desde la descripción<br />

del sistema <strong>en</strong> el mundo real a la descripción del sistema <strong>en</strong> código. Efectivam<strong>en</strong>te,<br />

una de las dificultades que la g<strong>en</strong>te ti<strong>en</strong>e con el diseño ori<strong>en</strong>tado a objetos es que es<br />

demasiado fácil ir desde el principio hasta el final. Una m<strong>en</strong>te <strong>en</strong>tr<strong>en</strong>ada para buscar<br />

soluciones complejas a m<strong>en</strong>udo se confunde al principio a causa de la simplicidad.<br />

Cuando se hereda de un tipo exist<strong>en</strong>te, se está creando un tipo nuevo. Este nuevo<br />

tipo conti<strong>en</strong>e no sólo todos los miembros del tipo base (aunque los datos privados<br />

private están ocultos e inaccesibles), sino que además, y lo que es más importante,<br />

duplica la interfaz de la clase base. Es decir, todos los m<strong>en</strong>sajes que se pued<strong>en</strong> <strong>en</strong>viar<br />

a los objetos de la clase base se pued<strong>en</strong> <strong>en</strong>viar también a los objetos de la clase<br />

derivada. Dado que se conoce el tipo de una clase por los m<strong>en</strong>sajes que se le pue-<br />

8<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!