Class: NutritionalCalculator::Food

Inherits:
Object
  • Object
show all
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

FoodGroup

Constant Summary

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

Instance Method Summary collapse

Constructor Details

#initialize(name, proteins, carbohydrates, lipids) ⇒ Food

Constructor.

Parameters:

  • name (String)

    Nombre del alimento que queremos representar.

  • proteins (float)

    Gramos de proteína que contiene el alimanto.

  • carbohydrates (float)

    Gramos de glúcidos que contiene el alimanto.

  • lipids (float)

    Gramos de lípidos que contiene el alimanto.



28
29
30
31
32
33
# File 'lib/nutritional_calculator/food.rb', line 28

def initialize(name, proteins, carbohydrates, lipids)
  @name = name
  @proteins = proteins
  @carbohydrates = carbohydrates
  @lipids = lipids
end

Instance Attribute Details

#carbohydratesObject (readonly)

Returns the value of attribute carbohydrates



19
20
21
# File 'lib/nutritional_calculator/food.rb', line 19

def carbohydrates
  @carbohydrates
end

#lipidsObject (readonly)

Returns the value of attribute lipids



19
20
21
# File 'lib/nutritional_calculator/food.rb', line 19

def lipids
  @lipids
end

#nameObject (readonly)

Returns the value of attribute name



19
20
21
# File 'lib/nutritional_calculator/food.rb', line 19

def name
  @name
end

#proteinsObject (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.

Parameters:



58
59
60
# File 'lib/nutritional_calculator/food.rb', line 58

def <=> (other)
  get_nutritional_value <=> other.get_nutritional_value
end

#get_nutritional_valuefloat

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.

Returns:

  • (float)

    Valor nutricional del alimento



49
50
51
# File 'lib/nutritional_calculator/food.rb', line 49

def get_nutritional_value
  @proteins * PROTEINS_VALUE + @carbohydrates * CARBOHYDRATE_VALUE + @lipids * LIPIDS_VALUE
end

#to_sString

Método que transforma el objeto en un String. De esta forma será formateado por pantalla.

Returns:

  • (String)

    String con el objeto formateado.



39
40
41
# File 'lib/nutritional_calculator/food.rb', line 39

def to_s
  "#{@name} -> proteínas(#{@proteins}) glúcidos(#{@carbohydrates}) lípidos(#{@lipids})"
end