En
ANSI C las funciones son algo relativamente independiente
de las variables, y constituyen el centro del lenguaje.
Se dice por eso que C es un lenguaje algorítmico (o
procedural, en inglés). Cualquier función
se puede comunicar con las demás a través de variables
globales, del valor de retorno y de los
argumentos, pasados por valor o por referencia. Esta facilidad
para comunicarse con otras funciones hace que se puedan producir
efectos laterales no deseados.
En
un Lenguaje Orientado a Objetos tal como el C++, el
centro del lenguaje no son las funciones sino los datos,
o más bien los objetos, que contienen datos
y funciones concretas que permiten manipularlos y
trabajar sobre ellos. Esto hace que la mentalidad con la que se
aborda la realización de un programa tenga que ser muy diferente.
Para
proteger a las variables de modificaciones no deseadas se introduce
el concepto de encapsulación, ocultamiento
o abstracción de datos. Los miembros de una clase se pueden
dividir en públicos y privados. Los miembros
públicos son aquellos a los que se puede acceder
libremente desde fuera de la clase. Los miembros privados,
por el contrario, solamente pueden ser accedidos por los métodos
de la propia clase.
De
ordinario una clase ofrece un conjunto de funciones públicas
a través de las cuales se puede actuar sobre los datos,
que serán privados. Estas funciones o métodos
públicos constituyen la interface de
la clase. De esta forma se garantiza que se hace buen uso de los
objetos, manteniendo la coherencia de la información. Esto
sería imposible si se accediera libre e independientemente
a
cada variable miembro. Al usuario le es suficiente con saber cómo
comunicarse con un objeto, pero no tiene por qué conocer
el funcionamiento interno del mismo. En C++ los métodos
de una clase pueden ser funciones u operadores. Todo
esto se estudiará en detalle más adelante.
Ya
se ha hablado de las funciones sobrecargadas, que
son funciones con el mismo nombre pero con distintos argumentos
y definición. Otra posibilidad interesante es la de que objetos
de distintas clases respondan de manera análoga al aplicarles
funciones con idéntico nombre y argumentos. Esta posibilidad
da origen a las funciones virtuales y al polimorfismo,
diferente de las funciones sobrecargadas, al que se dedicará
un capítulo completo de este manual, ya que es una de las
capacidades más importantes del C++.
|