Class: Plato

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/alimentacion/platos.rb

Overview

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 ([email protected])

Copyright

Cretive Commons

License

Distributes under the same terms as Ruby

Direct Known Subclasses

Eficiencia_Energetica

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre_plato, lista_alimentos, lista_gramos) ⇒ Plato

Se asignan el nombre del plato, la lista de alimentos que lo compone y los gramos de cada alimento.



19
20
21
22
23
# 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

Instance Attribute Details

#lista_alimentosObject (readonly)

Returns the value of attribute lista_alimentos.



10
11
12
# File 'lib/alimentacion/platos.rb', line 10

def lista_alimentos
  @lista_alimentos
end

#lista_gramosObject (readonly)

Returns the value of attribute lista_gramos.



10
11
12
# File 'lib/alimentacion/platos.rb', line 10

def lista_gramos
  @lista_gramos
end

#nombre_platoObject (readonly)

Returns the value of attribute nombre_plato.



10
11
12
# File 'lib/alimentacion/platos.rb', line 10

def nombre_plato
  @nombre_plato
end

Instance Method Details

#<=>(anOther) ⇒ Object

Se utiliza el módulo Comparable, comparando los alimentos en base a su porcentaje de proteínas.



14
15
16
# File 'lib/alimentacion/platos.rb', line 14

def <=>(anOther)
        self.porcentaje_proteinas <=> anOther.porcentaje_proteinas
end

#porcentaje_hidratosObject

Se calcula el porcentaje de hidratos de carbono total del plato



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 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_lipidosObject

Se calcula el porcentaje de lípidos total del plato



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 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_proteinasObject

Se calcula el porcentaje de proteínas total del plato



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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_sObject

Se obtiene el plato formateado



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# 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_caloricoObject

Se calcula el valor calórico total del plato



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 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