require_relative "version" #Clase dieta padre class Dieta_t include Comparable attr_reader :titulo, :porcdiario, :descripcion, :porciones, :ingengr, :conjplatos, :vct, :porcproteinas, :porcgrasas, :porchidratos attr_writer :titulo, :porcdiario, :descripcion, :porciones, :ingengr, :conjplatos, :vct, :porcproteinas, :porcgrasas, :porchidratos #Constructor de la clase Dieta_t def initialize(titulo, porcdiario, descripcion, porciones, ingengr, conjplatos, vct, porcproteinas, porcgrasas, porchidratos) @titulo = titulo @porcdiario = porcdiario @descripcion = descripcion @porciones = porciones @ingengr = ingengr @conjplatos = conjplatos @vct = vct @porcproteinas = porcproteinas @porcgrasas = porcgrasas @porchidratos = porchidratos end #Muestra el contenido de la clase Dieta_t def to_s mostrar = "" mostrar << "\n\n#{@titulo} (#{@porcdiario} %)\n" for i in 0..(@conjplatos-1) mostrar << "- #{@descripcion[i]}, #{@porciones[i]}, #{@ingengr[i]}\n" end mostrar << "V.C.T | % #{@vct} kcal | #{@porcproteinas}% - #{@porcgrasas}% - #{@porchidratos}%\n\n" end #Permite comparar dietas def <=> (other) self.vct <=> other.vct end end #Clase hija de la anterior en la cual se añade una edad recomendad class DietaEdad_t < Dieta_t attr_accessor :edad #Constructor de la clase DietaEdad_t def initialize(titulo, porcdiario, descripcion, porciones, ingengr, conjplatos, vct, porcproteinas, porcgrasas, porchidratos, edad) super(titulo, porcdiario, descripcion, porciones, ingengr, conjplatos, vct, porcproteinas, porcgrasas, porchidratos) @edad = edad end #Muestra el contenido de la clase DietaEdad_t def to_s s << super.to_s s << "Edad recomendada: #{@edad}" end end #Clase hija de la anterior en la cual se añade un tipo de dieta class DietaTipo_t < Dieta_t attr_accessor :tipo #Constructor de la clase DietaTipo_t def initialize(titulo, porcdiario, descripcion, porciones, ingengr, conjplatos, vct, porcproteinas, porcgrasas, porchidratos, tipo) super(titulo, porcdiario, descripcion, porciones, ingengr, conjplatos, vct, porcproteinas, porcgrasas, porchidratos) @tipo = tipo end #Muestra el contenido de la clase DietaTipo_t def to_s s << super.to_s s << "Tipo de dieta: #{@tipo}" end end d1 = Dieta_t.new("DESAYUNO", 20, ["Leche", "Cereales"], [2, 1], [100, 75], 2, 720, 40, 60, 50) d2 = Dieta_t.new("ALMUERZO", 10, ["Carne", "Papas"], [1, 1], [80, 60], 2, 720, 50, 30, 70) d3 = Dieta_t.new("CENA", 3, ["Pizza"], [1], [70], 1, 1000, 30, 40, 50) if d1 < d3 puts "d1 es menor que d3" end if d2 == d1 puts "d2 es igual a d1" end