Class: Exam::Pregunta

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

Overview

Clase Pregunta

Definición de la clase Pregunta que permite almacenar y representar una pregunta por pantalla, proporciona una interfaz de usuario y permite saber el nivel de la pregunta mediante una variable. Sus metodos son:

  • metodo <=>

  • metodo ==

  • metodo obtener_pregunta

  • metodo obtener_level

  • metodo obtener_respuestas

  • metodo obtener_correcta

  • metodo obtener_respuesta

  • metodo initiliaze

  • metodo to_s

Direct Known Subclasses

Pregunta_VF

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title = obtener_pregunta, answers = obtener_respuestas, num_c = obtener_correcta, level = obtener_level) ⇒ Pregunta

Metodo para inicializar la clase

Raises:

  • (ArgumentError)


83
84
85
86
87
88
89
90
# File 'lib/exam.rb', line 83

def initialize(title = obtener_pregunta, answers = obtener_respuestas, num_c = obtener_correcta, level = obtener_level)
  raise ArgumentError,
    "Title has to be a String, got #{title.class}" unless title.is_a? String
  @title = title
  @answers = answers
  @num_c = num_c
  @level = level
end

Instance Attribute Details

#answersObject

Atributo answers, para almacenar las respuestas de la pregunta Atributo title, para almacenar la respuesta en si Atributo num_c, numero de la respuesta correcta Atributo level, nivel de la pregunta



32
33
34
# File 'lib/exam.rb', line 32

def answers
  @answers
end

#levelObject

Atributo answers, para almacenar las respuestas de la pregunta Atributo title, para almacenar la respuesta en si Atributo num_c, numero de la respuesta correcta Atributo level, nivel de la pregunta



32
33
34
# File 'lib/exam.rb', line 32

def level
  @level
end

#num_cObject

Atributo answers, para almacenar las respuestas de la pregunta Atributo title, para almacenar la respuesta en si Atributo num_c, numero de la respuesta correcta Atributo level, nivel de la pregunta



32
33
34
# File 'lib/exam.rb', line 32

def num_c
  @num_c
end

#titleObject

Atributo answers, para almacenar las respuestas de la pregunta Atributo title, para almacenar la respuesta en si Atributo num_c, numero de la respuesta correcta Atributo level, nivel de la pregunta



32
33
34
# File 'lib/exam.rb', line 32

def title
  @title
end

Class Method Details

.obtener_correctaObject

Metodo para saber dentro de la clase Pregunta cual de las respuestas es la correcta, mediante un indice que apunta a un array



70
71
72
73
# File 'lib/exam.rb', line 70

def self.obtener_correcta
  puts "Introduzca el numero de la respuesta correcta"
  @num_c = gets.chomp.to_i
end

.obtener_levelObject

Metodo para obtener el nivel de la pregunta



52
53
54
55
# File 'lib/exam.rb', line 52

def self.obtener_level
  print "Introduzca nivel de dificultad de la pregunta, 0 minimo y 10 maximo"
  @level = gets.chomp.to_i
end

.obtener_preguntaObject

Metodo para obtener el titulo de la pregunta mediante una introducción por pantalla



45
46
47
48
49
# File 'lib/exam.rb', line 45

def self.obtener_pregunta
  puts 'Introduzca la pregunta'
  title = gets.chomp
  return title
end

.obtener_respuesta(num) ⇒ Object

Metodo para obtener una respuesta simple a una pregunta



76
77
78
79
80
# File 'lib/exam.rb', line 76

def self.obtener_respuesta(num)
  puts "Introduzca la respuesta #{num}"
  ans = [gets.chomp]
  return ans
end

.obtener_respuestasObject

Metodo para obtener las diferentes respuestas a la pregunta, manteniendo la suposición de que el numero de respuestas será el que nos proporcionen



58
59
60
61
62
63
64
65
66
67
# File 'lib/exam.rb', line 58

def self.obtener_respuestas
  puts "Introduzca numero de respuestas a la pregunta"
  num = gets.chomp.to_i
  c = []
  while num != 0
    c = c + obtener_respuesta(c.length + 1)
    num -= 1
  end
  @answers = c
end

Instance Method Details

#<=>(anOther) ⇒ Object

Metodo para hacer uso del modulo Comparable comparando el nivel de dos preguntas



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

def <=> (anOther)
  @level <=> anOther.level
end

#==(other) ⇒ Object

Metodo para comparar que una pregunta es igual a otra



40
41
42
# File 'lib/exam.rb', line 40

def == (other)
  @level == other.level && @title == other.title
end

#to_sObject

Metodo para mostrar por pantalla la pregunta y las posibles respuestas



93
94
95
96
97
98
99
100
101
# File 'lib/exam.rb', line 93

def to_s
  out = "# #{@title}" + "\n"
  i = 1
  answers.each do |a|
    out << " #{i}.- #{a}\n"
    i += 1
  end
  out
end