class Dieta # Clase que contiene un menú include Comparable attr_accessor :tipo_dieta, :ingesta2, :descripcion, :racion, :cantidad, :kcal, :proteinas, :grasas, :hidratos def initialize(&block) self.tipo_dieta = [] #Tipo de menu: almuerzo, desayuno... self.ingesta2 = [] self.descripcion = [] #descripcion del menu self.racion = [] #array de arrays que contienen la porcion de comida que lleva cada plato self.cantidad = [] #cantidad generalmente en gramos de comida self.kcal = [] # V.C.T del menu self.proteinas = [] #array de porcentajes que muestran: proteinas, grasas e hidratos por menu self.grasas = [] self.hidratos = [] if block_given? if block.arity == 1 yield self else instance_eval(&block) end end end def titulo(text) self.tipo_dieta = text end def plato(options = {}) descripcion << "#{options[:descripcion]}" if options[:descripcion] racion << "#{options[:porcion]}" if options[:porcion] cantidad << "#{options[:gramos]}" if options[:gramos] end def ingesta(text, options = {}) ingesta = text ingesta << "#{options[:min]}" if options[:min] ingesta << "#{options[:max]}" if options[:max] ingesta2 << ingesta end def porcentajes(options = {}) kcal << "#{options[:vct]}" if options[:vct] proteinas << "#{options[:proteinas]}" if options[:proteinas] grasas << "#{options[:grasas]}" if options[:grasas] hidratos << "#{options[:hidratos]}" if options[:hidratos] end def get_platos #devuelve todos los platos que hay con sus descripciones i=0 s= "" while (descripcion[i] != nil && cantidad[i] != nil) do s += "- #{descripcion[i]}, " if (racion[i] != nil) s += "#{racion[i]}, " end s += "#{cantidad[i]} g" s += "\n" i += 1 end s #se devuelve e imprime end def get_titulo #devuelve el tipo de comida mas su ingesta diaria s = "#{tipo_dieta} " if (ingesta2[1] == nil) s += "(#{ingesta2[0]}%)" else s += "(#{ingesta2[0]}% - #{ingesta2[1]}%)" end s #se devuelve e imprime end def get_descripcion(pos) #devuelve el nombre del plato especificado en "pos" s = "#{descripcion[pos]}" s #se devuelve e imprime end def get_to_(pos) #devuelve una linea con la descripcion completa de un plato s = "- #{descripcion[pos]}, " if (racion[pos] != nil) s += "#{racion[pos]}, " end s += "#{cantidad[pos]} g" s #se devuelve e imprime end def to_s #devuelve la salida con todos los datos s = "#{tipo_dieta} " if (ingesta2[1] == nil) s += "(#{ingesta2[0]}%)" else s += "(#{ingesta2[0]}% - #{ingesta2[1]}%)" end s += "\n" i = 0 while (descripcion[i] != nil && cantidad[i] != nil) do s += "- #{descripcion[i]}, " if (racion[i] != nil) s += "#{racion[i]}, " end s += "#{cantidad[i]} g" s += "\n" i += 1 end s += "V.C.T. | %" s += "\t" s += "#{kcal[0]} kcal |" if (proteinas != nil) s += " #{proteinas[0]}%" s += " -" end if (grasas != nil) s += " #{grasas[0]}%" s += " -" end if (hidratos != nil) s += " #{hidratos[0]}%" end s #se devuelve e imprime end #Comparacion def <=>(other) kcal <=> other.kcal end def ==(other) if kcal == other.kcal && percent == other.percent return true else return false end end end class Food < Dieta # Clase hija de dieta, añade tipo de comida def tip(verduras, leche, cereales, frutas) #añade el tipo que comida que se encuentra en el menú @verduras = verduras #muestra si el plato contiene verduras y hortalizas @leche = leche #muestra si el plato contiene leche, huevos, pescado, carne y frutos secos @cereales = cereales #muestra si el plato contiene cereales,legumbres y féculas @frutas = frutas #muestra si el plato contiene frutas end def to_s #devuelve la salida con todos los datos s = super s += "\n" s += "Contiene: " if (@verduras != nil && @verduras != 0) s += "Verduras, " end if (@leche != nil && @leche != 0) s += "Leche, " end if (@cereales != nil && @cereales != 0) s += "Cereales, " end if (@frutas != nil && @frutas != 0) s += "Frutas." end s end end class Edad < Dieta # Clase hija de dieta, añade edad recomendada def tip(a8, a13, a18) #añade el rango de edades adecuado para el menú @a8 = a8 #de 4 a 8 años @a13 = a13 #de 9 a 13 años @a18 = a18 #de 14 a 18 años end def to_s #devuelve la salida con todos los datos s = super s += "\n" s += "Dirigido a personas de: " if (@a8 != nil && @a8 != 0) s += "4 a 8, " end if (@a13 != nil && @a13 != 0) s += "9 a 13, " end if (@a18 != nil && @a18 != 0) s += "14 a 18 " end s += "años." s end end