#ifndef PREGUNTA_H
#define PREGUNTA_H

#include<QString>

class QDomElement; //Forward declaration

class Pregunta{

protected:

    QString tipo; //Variable que almacena el tipo de pregunta
    QString texto; //Variable que almacena el texto de la pregunta
    QString respuesta; //Variable que almacena la respuesta a la pregunta
    QString duracion; //Variable que almacena la duracion durante la cual se muestra la pregunta

public:
    /// Constructor por defecto de la clase
    Pregunta(const QString& tipo);
    /// Destructor virtual de la clase
    virtual ~Pregunta();
    /// Metodo virtual que permite leer los campos necesarios de una pregunta
    /// @param elementos Referencia a un QDomElement (elemento de arbol DOM)
    ///                  que contiene toda la informacion de una pregunta
    /// @return true en caso leer la pregunta, false en caso contrario
    virtual bool leerPregunta(const QDomElement& elementos);
    /*/// Metodo virtual constante que permite imprimir una pregunta
    //virtual void imprimirPregunta() const;*/
    /// Metodo virtual que permite obtener el tipo de pregunta
    /// @return Regresa el tipo de pregunta que es
    virtual QString obtenerTipo()const;
    /// Metodo virtual que permite obtener el texto de la pregunta
    /// @return Regresa el texto de la pregunta
    virtual QString obtenerTexto()const;
    /// Metodo virtual puro de la clase Pregunta
    /// @return Retorne un entero que corresponde a la puntacion obtenida
    virtual int aplicar(const QString& respuestaUsuario) = 0;

private:
    /// Constructor de copia de la clase
    Pregunta(const Pregunta&);
    /// Operador de asignacion de la clase
    const Pregunta& operator=(const Pregunta&);

};

#endif
