Organización del código en archivos `.h` y `.cpp`
La programación estructurada promueve la descomposición de un programa en funciones pequeñas, modulares y comprensibles. En C++, esta descomposición no solo se expresa a través de funciones, sino también mediante una organización física del código en archivos fuente (.cpp) y archivos de cabecera (.h), que permite separar la interfaz de la implementación.
Esta práctica, aunque no exclusiva del paradigma estructurado, es especialmente útil para mantener la claridad, la legibilidad y la escalabilidad de los programas a medida que crecen en tamaño y complejidad.
Propósito y ventajas
Dividir el código en archivos .h y .cpp cumple los siguientes propósitos fundamentales:
- Separación de interfaz e implementación: Las funciones se declaran en archivos de cabecera (
.h) y se definen en archivos fuente (.cpp). - Facilidad de mantenimiento: Se puede modificar la implementación de una función sin alterar el código que la utiliza.
- Reutilización de código: Las cabeceras permiten reutilizar funciones en múltiples unidades de compilación.
- Compilación eficiente: Al incluir solo las cabeceras necesarias, se reduce el tiempo de compilación.
Ejemplo
A continuación se presenta una estructura comúnmente utilizada para organizar funciones en un programa estructurado:
Archivo de cabecera: math_utils.h
#pragma once //Evita múltiples inclusiones de un mismo archivo de cabecera
// Declaración de funciones relacionadas con operaciones matemáticas
int square(int x);
bool is_even(int x);
int factorial(int n);
Archivo de implementación: math_utils.cpp
#include "math_utils.h"
int square(int x) {
return x * x;
}
bool is_even(int x) {
return x % 2 == 0;
}
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
Archivo principal: main.cpp
#include <iostream>
#include "math_utils.h"
int main() {
std::cout << "Cuadrado de 5: " << square(5) << "\n";
std::cout << "Factorial de 4: " << factorial(4) << "\n";
return 0;
}
Hay que indicar que a la hora de compilarlo, habrá que indicar los dos ficheros de implementación:
$ g++ main.cpp math_utils.cpp -o programa