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