4.4. ¿Qué es un objeto?

Ahora que ya se ha visto y discutido un ejemplo incial es hora de retroceder para definir la terminología. El acto de introducir funciones en las estructuras es el eje central del cambio que C++ propone sobre C, e eso introduce una nueva forma de ver las estructuras: como conceptos. En C, una estructura (struct) es tan sólo una agrupación de datos: una manera de empaquetar datos para que se puedan tratar como un grupo. De esta forma, cuesta hacerse a la idea de que representan algo más que una mera conveniencia de programación. Las funciones que operan sobre esas estructuras están sueltas por ahí. Sin embargo, con las funciones dentro del mismo paquete que los datos, la estructura se convierte en una nueva criatura, capaz de representar las características (como hacen las structs de C) y los comportamientos. El concepto de objeto, una entidad independiente y bien limitada que puede recordar y actuar, se sugiere a si mismo como definición.

En C++, un objeto es simplemente una variable, y la definición más purista es «una región de almacenamiento» (que es una forma más específica para decir «un objeto debe tener un único identificador» el cual, en el caso de C++, es una dirección única de memoria). Es un lugar en el cual se pueden almacenar datos y eso implica también operaciones que pueden actuar sobre esos datos.

Desafortunadamente no existe una consistencia completa entre los distintos lenguajes cuando se habla de estos términos, aunque son aceptados bastante bien. También se podrán encontrar discrepancias sobre lo que es un lenguaje orientado a objetos, aunque parece haber un consenso razonable hoy en día. Hay lenguajes basados en objetos, que cuentan con estructuras-con-funciones como las que ha visto aquí de C++. Sin embargo, esto es tan sólo una parte de lo que denomina un lenguaje orientado a objetos, y los lenguajes que solamente llegan a empaquetar las funciones dentro de las estructuras son lenguajes basados en objetos y no orientados a objetos.