class Plato
Esta clase contiene información acerca de los distintos alimentos que forman un plato. Se calcula el porcentaje de proteínas, hidratos y lípidos que contiene cada conjunto de alimentos, así como su valor energético.
- Author
-
David Hernández Suárez (alu0101048239@ull.edu.es)
- Copyright
-
Cretive Commons
- License
-
Distributes under the same terms as Ruby
Attributes
Public Class Methods
Se asignan el nombre del plato, la lista de alimentos que lo compone y los gramos de cada alimento.
# File lib/alimentacion/platos.rb, line 19 def initialize(nombre_plato, lista_alimentos, lista_gramos) @nombre_plato = nombre_plato @lista_alimentos = lista_alimentos @lista_gramos = lista_gramos end
Public Instance Methods
Se utiliza el módulo Comparable, comparando los alimentos en base a su porcentaje de proteínas.
# File lib/alimentacion/platos.rb, line 14 def <=>(anOther) self.porcentaje_proteinas <=> anOther.porcentaje_proteinas end
Se calcula el porcentaje de hidratos de carbono total del plato
# File lib/alimentacion/platos.rb, line 43 def porcentaje_hidratos aux = @lista_alimentos.head aux2 = @lista_gramos.head suma_hidratos = 0 suma_gramos = 0 while (!aux.nil?) suma_hidratos += ( (aux[:value].hidratos)*(aux2[:value]) )/100 suma_gramos += aux2[:value] aux = aux[:next] aux2 = aux2[:next] end return ( (suma_hidratos/suma_gramos)*100 ).round(2) end
Se calcula el porcentaje de lípidos total del plato
# File lib/alimentacion/platos.rb, line 60 def porcentaje_lipidos aux = @lista_alimentos.head aux2 = @lista_gramos.head suma_lipidos = 0 suma_gramos = 0 while (!aux.nil?) suma_lipidos += ( (aux[:value].lipidos)*(aux2[:value]) )/100 suma_gramos += aux2[:value] aux = aux[:next] aux2 = aux2[:next] end return ( (suma_lipidos/suma_gramos)*100 ).round(2) end
Se calcula el porcentaje de proteínas total del plato
# File lib/alimentacion/platos.rb, line 26 def porcentaje_proteinas aux = @lista_alimentos.head aux2 = @lista_gramos.head suma_proteinas = 0 suma_gramos = 0 while (!aux.nil?) suma_proteinas += ( (aux[:value].proteinas)*(aux2[:value]) )/100 suma_gramos += aux2[:value] aux = aux[:next] aux2 = aux2[:next] end return ( (suma_proteinas/suma_gramos)*100 ).round(2) end
Se obtiene el plato formateado
# File lib/alimentacion/platos.rb, line 94 def to_s aux = @lista_alimentos.head aux2 = @lista_gramos.head vector = [] vector << @nombre_plato while (!aux.nil?) vector << aux[:value].to_s vector << aux2[:value] aux = aux[:next] aux2 = aux2[:next] end return vector end
Se calcula el valor calórico total del plato
# File lib/alimentacion/platos.rb, line 77 def valor_calorico aux = @lista_alimentos.head aux2 = @lista_gramos.head calorias = 0 while (!aux.nil?) aux[:value].proteinas = ( (aux[:value].proteinas) * (aux2[:value]) )/100 aux[:value].hidratos = ( (aux[:value].hidratos) * (aux2[:value]) )/100 aux[:value].lipidos = ( (aux[:value].lipidos) * (aux2[:value]) )/100 calorias += aux[:value].valor_energetico aux = aux[:next] aux2 = aux2[:next] end return calorias.round(2) end