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

lista_alimentos[R]
lista_gramos[R]
nombre_plato[R]

Public Class Methods

new(nombre_plato, lista_alimentos, lista_gramos) click to toggle source

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

<=>(anOther) click to toggle source

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

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

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

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

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

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