class Plato

Objeto que representa un plato con multiples comidas

Attributes

calorias[R]
cantidad[R]
carbohidratos[R]
lipidos[R]
lista[R]
nombre[R]
p_carbohidratos[R]
p_lipidos[R]
p_proteinas[R]
proteinas[R]

Public Class Methods

new(lista_plato,lista_cantidad,nombre_plato) click to toggle source
# File lib/practica/plato.rb, line 10
def initialize(lista_plato,lista_cantidad,nombre_plato)                # constructor que recibe la lista con alimentos, otra lista con la cantidad del alimento correspondiente y el nombre del plato
        @proteinas=@carbohidratos=@lipidos=@calorias=@p_calorias= @p_lipidos = @p_carbohidratos = @total = 0  #inicializacmos todos los atributos a 0
        
        @lista = lista_plato          #asignamos los atributos que tenemos
        @nombre = nombre_plato
        @cantidad= lista_cantidad

        self.calc_proteina            #llamamos a los diferentes metedos para dar valor a los diferentes atributos
        self.calc_lipido
        self.calc_carbohidrato
        @total = @proteinas + @lipidos + @carbohidratos
        
        self.calc_porcentajes
        self.calc_calorias
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/practica/plato.rb, line 92
def <=> (other)                                        #operador <=>
        
        if other.is_a? Plato                  #verificamos que sea una instancia de Plato
                return (self.calorias <=> other.calorias)  
        else                                                          # en cualquer otro caso retornamos nil
                return nil
        end

end
==(other) click to toggle source
# File lib/practica/plato.rb, line 83
def == (other)                 # operador de comparacion
        if other.instance_of? Plato           # solo compara si tenemos una instancia de Plato
        
        self.to_s == other.to_s                       # compara el formato en string de ambos objetos
        else                  
                false
        end
end
calc_calorias() click to toggle source
# File lib/practica/plato.rb, line 67
def calc_calorias      #metodo que calcula las calorias totales del plato (Kcal)
        @calorias = (@proteinas*4 + @carbohidratos*9 + @lipidos*4).round(2)
        
end
calc_carbohidrato() click to toggle source
# File lib/practica/plato.rb, line 58
def calc_carbohidrato  #metodo que calcula los carbohidratos del plato
        contador=0
        while( @lista[contador] != nil && @cantidad[contador] != nil)  do
                
                @carbohidratos=@carbohidratos + calcular_equivalente( @lista[contador].get_valor.carbohidratos , @cantidad[contador].get_valor )
                contador = contador +1
        end
        @carbohidratos
end
calc_lipido() click to toggle source
# File lib/practica/plato.rb, line 48
def calc_lipido                #metodo que calcula los lipidos del plato
        contador=0
        while( @lista[contador] != nil && @cantidad[contador] != nil)  do
                
                @lipidos=@lipidos + calcular_equivalente( @lista[contador].get_valor.lipidos , @cantidad[contador].get_valor )
                contador = contador +1
        end
        @lipidos
end
calc_porcentajes() click to toggle source
# File lib/practica/plato.rb, line 72
def calc_porcentajes   # metodo que obtiene la proporcion de lipido,proteinas y carbohidratos de cada alimento
        @p_carbohidratos = ((@carbohidratos / @total)*100.0).round(2)
        @p_lipidos = ((@lipidos / @total)*100.0).round(2)
        @p_proteinas = ((@proteinas / @total)*100.0).round(2)
end
calc_proteina() click to toggle source
# File lib/practica/plato.rb, line 38
def calc_proteina              #metodo que calcula la proteinas del plato
        contador=0
        while( @lista[contador] != nil && @cantidad[contador] != nil)  do
                
                @proteinas=@proteinas + calcular_equivalente(@lista[contador].get_valor.proteinas,@cantidad[contador].get_valor)
                contador = contador +1
        end
        @proteinas
end
calcular_equivalente(valor,cantidad) click to toggle source
# File lib/practica/plato.rb, line 78
def calcular_equivalente(valor,cantidad)               # metodo que calcula el porcentaje de un valor cualquiera
        resultado=(valor * (cantidad / 100.0)).round(2)
        return resultado
end
get_this() click to toggle source
# File lib/practica/plato.rb, line 7
def get_this
        return self
end
to_s() click to toggle source
# File lib/practica/plato.rb, line 27
def to_s               #damos formato del plato, siendo "Nombne, Alimento, Cantidad,......"
        @nombre = "#{@nombre}"
        contador =0
         
        while (@lista[contador] != nil && @cantidad[contador] != nil) do 
                @nombre = @nombre + ",#{@lista[contador].get_valor.nombre},#{@cantidad[contador].get_valor}"
                contador = contador + 1
        end
        return @nombre
end