class Exam::Pregunta

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:

Attributes

answers[RW]

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

level[RW]

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

num_c[RW]

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

title[RW]

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

Public Class Methods

new(title = obtener_pregunta, answers = obtener_respuestas, num_c = obtener_correcta, level = obtener_level) click to toggle source

Metodo para inicializar la clase

# 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
obtener_correcta() click to toggle source

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

# 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_level() click to toggle source

Metodo para obtener el nivel de la pregunta

# 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_pregunta() click to toggle source

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

# File lib/exam.rb, line 45
def self.obtener_pregunta
  puts 'Introduzca la pregunta'
  title = gets.chomp
  return title
end
obtener_respuesta(num) click to toggle source

Metodo para obtener una respuesta simple a una pregunta

# File lib/exam.rb, line 76
def self.obtener_respuesta(num)
  puts "Introduzca la respuesta #{num}"
  ans = [gets.chomp]
  return ans
end
obtener_respuestas() click to toggle source

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

# 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

Public Instance Methods

<=>(anOther) click to toggle source

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

# File lib/exam.rb, line 35
def <=> (anOther)
  @level <=> anOther.level
end
==(other) click to toggle source

Metodo para comparar que una pregunta es igual a otra

# File lib/exam.rb, line 40
def == (other)
  @level == other.level && @title == other.title
end
to_s() click to toggle source

Metodo para mostrar por pantalla la pregunta y las posibles respuestas

# 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