Class: Question

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/exam/question.rb,
lib/quiz/question.rb

Overview

Clase que representa una pregunta y que contiene las posibles respuestas así como la opción correcta. Se incluye el Mixin Comparable.

Direct Known Subclasses

SimpleSelection, VerdaderoFalso

Constant Summary collapse

ORDER =
0
KIND =
1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text, answers) ⇒ Question

Inicialización de la pregunta, recogiendo los atributos ask, respuestaCorrecta y difficulty (por defecto 0).



10
11
12
# File 'lib/exam/question.rb', line 10

def initialize(ask,respuestaCorrecta,difficulty=0)
    @ask,@respuestaCorrecta,@difficulty = ask,respuestaCorrecta,difficulty
end

Instance Attribute Details

#answersObject

Returns the value of attribute answers.



6
7
8
# File 'lib/quiz/question.rb', line 6

def answers
  @answers
end

#askObject (readonly)

Atributos que almacenarán el enunciado (ask), la dificultad (difficulty) y la opción correcta (respuestaCorrecta)



8
9
10
# File 'lib/exam/question.rb', line 8

def ask
  @ask
end

#difficultyObject (readonly)

Atributos que almacenarán el enunciado (ask), la dificultad (difficulty) y la opción correcta (respuestaCorrecta)



8
9
10
# File 'lib/exam/question.rb', line 8

def difficulty
  @difficulty
end

#respuestaCorrectaObject (readonly)

Atributos que almacenarán el enunciado (ask), la dificultad (difficulty) y la opción correcta (respuestaCorrecta)



8
9
10
# File 'lib/exam/question.rb', line 8

def respuestaCorrecta
  @respuestaCorrecta
end

#textObject

Returns the value of attribute text.



6
7
8
# File 'lib/quiz/question.rb', line 6

def text
  @text
end

Instance Method Details

#<=>(other) ⇒ Object

Método que hace la comparativa entre preguntas en función de su dificultad y sólo si la pasada por parámetro es también una Question



17
18
19
20
# File 'lib/exam/question.rb', line 17

def <=> (other)
   return nil unless other.is_a?Question
   @difficulty <=> other.difficulty
end

#==(other) ⇒ Object

Método que invalida el == y lo ajusta en el caso de que se den dos preguntas con la misma dificultad donde entonces se determinará que realmente son iguales si tienen además el mismo enunciado (ask).



25
26
27
28
29
30
31
32
# File 'lib/exam/question.rb', line 25

def == (other)
    return nil unless other.is_a?Question
    iguales = false
    if (self.difficulty == other.difficulty)  && (self.ask == other.ask)
        iguales = true
    end
    iguales
end

#check(answerUser) ⇒ Object



15
16
17
18
19
# File 'lib/quiz/question.rb', line 15

def check(answerUser)
  
  @answers[answerUser -1].is_right?
  
end

#to_sObject



21
22
23
24
25
26
27
# File 'lib/quiz/question.rb', line 21

def to_s
  cadena = @text + "\n"
  @answers.each do |answer|
      cadena << " #{answer}\n"
  end
  cadena
end