Prácticas

Advertencia:
Esta sección se mantiene como referencia pero su contenido puede ya no ser del todo útil por la versión de programas usados: MinGW 4.8.2, Qt 4.8.6 y Qt Creator 3.2.0 en Windows 7.

Práctica 01

Se crearán una clase en C++ con la ayuda del IDE Qt Creator.

La creación y utilización de una clase se resume en los siguientes pasos:

  • Primero definir la clase.

  • Después implementar la clase.

  • Posteriormente crear objetos del tipo de la clase.

  • Finalmente interacturar con los objetos.

Para crear una clase con Qt Creator realiza lo siguiente:

  1. Dirígete a File > New File or Project..., selecciona Non-Qt Project / Plan C++ Project y da clic al botón Choose...

    images/01.png

  2. Ingresa practica01 en el campo Name y da clic al botón Next.

    images/02.png

    Ésto corresponde al nombre de tu proyecto.

    Ante las siguientes dos ventanas, de clic en el botón Next y Finish:

  3. Da clic derecho sobre el nodo raíz de tu proyecto, selecciona Add new.., selecciona C++ / C++ Class y da clic al botón Choose...:

    images/03.png

  4. Ingresa Triangulo en el campo Class Name y da clic al botón Next:

    images/04.png

    Ante la siguiente ventana, da clic al botón Finish

    Observaciones:

    El proyecto cuenta ahora con 3 archivos: triangulo.h, main.cpp y triangulo.cpp:

    images/05.png

    • triangulo.h es un archivo cabecera (header) para especificar o definir a la clase Triangulo.

      Se indican los datos (atributos o propiedades) y el comportamiento (funciones) de todo aquel objeto de tipo Triangulo.

    • triangulo.cpp es un archivo de código (source) para implementar a la clase Triangulo.

      Se indica el como se comporta (imlementación de funciones) todo objeto de tipo Triangulo.

    • main.cpp es el archivo de código inicial a ejecutarse del programa mediante la función int main().

      Se crean los objetos de tipo Triangulo necesarios para que uno interactue con ellos.

  5. En triangulo.h ingresa el siguiente código:

    #ifndef TRIANGULO_H
    #define TRIANGULO_H
    
    class Triangulo
    {
    public:
        /* Metodo constructor */
        Triangulo(double, double);
    
        /* Metodo para el calculo del area de un triangulo */
        double dameTuArea();
    
        /* Atributo base de un triangulo */
        double base;
    
        /* Atributo altura de un triangulo */
        double altura;
    };
    
    #endif // TRIANGULO_H
    
  6. En triangulo.cpp ingresa el siguiente código:

    #include "triangulo.h"
    
    /* Metodo constructor */
    Triangulo::Triangulo(double b, double h)
    {
        base = b;
        altura = h;
    }
    
    /* Metodo para el calculo del area de un triangulo */
    double Triangulo::dameTuArea()
    {
        return (base * altura) / 2;
    }
    
  7. En main.cpp ingresa el siguiente código:

    #include <iostream>
    #include <triangulo.h>
    
    using namespace std;
    
    int main()
    {
        Triangulo obj1(6, 3);
        cout << "Triangulo obj1";
        cout << endl;
        cout << " altura = " << obj1.altura;
        cout << endl;
        cout << " base = " << obj1.base;
        cout << endl;
        cout << " area = " << obj1.dameTuArea();
        cout << endl;
    
        Triangulo obj2(7, 5);
        cout << "Triangulo obj2";
        cout << endl;
        cout << " base = " << obj2.base;
        cout << endl;
        cout << " altura = " << obj2.altura;
        cout << endl;
        cout << " area = " << obj2.dameTuArea();
        cout << endl;
    
        return 0;
    }
    
  8. Ejecuta el proyecto:

    images/06.png

  9. A partir de lo expuesto en http://www.ditutor.com/geometria_espacio/figuras_geometricas.html, crea una clase para las siguiente figuras geométricas:

    • Cuadrado
      • Atributos: lado.
      • Comportamiento: dameTuArea() y dameTuPerimetro().
    • Rectángulo
      • Atributos: base y altura.
      • Comportamiento: dameTuArea() y dameTuPerimetro().
    • Trapecio
      • Atributos: base_mayor, base_menor y altura.
      • Comportamiento: dameTuArea().
    • Rombo
      • Atributos: diagonal_mayor, diagonal_menor y lado.
      • Comportamiento: dameTuArea() y dameTuPerimetro().

Lecturas:

Proyecto QT:

Práctica 02

Sobre el encapsulamiento, la protección (public/private) y el estado de un objeto.

En esta práctica se modifica a la clase Triangulo para que encapsule y proteja el estado de sus propiedades.

La protección de las propiedades se lleva a cabo con la declaración de las propiedades como privadas (private) y para exponer su estado se crean métodos públicos (public):

images/07.png

Proyecto QT:

practica02.zip

Observaciones:

  • Por cuestiones del lenguaje ingles se usa el prefijo get para obtener el valor actual de alguna propiedad de un objeto, por lo tanto los métodos dameTuAltura(), dameTuBase() y dameTuArea() se convertirían en getAltura(), getBase() y getArea(). De igual forma se usa el prefijo set para modificar el valor actual de alguna propiedad de un objeto, por lo que los métodos modificaTuAltura() y modificaTuBase() se convierten en setAltura() y setBase().

Práctica 03

Sobre la creación de una GUI (Graphical User Interface o Interfaz Gráfica de Usuario).

Es esta práctica se crea un proyecto en Qt Creator en el cual se hace uso de widgets, elementos gráficos con los cuales el usuario puede interactuar.

Los widgets, en términos de programación con Qt, son objetos con atributos/propiedades y comportamientos/métodos predefinidos.

images/08.png

Los widgets usados son:

  • Window Widget: ventana principal (clase QMainWindow)

  • Tab Widget: contenedor pestaña (clase QTabWidget) de otros widgets.

  • Double Spin Box: widget para la captura de información (clase QDoubleSpinBox) por parte del usuario.

  • Push Button: widget de tipo botón (clase QPushButton) para efectuar alguna operación.

Los widgets de Push Button tienen asociado un slot (función/método a ejecutar) cuando algún signal (función/método emitido por el usuario) se presente en la GUI.

Proyecto QT:

practica03.zip