Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 435 — #473<br />
✐<br />
15: Polimorfismo y Funciones virtuales<br />
El Polimorfismo (implem<strong>en</strong>tado <strong>en</strong> <strong>C++</strong> con funciones virtuales)<br />
es la tercera característica es<strong>en</strong>cial de un l<strong>en</strong>guaje ori<strong>en</strong>tado a<br />
objetos, después de la abstracción de datos y la her<strong>en</strong>cia.<br />
De hecho, nos provee de otra dim<strong>en</strong>sión para la separación <strong>en</strong>tre interfaz y la<br />
implem<strong>en</strong>tación, desacoplando el qué del cómo. El Polimorfismo permite mejorar la<br />
organización del código y su legibilidad así como la creación de programas ext<strong>en</strong>sibles<br />
que pued<strong>en</strong> "crecer" no sólo durante el desarrollo del proyecto, si no también<br />
cuando se dese<strong>en</strong> nuevas características.<br />
La <strong>en</strong>capsulación crea nuevos tipos de datos combinando características y comportami<strong>en</strong>tos.<br />
El control de acceso separa la interfaz de la implem<strong>en</strong>tación haci<strong>en</strong>do<br />
privados (private) los detalles. Estos tipos de organización son fácilm<strong>en</strong>te <strong>en</strong>t<strong>en</strong>dibles<br />
por cualquiera que v<strong>en</strong>ga de la programación procedim<strong>en</strong>tal. Pero las funciones<br />
virtuales tratan de desunir <strong>en</strong> términos de tipos. En el Capítulo 14, usted vió como la<br />
her<strong>en</strong>cia permitía tratar a un objeto como su propio tipo o como a su tipo base. Esta<br />
habilidad es básica debido a que permite a difer<strong>en</strong>tes tipos (derivados del mismo<br />
tipo base) ser tratados como si fueran un único tipo, y un único trozo de código es<br />
capaz de trabajar indistintam<strong>en</strong>te con todos. Las funciones virtuales permit<strong>en</strong> a un<br />
tipo expresar sus difer<strong>en</strong>cias con respecto a otro similar si ambos han sido derivados<br />
del mismo tipo base. Esta distinción se consigue modificando las conductas de las<br />
funciones a las que se puede llamar a través de la clase base.<br />
En este capítulo apr<strong>en</strong>derá sobre las funciones virtuales, empezando con ejemplos<br />
simples que le mostrará lo "desvirtual" del programa.<br />
15.1. Evolución de los programadores de <strong>C++</strong><br />
Los programadores de C parec<strong>en</strong> conseguir pasarse a <strong>C++</strong> <strong>en</strong> tres pasos. Al principio,<br />
como un "C mejorado", debido a que <strong>C++</strong> le fuerza a declarar todas las funciones<br />
antes de usarlas y a que es mucho más s<strong>en</strong>sible a la forma de usar las variables.<br />
A m<strong>en</strong>udo se pued<strong>en</strong> <strong>en</strong>contrar errores <strong>en</strong> un programa C simplem<strong>en</strong>te recompilándolo<br />
con un compilador de <strong>C++</strong>.<br />
El segundo paso es la "programación basada <strong>en</strong> objetos", que significa que se pued<strong>en</strong><br />
ver fácilm<strong>en</strong>te los b<strong>en</strong>eficios de la organización del código al agrupar estructuras<br />
de datos junto con las funciones que las manejan, la pot<strong>en</strong>cia de los constructores y<br />
los destructores, y quizás algo de her<strong>en</strong>cia simple. La mayoría de los programadores<br />
que han trabajado durante un tiempo con C v<strong>en</strong> la utilidad de esto porque es<br />
lo que int<strong>en</strong>tan hacer cuando crean una librería. Con <strong>C++</strong> usted recibe la ayuda del<br />
435<br />
✐<br />
✐<br />
✐<br />
✐