Autor

Alejandro Alcalde

Graduado en Ingeniería Informática en la ETSIIT, Granada. Creador de El Baúl del Programador

Más artículos de Alejandro Alcalde

Veamos la diferencia entre las siguientes declaraciones de la clase Punto:



class Punto{

public:
  int x;
  int y;
  char ch;

  Punto (char ch1, int x1, int y1);
  void 
mostrar ()

;
  void 
ocultar ()

;
};
class Punto{
  int x;
  int y;
  char ch;

public:
  Punto(char chl, int x1, int yl);
  void 
mostrar()

;
  void 
ocultar()

;
};

La diferencia de las declaraciones de las clases está en el acceso a los miembros dato de la clase, private, por defecto. Los datos son, por tanto, privados y las funciones son públicas. Cualquier intento de modificar directamente los valores de la abscisa x, la ordenada y, o del carácter ch, dará lugar a un error en tiempo de compilación. Luego, en main no podremos escribir las sentencias:

pt.x=19;
pt.y=5;
pt.ch=+;

El hecho de que los datos sean privados no quiere decir que sean invisibles: simplemente quiere decir que no se pueden cambiar desde el exterior. Si es imposible acceder a los datos privados, se pueden añadir a la clase funciones que permitan conocer sus valores. Si nos interesa conocer la abscisa x y la ordenada y del punto, podernos añadir a la clase dos funciones miembro denominadas getx y gety, que retornan los valores de x y de y.

class Punto{
  int y;
  char ch;
public:
  Punto(char chl, int x1, int y1);
  void 
mostrar ()

;
  void 
ocultar ()

;
  int 
getx ()
 
{ return x;}
  int 
gety ()
 
{ return y;}
};

Este ejemplo ilustra una faceta importante del lenguaje C++ denominada encapsulación. El acceso a los miembros de una clase está controlado. Para usar una clase, solamente se necesita saber qué funciones miembro se pueden llamar y qué datos son accesibles. A esto se le denomina interfaz de la clase. No necesitamos saber cómo está hecha la clase, cómo son sus detalles internos. A esto se le denomina ocultamiento de la información. Una vez que la clase está depurada y probada, la clase es como una caja negra. Los objetos de dicha clase guardan unos datos, y están caracterizados por una determinada conducta.

Para acceder a un miembro público (dato o función), desde un objeto de la clase Punto basta escribir:

objeto.miembro_público;

Habitualmente, los miembros públicos son funciones, como mostrar, ocultar, getx, gety. Las llamadas a dichas funciones miembro desde un objeto pt1 de la clase Punto, se escribirán:

ptl.mostrar ();
cout << "nabscisa del punto= " << ptl.getx();
cout << "nordenada del punto= "<< ptl.gety ();

Siguiente tema: Clases y Objetos - Funciones Inline

¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.

Categorías:Etiquetas:

Quizá también te interese leer...