You are on page 1of 3

Clases en C++

Clases:
Una clase es en general un modelo, receta o plantilla que define el estado y
comportamiento de cierto tipo de objetos. Una clase puede pensarse como una colección de
variables (atributos o propiedades) y funciones (métodos) que permiten representar un
conjunto de datos y especificar las operaciones o procedimientos que permiten manipular
tales datos. Se puede inclusive entender una clase como un tipo de dato personalizado,
similar a las estructuras ( structs), donde cada programador define los miembros que va a
tener su tipo de dato. De hecho, los tipos de dato nativos de C ++ son en realidad clases.

Objetos:
Un objeto es una instancia de una clase, es decir una entidad que se construye a partir de
las descripciones consignadas en una clase (datos y funciones). Por tanto, un objeto se
puede entender como una "variable" que se declara del tipo de dato de cierta clase. Un
objeto es como tal la entidad tangible que permite acceder a los datos y funciones
modeladas al interior de la clase

Ejemplo:

Una analogía para entender las clases y los objetos puede ser una fabrica ensambladora de
carros. Hay un modelo o diseño (clase) especifico de un auto, pero este modelo en si no es
un carro, es solo una descripción de que características y funcionalidades deben tener los
carros que sean de ese modelo. Los carros ensamblados en la fabrica de acuerdo a dicho
modelo contienen los objetos, es decir entidades tangibles que se construyeron a partir de
las descripciones y especificaciones consignadas en el diseño o modelo (o sea la clase).

Para declarar una clase en C ++ se utiliza la palabra reservada class, se da un nombre a la


clase y luego entre llaves se declaran los miembros de la clase.

Las clases no pueden declararse al interior de funciones, ya que son una definición de un
tipo de dato creado por el usuario (programador). En general, las clases se declaran en
bibliotecas (librerías) individuales cuyo nombre es usualmente el mismo nombre de la clase.

Las variables de clase en C ++ son datos de distinto tipo que sirven para describir el estado
actual de un objeto de esa clase. Se declaran al interior de una clase de la misma forma en
que se declaran variables en una aplicación convencional de C ++. Es decir, tipo de dato
(calificadores opcionales), nombre para la variable y un valor inicial opcional.

Los métodos de una clase son funciones que sirven para manipular las variables de la
clase, de ahí viene la primera característica relevante de la programación orientada a
objetos que es el encapsulamiento, ya que en lo posible se va a tratar de que solo pueda
acceder a una variable de clase a través de un método de la clase. Los métodos se
declaran y definen de la misma manera que una función cualquiera en una aplicación
convencional de C ++, dicho de otro modo, en su firma expresa el tipo del valor de retorno,
un nombre para el método y una lista de parámetros de entrada. Usualmente se hace la
declaración de los métodos al interior de la clase, mientras que la definición se hace por
fuera de la clase ayudandose al operador de resolución de ámbito:: para indicar que el
método que se está definiendo pertenece a la clase en cuestión.
class MiClase
{
int var1; //Variable de clase
const double var2 = 3.14159; //Variable de clase

void cambiarVar1(int a); //Declaración de un método de la clase


double calcularArea(const double& x, const double& y); //Declaración de un método
de la clase
};

void MiClase::cambiarVar1(int a) //Definición del método por fuera de la clase


{
var1 = a;
}

double MiClase::calcularArea(const double& x, const double& y) //Definición del método por


fuera de la clase
{
return x*y*var2;
}

En escencia, una clase en C++ es una estructura en el estilo de C con algunas ventajas
sencillas pero muy potentes.

Declaración de clases
Para declarar una clase, todo lo que se necesita es escribir una definición de estructura y
sustituir la palabra reservada struct por class.

Especificadores de acceso
C++ utiliza especificadores de acceso para permitir controlar a una clase el acceso a las
variables de datos de esa clase. Los especificadores de acceso permiten acceder a algunos
miembros de la clase y restringir el acceso a otros.

Hay tres especificadores de acceso en C++: public, private y protected. Cuando usted
declara público ( public) un miembro de una clase, usted permite el acceso a tal miembro
desde dentro y fuera de la clase. Los miembros de datos que son declarados protegidos
( protected ) son únicamente accesibles por funciones miembro de la clase, pero no se
pueden acceder a ellos desde otras clases. Cuando un miembro de una clase es declarado
privado ( private ) es ináccesible no sólo desde otras clases y otras partes del programa,
sino también desde sus clases derivadas. Las clases derivadas se explicara posteriormente.

En C++ se suelen definir e implementar las clases en sus propios archivos y no en el mismo
donde se encuentra la función principal, se hace de esta manera con el fin de lograr una
buena organización en los proyectos y hacer un tipo de encapsulamiento externo porque la
implementación de la clase queda fuera de vista del programa principal.

Cada clase irá programada en dos archivos:


Un archivo de cabecera (.h) en donde se declara la clase y se definen sus atributos y
métodos, en este archivo solamente se declaran los miembros de la clase, para los métodos
se escriben los prototipos de función y si es pertinente, para aquellas funciones cortas su
implementación como inline.

Un archivo fuente (.cpp) en donde se realiza la implementación de aquellos métodos de los


que declaramos su prototipo en la definición de la clase.

De esta manera podremos tener a la vista, en el archivo de cabecera, las características de


la clase y saber qué es lo que tenemos en un objeto de dicha clase; así mismo dejamos de
lado los detalles más profundos de la implementación en el archivo fuente.

Se utiliza la palabra reservada class seguida por un identificador que sirva como nombre a
la clase. Entre llaves escribiremos el cuerpo de la clase que se conformará por
declaraciones de los miembros de la clase, ya sean datos (atributos) o funciones (métodos)
precedidos opcionalmente por un especificador de acceso a manera de etiqueta, una de las
palabras reservadas: public, private o protected.

You might also like