viernes, 18 de noviembre de 2016

Capítulo 84. Programa en archivos separados en C++


Diario de un programador. Día 186

C++.

Crear clases en archivos separados


Al igual que lo hicimos en Java en su oportunidad, esta vez veremos cómo crear clases en archivos separados, con la finalidad de poder dividir el trabajo y crear clases reutilizables.
Vamos a crear un ejemplo muy sencillo, se trata de un programa que simplemente muestra un mensaje.  Este mensaje será creado por una función que se encuentra en una clase que está en otro archivo. Para este ejemplo, se crearán dos archivos, uno que contendrá la clase main y otra que contendrá la función del mensaje.

El archivo que contiene la función del mensaje, será guardado con extensión .h, mientras que la clase main será creada como siempre en un archivo de extensión .cpp

Voy a crear ambos archivos. A uno lo llamaré funcion.h y al otro inicio.cpp


Primero empezaré editando el archivo funcion.h En este archivo crearé una clase y una función que me permita mostrar un simple mensaje por pantalla. Esto quedaría de la siguiente manera:

#include<iostream>
using std::cout;
using std::endl;

class ClaseMensaje{
  public:

  void funcionSaludo(){
    cout << "Mensaje de prueba"<< endl;
  }
};

Como se puede ver, es una simple clase con una función que muestra un mensaje. Ahora voy a editar el archivo inicio.cpp, el cual contiene la función main y enlazar la clase creada en él.
Para poder incluir la clase anteriormente creada, se debe escribir la línea #include "funcion.h". Al hacer esto, la clase queda enlazada al archivo cpp y se podrá trabajar normalmente como se había hecho hasta ahora. Esto quedaría de la siguiente manera:

#include<iostream>
#include "funcion.h"
using std::cout;
using std::endl;

int main(void){

  ClaseMensaje mensaje;
  mensaje.funcionSaludo();

return 0;
}

Al compilar y ejecutar este pequeño ejemplo, esto es lo que muestra por la pantalla


Vamos a ver otro ejemplo. En esta oportunidad vamos a crear un programa que solicite un nombre y una edad. Esto es algo más complejo que el ejemplo anterior pero no tanto. Las funciones que guarden estos datos, se encontrarán en otra clase. Lo primero que voy a crear será la clase de las funciones. Esto quedaría de la siguiente manera:

//archivo.h – clase que mantiene funciones
#include<iostream>
#include<string>
using std::string;

//prototipo
 void setEdad(int);
 void setNombre(string);
 int getEdad();
 string getNombre();

class ClaseFuncion{
  private:
    int edad;
    string nombre;

  public:
    //constructor
    ClaseFuncion(){
      edad = 0;
      nombre = "";
    }

    //funciones set
    void setEdad(int ed){
      edad = ed;
    }
    void setNombre(string nom){
      nombre = nom;
    }
    //funciones get
    int getEdad(){
      return edad;
    }
    string getNombre(){
      return nombre;
    }

};

//Archivo.cpp – archivo principal 
#include<iostream>
#include<string>
#include "Funciones.h"

using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::getline;

int main(void){

  int edad;
  string nombre;
  ClaseFuncion datos;

  cout << "Ingresa tu nombre: ";
  getline(cin, nombre);
  cout << "Ingresa tu edad: ";
  cin >> edad;

  datos.setNombre(nombre);
  datos.setEdad(edad);

  cout << "Nombre ingresado: " << datos.getNombre() << endl;
  cout << "Edad ingresada: " << datos.getEdad() << endl;

return 0;
}


Como se puede apreciar, en este código se utilizó las funciones get y set para poder recuperar los valores que fueron solicitados en la clase principal. Esto es todo por ahora. Saludos.


Gustavo J. Cerda Nilo
Noviembre 2016


http://codigogx.blogspot.cl/2017/06/capitulo-88-separar-la-interfaz-de-la.html

No hay comentarios:

Publicar un comentario

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...