Descomposición en módulos.

Vamos a separar el ejemplo anterior en tres ficheros: Caja.h, que contiene la definición de la clase, Caja.cxx, que contiene la implementación de los métodos declarados en la clase Caja, y main.cxx, la función principal.

Caja.h

class Caja {
    double longitud, anchura, altura;
  public:
    Caja (double dim1, double dim2, double dim3);
    Caja (void);
    void set (double nuevaLongitud, double nuevaAnchura, double nuevaAltura);
    void print (void);
    double getLongitud (void);
    double volumen (void) {return longitud * anchura * altura};
    ~Caja (void);
};

En Caja.h hemos incluido sólo la definición de la clase. No se dan detalles sobre las diversas funciones, excepto para volumen. Es decir, tenemos la definición completa de cómo utilizar una clase sin detalles de implementación. Este fichero no puede ser compilado ni ejecutado.

Caja.cxx

# include "Caja.h" Caja :: Caja (double dim1, double dim2, double dim3)
{
    longitud = dim1;
    anchura = dim2;
    altura = dim3;
};

Caja :: Caja (void)
{
    longitud = 8;
    anchura = 8;
    altura = 8;
};

void Caja :: set (double nuevaLongitud,nuevaLongitud, double nuevaAnchura, double nuevaAltura)
{
    longitud = nuevaLongitud;
    anchura = nuevaAnchura;
    altura = nuevaAltura;
}

void Caja :: print (void)
{
    cout << "longitud = " << longitud <<'\n';
    cout << "anchura = " << anchura <<'\n';
    cout << "altura = " << altura <<'\n';
};

double Caja:: getLongitud (void) {
    return longitud;
};

Caja::~Caja (void) {     longitud = 0;     anchura = 0;     altura = 0; } Vemos que:

Este fichero puede ser compilado, pero no ejecutado, porque no tiene función main. Cuando sea compilado, el código objeto será almacenado, y estará disponible para usarlo por otros programas.
La separación de la definición y la implementación es un paso importante hacia la ingeniería de software. El fichero que contiene la definición es todo lo que el usuario necesita para utilizar la clase en un programa. No necesita conocer la implementación real de las funciones.

main.cxx

#include <iostream.h>
#include "Caja.h"

main ()
{
   Caja pequeña(5, 4, 10), mediana (10, 6, 20), grande(20, 10, 30);

   cout << "El volumen de la caja grande es " << grande.volumen() << '\n';
}

Free Web Hosting