Class: NutritionalCalculator::Food
- Inherits:
-
Object
- Object
- NutritionalCalculator::Food
- Includes:
- Comparable
- Defined in:
- lib/nutritional_calculator/food.rb
Overview
Esta clase representa a un alimento de manera abstracta. Contiene su nombre y su información nutricional. Se ha incluido el módulo Comparable.
Direct Known Subclasses
Constant Summary collapse
- PROTEINS_VALUE =
valor nutricional de las proteinas: 4.0
4.0- CARBOHYDRATE_VALUE =
Valor nutricional de los glúcidos: 4.0
4.0- LIPIDS_VALUE =
Valor nutricional de los lípidos: 9.0
9.0
Instance Attribute Summary collapse
-
#carbohydrates ⇒ Object
readonly
Returns the value of attribute carbohydrates.
-
#glucose_concentration ⇒ Object
readonly
Returns the value of attribute glucose_concentration.
-
#lipids ⇒ Object
readonly
Returns the value of attribute lipids.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#proteins ⇒ Object
readonly
Returns the value of attribute proteins.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Método que permite hacer al alimento Comparable.
-
#aibc(individual) ⇒ Object
Método que permite calcular el área incremental bajo la curva de las mediciones de glucosa de un alimento.
-
#get_nutritional_value ⇒ float
Método que devuelve el valor nutricional del alimento.
-
#glycemic_index ⇒ Object
Método que calcula el índice glucémico del alimento, haciendo la media del índice glucémico para los individuos.
-
#individual_glycemic_index(individual) ⇒ Object
Método que calcula el índice glucémico del alimento para un individuo concreto.
-
#initialize(name, proteins, carbohydrates, lipids, glucose_concentration = nil, glucose = nil) ⇒ Food
constructor
Constructor.
-
#to_s ⇒ String
Método que transforma el objeto en un String.
- #weight ⇒ Object
Constructor Details
#initialize(name, proteins, carbohydrates, lipids, glucose_concentration = nil, glucose = nil) ⇒ Food
Constructor.
30 31 32 33 34 35 36 37 |
# File 'lib/nutritional_calculator/food.rb', line 30 def initialize(name, proteins, carbohydrates, lipids, glucose_concentration = nil, glucose = nil) @name = name @proteins = proteins @carbohydrates = carbohydrates @lipids = lipids @glucose_concentration = glucose_concentration @glucose = glucose end |
Instance Attribute Details
#carbohydrates ⇒ Object (readonly)
Returns the value of attribute carbohydrates.
19 20 21 |
# File 'lib/nutritional_calculator/food.rb', line 19 def carbohydrates @carbohydrates end |
#glucose_concentration ⇒ Object (readonly)
Returns the value of attribute glucose_concentration.
19 20 21 |
# File 'lib/nutritional_calculator/food.rb', line 19 def glucose_concentration @glucose_concentration end |
#lipids ⇒ Object (readonly)
Returns the value of attribute lipids.
19 20 21 |
# File 'lib/nutritional_calculator/food.rb', line 19 def lipids @lipids end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
19 20 21 |
# File 'lib/nutritional_calculator/food.rb', line 19 def name @name end |
#proteins ⇒ Object (readonly)
Returns the value of attribute proteins.
19 20 21 |
# File 'lib/nutritional_calculator/food.rb', line 19 def proteins @proteins end |
Instance Method Details
#<=>(other) ⇒ Object
Método que permite hacer al alimento Comparable. En mi caso el criterio de comparación ha sido el valor nutricional del alimento.
62 63 64 |
# File 'lib/nutritional_calculator/food.rb', line 62 def <=> (other) get_nutritional_value <=> other.get_nutritional_value end |
#aibc(individual) ⇒ Object
Método que permite calcular el área incremental bajo la curva de las mediciones de glucosa de un alimento. Se ha realizado mediante programación funcional.
70 71 72 |
# File 'lib/nutritional_calculator/food.rb', line 70 def aibc(individual) (1..24).lazy.map { |i| s_value(individual, i) }.map { |j| (5.0 / 2.0) * j }.reduce('+') end |
#get_nutritional_value ⇒ float
Método que devuelve el valor nutricional del alimento. El valor nutricional se calcula como la suma del producto de los valores nutricionales de los macronutrientes por los gramos de dicho macronutriente presente en el alimento.
53 54 55 |
# File 'lib/nutritional_calculator/food.rb', line 53 def get_nutritional_value @proteins * PROTEINS_VALUE + @carbohydrates * CARBOHYDRATE_VALUE + @lipids * LIPIDS_VALUE end |
#glycemic_index ⇒ Object
Método que calcula el índice glucémico del alimento, haciendo la media del índice glucémico para los individuos.
84 85 86 |
# File 'lib/nutritional_calculator/food.rb', line 84 def glycemic_index (0...@glucose_concentration.size).map { |i| individual_glycemic_index(i) }.instance_eval { reduce('+') / size.to_f} end |
#individual_glycemic_index(individual) ⇒ Object
Método que calcula el índice glucémico del alimento para un individuo concreto. Se ha realizado mediante programación funcional.
78 79 80 |
# File 'lib/nutritional_calculator/food.rb', line 78 def individual_glycemic_index(individual) 100.0 * (aibc(individual) / @glucose.aibc(individual)) end |
#to_s ⇒ String
Método que transforma el objeto en un String. De esta forma será formateado por pantalla.
43 44 45 |
# File 'lib/nutritional_calculator/food.rb', line 43 def to_s "#{@name} -> proteínas(#{@proteins}) glúcidos(#{@carbohydrates}) lípidos(#{@lipids})" end |
#weight ⇒ Object
88 89 90 |
# File 'lib/nutritional_calculator/food.rb', line 88 def weight @proteins + @carbohydrates + @lipids end |