Class: Plato
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
Instance Attribute Summary collapse
-
#lista_alimentos ⇒ Object
readonly
Returns the value of attribute lista_alimentos.
-
#lista_gramos ⇒ Object
readonly
Returns the value of attribute lista_gramos.
-
#nombre_plato ⇒ Object
readonly
Returns the value of attribute nombre_plato.
Instance Method Summary collapse
-
#<=>(anOther) ⇒ Object
Se utiliza el módulo Comparable, comparando los alimentos en base a su porcentaje de proteínas.
-
#initialize(nombre_plato, lista_alimentos, lista_gramos) ⇒ Plato
constructor
Se asignan el nombre del plato, la lista de alimentos que lo compone y los gramos de cada alimento.
-
#porcentaje_hidratos ⇒ Object
Se calcula el porcentaje de hidratos de carbono total del plato.
-
#porcentaje_lipidos ⇒ Object
Se calcula el porcentaje de lípidos total del plato.
-
#porcentaje_proteinas ⇒ Object
Se calcula el porcentaje de proteínas total del plato.
-
#to_s ⇒ Object
Se obtiene el plato formateado.
-
#valor_calorico ⇒ Object
Se calcula el valor calórico total del plato.
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_alimentos ⇒ Object (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_gramos ⇒ Object (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_plato ⇒ Object (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_hidratos ⇒ Object
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_lipidos ⇒ Object
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_proteinas ⇒ Object
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_s ⇒ Object
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_calorico ⇒ Object
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 |