Creación de Bibliotecas con Clases: Archivos de Cabecera

En la creación de bibliotecas con clases, normalmente, las definiciones de las clases están incluidas en ficheros cabecera, existiendo un archivo de cabecera por cada clase que definamos. En este archivo incluiremos la definición de la clase, cualquier constante, enumeración, etc…, que se pueda usar con un objeto de la clase y los métodos inline, ya que estos necesitan estar definidos antes de usarse.

#define Une(x,y)
// Macro para crear clase de manejo de matrices
#define ClaseMatriz(tipo)
class Une(Matriz, tipo)
{ tipo *Dato;
public:
Une(Matriz, tipo)(int Nelementos)
{
Dato=new tipo[NElementos];
}
Une(∼Matriz, tipo)()
{
delete Dato;
}
tipo & operator[](int Elemento)
{
return Dato[Elemento];
}
};
ClaseMatriz(int); // Se crea una clase para manejar matrices int
ClaseMatriz(double); // Se crea una clase para manejar matrices
// double
#include <iostream.h>
void main(void)
{ Matrizint Objetoint(10);
Matrizdouble Objetodouble(10);
Objetoint[0]=10;
Objetodouble[5]=24.5;
cout << Objetoint[0] << ‘\n’ << Objetodouble[5];
}

Realización

En cada uno de los archivos que necesiten hacer uso de una clase será necesario incluir los archivos cabecera en los cuales están definidas las clases que van a ser usadas. Sin embargo, normalmente estas bibliotecas son compiladas obteniendo ficheros .OBJ que serán enlazados junto a las aplicaciones.

En el caso de que tengamos varios ficheros se puede, o bien generar un código objeto por cada uno de los archivos fuente, o bien varios archivos .OBJ, o bien unirlos todos en una biblioteca .LIB. En definitiva, el proceso de creación y utilización de una biblioteca de funciones podría simplificarse a:

  1. Definición de las clases en los archivos cabeceras
  2. Codificación de los métodos en uno o varios archivos fuentes, incluyendo archivos de cabecera
  3. Compilación de cada uno de los archivos fuente, con la consiguiente generación del código objeto
  4. Unión de los códigos objetos en los distintos archivos en una sola biblioteca con cada objeto
    5. Inclusión los archivos de cabecera en la aplicación que use la biblioteca y enlazarla con ella.

Enlace Seguro

Con el enlace seguro podemos dar la característica de sobrecarga a funciones implementadas en C que queremos usar en C++. Para ello, ponemos en la declaración del prototipo extern “c”. Esto también se puede hacer con bloques de código y con archivos cabecera.

extern “c” void Represent(void);
extern”c”{
#include “cabecera.h”
}

Para conocer mucha más información que te inspire a aprender sobre programación y más sobre bibliotecas con clases, puede visitar el siguiente blog de informática. Además, puedes también verificar esta información desde otras fuentes que ya conozcas.