Class: Pregunta

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/examen/pregunta.rb

Overview

Clase gestora de una Pregunta de multiples opciones.

Direct Known Subclasses

PreguntaVerdaderoFalso

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Pregunta

Instancia una nueva Pregunta, a partir de un texto, una respuesta correcta, un conjunto de respuestas falsas y opcionalmente la dificultad.

Raises:

  • (ArgumentError)


8
9
10
11
12
13
14
15
16
# File 'lib/examen/pregunta.rb', line 8

def initialize(args)
  raise ArgumentError, "Esperada pregunta (:text)" unless args[:text]
  raise ArgumentError, "Esperada respuesta correcta (:right)" unless args[:right]
  raise ArgumentError, "Esperadas respuestas incorrectas (:distractors)" unless args[:distractors]
  @text = args[:text]
  @right = args[:right]
  @distractors = args[:distractors]
  @difficulty = (args.key?:difficulty)?args[:difficulty]:1
end

Instance Attribute Details

#difficultyObject

Returns the value of attribute difficulty.



4
5
6
# File 'lib/examen/pregunta.rb', line 4

def difficulty
  @difficulty
end

#distractorsObject

Returns the value of attribute distractors.



4
5
6
# File 'lib/examen/pregunta.rb', line 4

def distractors
  @distractors
end

#rightObject

Returns the value of attribute right.



4
5
6
# File 'lib/examen/pregunta.rb', line 4

def right
  @right
end

#textObject

Returns the value of attribute text.



4
5
6
# File 'lib/examen/pregunta.rb', line 4

def text
  @text
end

Instance Method Details

#<=>(p) ⇒ Object

Sobrecarga el operador <=> para comparar por dificultad.



31
32
33
# File 'lib/examen/pregunta.rb', line 31

def <=>(p)
  @difficulty <=> p.difficulty
end

#==(p) ⇒ Object

Sobrecarga el operador == para comparar por el texto.



35
36
37
# File 'lib/examen/pregunta.rb', line 35

def ==(p)
  @text.eql?p.text
end

#to_sObject

DefiniciĆ³n del Metodo to_s para mostrar una pregunta.



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/examen/pregunta.rb', line 18

def to_s
  opciones = @distractors + [@right]
  opciones = opciones.shuffle     
  s = "#{@text}\n"
  letras = ('a'..'z').to_a[0..(opciones.size - 1)]
  i = 0
  opciones.each do |o|
   s += "#{letras[i]}) #{o}\n"
   i += 1
  end
  s
end