#ifndef PREGUNTASELECCIONUNICA_H
#define PREGUNTASELECCIONUNICA_H

#include<QVector>
#include"Pregunta.h"

class QDomElement; //forward declaration
//Esta clase tiene herencia publica de la clase Pregunta
class PreguntaSeleccionUnica : public Pregunta{

private:

    QVector<QString> opciones; //Vector usado para almacenar las opciones de respuesta

public:
    /*
    Esta clase usa el metodo imprimirPregunta de su clase padre,
    razon por la cual no se declara ni implementa en esta clase
    */
    /// Constructor por defecto de la clase
    PreguntaSeleccionUnica();
    /// Destructor virtual de la clase
    virtual ~PreguntaSeleccionUnica();
    /// 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 un apregunta
    /// @return true en caso leer la pregunta, false en caso contrario
    virtual bool leerPregunta(const QDomElement& elementos);
    /// Este metodo permite aplicar y evaluar la pregunta al usuario
    /// @param respuestaUsuario Referencia a la respuesta del usuario
    /// @return Retorne un entero que corresponde a la puntacion obtenida
    virtual int aplicar(const QString& respuestaUsuario);
    /// Este metodo permite obtener el arreglo con las opciones de respuesta
    /// @return Retorna una copia del vector con las opciones de respuesta
    QVector<QString> obtenerOpciones()const;

private:
    /// Constructor de copia de la clase
    PreguntaSeleccionUnica(const PreguntaSeleccionUnica&);
    /// Operador de asignacion de la clase
    const PreguntaSeleccionUnica& operator=(const PreguntaSeleccionUnica&);
    /// Este metodo permite encontar donde comienzan las opciones de respuesta
    /// @param elementos Referencia a un QDomElement (elemento de arbol DOM)
    ///                  que contiene toda la informacion de un apregunta
    /// @param elementoOpciones Referencia a un QDomElement "vacio" usado para
    ///                         almacenar donde comienzan las opciones de respuesta
    /// @return true en caso de encontrar las opciones, false en caso contrario
    bool encontrarOpciones(const QDomElement& elementos, QDomElement& elementoOpciones);

};

#endif

