DECLARACIÓN DE UNA CLASE
La primera palabra que aparece es lógicamente class que sirve para definir una
clase y para declarar objetos de esa clase. Su uso es parecido a la ya conocida struct:
class <identificador de clase> [<:lista de
clases base>] {
<lista
de miembros>
} [<lista de identificadores de objetos>];
La lista de clases base se usa para derivar clases, de momento no le prestes demasiada atención, ya que por ahora sólo declararemos clases base.
La lista de
miembros será en general una lista de funciones y datos.
Los datos se
declaran del mismo modo en que lo hacíamos hasta ahora, salvo que no pueden ser
inicializados, recuerda que estamos hablando de declaraciones de clases y no de
definiciones de objetos. En el siguiente capítulo veremos el modo de
inicializar las variables de un objeto.
Las
funciones pueden ser simplemente declaraciones de prototipos, que se deben
definir aparte de la clase pueden ser también definiciones.
Cuando se
definen fuera de la clase se debe usar el operador de ámbito "::".
Lo veremos
mucho mejor con un ejemplo.
#include <iostream>
using namespace std;
class pareja {
private:
//
Datos miembro de la clase "pareja"
int a, b;
public:
//
Funciones miembro de la clase "pareja"
void Lee(int &a2, int &b2);
void Guarda(int a2, int b2) {
a =
a2;
b =
b2;
}
};
void pareja::Lee(int &a2, int &b2) {
a2 = a;
b2 = b;
}
int main() {
pareja
par1;
int x, y;
par1.Guarda(12, 32);
par1.Lee(x, y);
cout
<< "Valor de par1.a: " << x << endl;
cout
<< "Valor de par1.b: " << y << endl;
return 0;
}
Nuestra clase "pareja" tiene dos miembros de tipo de datos: a y b.
Y dos
funciones, una para leer esos valores y otra para modificarlos.
En el caso
de la función "Lee" la hemos declarado en el interior de la clase y
definido fuera, observa que en el exterior de la declaración de la clase
tenemos que usar la expresión:
void pareja::Lee(int &a2, int &b2)
Para que quede claro que nos referimos a la función "Lee" de la clase "pareja". Ten en cuenta que pueden existir otras clases que tengan funciones con el mismo nombre, y también que si no especificamos que estamos definiendo una función de la clase "pareja", en realidad estaremos definiendo una función corriente.
En el caso
de la función "Guarda" la hemos definido en el interior de la propia
clase. Esto lo haremos sólo cuando la definición sea muy simple, ya que
dificulta la lectura y comprensión del programa.
Además, las funciones definidas de este modo serán
tratadas como inline, y
esto sólo es recomendable para funciones cortas, ya que, (como recordarás), en
estas funciones se inserta el código cada vez que son llamadas.
Miembros de una clase (métodos
y atributos)
En el lenguaje coloquial
de la programación orientada al objeto es común escuchar términos tales como:
métodos, atributos, herencia, polimorfismo, etc. En esta sección nos
encargaremos de hablar de los dos primeros.
Métodos:
En comparación con la
programación tradicional, un método es lo mismo que una función cualquiera,
salvo que como los métodos se declaran para pertenecer a una clase específica,
se dice que todos los métodos de dicha clase son miembros de la misma. Por lo
demás, la declaración y definición de los métodos es exactamente igual que
declarar y definir cualquier otra función.
Atributos:
En comparación con la
programación tradicional, un atributo es lo mismo que una variable cualquiera,
salvo que como los atributos se declaran para pertenecer a una clase
específica, se dice que todos los atributos de dicha clase son miembros de la
misma. Por lo demás, la declaración de los atributos es exactamente igual que
declarar cualquier otra variable.
Miembros:
A partir de este momento
usaremos la palabra miembro para referirnos al hecho de que un método o un
atributo pertenece a tal o cual clase.
Visibilidad de los miembros de una clase
Por visibilidad se entiende al acto de acceder a los
miembros de una clase. En este sentido, los miembros de una clase pueden ser:
públicos, privados y protegidos.
- · Un miembro público significa que el acceso al mismo puede darse dentro del interior de la clase, dentro de una subclase, y desde un objeto instanciado de cualquiera de estas. Por ejemplo, los miembros de la clase CRender son accesibles dentro de la misma y podrán accederse desde cualquier otra clase que se derive de CRender, así como desde cualquier objeto instanciado de estas.
- · Un miembro privado significa que el acceso al mismo puede darse solamente dentro del interior de la clase que lo posee. Normalmente, el programador creador de una clase declara a los atributos de la clase como privados y a los métodos como públicos, esto con la idea de que el usuario de la clase no pueda tener acceso a los atributos sino es a traves de los métodos definidos para el caso.
- · Un miembro protegido se comporta de manera parecida a un miembro privado, salvo que estos son accesibles dentro de la clase que lo posee y desde las clases derivadas, pero no desde los objetos instanciados a raiz de dichas clases.
Nota: por defecto, los miembros de una clase son
privados.
En la clase Pareja que se verá en seguida, se declaran
dos atributos y cuatro métodos para la manipulación de dichos atributos.
Observe que los atributos son privados( por defecto ), mientras que los métodos
se declaran públicos.
class Pareja
{
// atributos
double a, b;
public:
// métodos
double getA();
double getB();
void setA(double n);
void setB(double n);
};
// implementación de los métodos de la clase Pareja
//
double Pareja::getA() { return a; }
double Pareja::getB() { return b; }
void Pareja::setA(double n) { a = n; }
void Pareja::setB(double n) { b = n; }
CONCLUSION:
En C++, un objeto es sólo una instancia (un ejemplar)
de una clase determinada. Es importante distinguir entre objetos y clases, la
clase es simplemente una declaración, no tiene asociado ningún objeto, de modo
que no puede recibir mensajes ni procesarlos, esto únicamente lo hacen los
objetos.
BIBLIOGRAFIA:
No hay comentarios:
Publicar un comentario