Class: Food

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, proteins, carbohydrates, lipids, gei, ground, amount) ⇒ Food

Inicializa el objeto de la clase Food

Parameters:

  • name (String)

    nombre del alimento

  • proteins (Float)

    cantidad de proteínas

  • carbohydrates (Float)

    cantidad de carbohidratos

  • lipids (Float)

    cantidad de lípidos

  • gei (Float)

    cantidad de gases de efecto invernadero

  • ground (Float)

    cantidad de uso del terreno

  • amount (Float)

    cantidad de alimento



27
28
29
30
31
32
33
34
35
36
# File 'lib/alimento.rb', line 27

def initialize(name, proteins, carbohydrates, lipids, gei, ground, amount)
	@name = name
	@proteins = ((amount * proteins)/100).ceil(2)
	@carbohydrates = ((amount * carbohydrates)/100).ceil(2)
	@lipids = ((amount * lipids)/100).ceil(2)
	@gei = ((amount * gei)/1000).ceil(2)
	@ground = ((amount * ground)/1000).ceil(2)
	@amount = amount
	@eficiencia_energetica = get_eficiencia_energetica
end

Instance Attribute Details

#amountObject

Devuelve el valor del atributo



8
9
10
# File 'lib/alimento.rb', line 8

def amount
  @amount
end

#carbohydratesObject

Devuelve el valor del atributo



8
9
10
# File 'lib/alimento.rb', line 8

def carbohydrates
  @carbohydrates
end

#eficiencia_energeticaObject (readonly)

Returns the value of attribute eficiencia_energetica.



4
5
6
# File 'lib/alimento.rb', line 4

def eficiencia_energetica
  @eficiencia_energetica
end

#geiObject

Devuelve el valor del atributo



8
9
10
# File 'lib/alimento.rb', line 8

def gei
  @gei
end

#groundObject

Devuelve el valor del atributo



8
9
10
# File 'lib/alimento.rb', line 8

def ground
  @ground
end

#lipidsObject

Devuelve el valor del atributo



8
9
10
# File 'lib/alimento.rb', line 8

def lipids
  @lipids
end

#nameObject

Devuelve el valor del atributo



8
9
10
# File 'lib/alimento.rb', line 8

def name
  @name
end

#proteinsObject

Devuelve el valor del atributo



8
9
10
# File 'lib/alimento.rb', line 8

def proteins
  @proteins
end

Instance Method Details

#<=>(other) ⇒ Boolean

Se redefine la comparación para que se realice en base a la eficiencia energética

Parameters:

  • other (Food)

    tipo del parámetro

Returns:

  • (Boolean)

    verdadero o falso si se cumple la condición o no.



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

def <=>(other)
	@eficiencia_energetica <=> other.eficiencia_energetica
end

#calculate_kcalFloat

Calcula la cantidad de kcal que produce el alimento

Returns:

  • (Float)

    cantidad de kcal



97
98
99
100
101
# File 'lib/alimento.rb', line 97

def calculate_kcal
	kcal = 0.0
	kcal += (@lipids * 9) + (@carbohydrates * 4) + (@proteins * 4)
	kcal.ceil(2)
end

#calculate_kcal_groundFloat

Calcula las kcal que produce el alimento por m² utilizado (kcal/m²) mediante la siguiente regla de tres: uso de terreno m² —–> kcal que produce el alimento 1m² —–> ?kcal/m²

Returns:

  • (Float)

    cantidad de kcal/m²



116
117
118
119
120
121
# File 'lib/alimento.rb', line 116

def calculate_kcal_ground
	kcal = 0.0
	kcal += (@lipids * 9) + (@carbohydrates * 4) + (@proteins * 4)
	kcal = kcal/@ground
	kcal.ceil(2)
end

#get_amountFloat

Devuelve la cantidad de alimento

Returns:

  • (Float)

    cantidad de alimento



83
84
85
# File 'lib/alimento.rb', line 83

def get_amount
	@amount
end

#get_carbohydratesFloat

Devuelve la cantidad de carbohidratos del alimento

Returns:

  • (Float)

    cantidad de carbohidratos



55
56
57
# File 'lib/alimento.rb', line 55

def get_carbohydrates
	@carbohydrates
end

#get_eficiencia_energeticaFloat

Se calcula la eficiencia energética del alimento mediante las kcal generadas y los gases de efecto invernadero por metro² necesarios para generar dichas kcal

Returns:

  • (Float)

    ceficiencia energética



149
150
151
152
153
154
155
# File 'lib/alimento.rb', line 149

def get_eficiencia_energetica
	eficiencia = 0.0
	kcal = calculate_kcal_ground #devuelve las calorias producidas por m² (kcal/m)²
	geikcalground = get_gei_ground #devuelve la energia necesaria para producir esas calorias por m² ( kcal/m)²
	eficiencia = kcal/geikcalground #Se calcula la energia necesaria para producir la cantidad de alimento indicada habiendo calculado sus kcal
	eficiencia.ceil(2)
end

#get_geiFloat

Devuelve la cantidad de gases de efecto invernadero que genera el alimento. Se toman como si fuera la emisión de carbono que se genera, es decir, en kgCO2eq

Returns:

  • (Float)

    cantidad de gases de efecto invernadero



69
70
71
# File 'lib/alimento.rb', line 69

def get_gei
	@gei
end

#get_gei_groundFloat

Se calculan los gases de efecto invernadero generados por kcal por m². Se utiliza la equivalencia siguiente: kJ/m² —> kcal/m²

Returns:

  • (Float)

    cantidad de gases de efecto invernadero por kcal



140
141
142
143
144
# File 'lib/alimento.rb', line 140

def get_gei_ground
	geikcal = get_gei_kcal
	geikcalground = geikcal / @ground #(kcal/m²)
	geikcalground.ceil(2)
end

#get_gei_kcalFloat

Se calculan los gases de efecto invernadero generados por kcal. Se utilizan las siguientes reglas de tres: 1 kgCO2eq —> 3.353 kWh 1 kWh —> 3600 kJ 1 kJ —> 0,239006 kcal

Returns:

  • (Float)

    cantidad de gases de efecto invernadero por kcal



129
130
131
132
133
134
# File 'lib/alimento.rb', line 129

def get_gei_kcal
	geikcal = @gei * 3.353
	geikcal = geikcal * 3600
	geikcal =  geikcal * 0.239006
	geikcal.ceil(2)
end

#get_groundFloat

Devuelve la cantidad de uso del terreno para generar el alimento.

Returns:

  • (Float)

    cantidad de uso del terreno



76
77
78
# File 'lib/alimento.rb', line 76

def get_ground
	@ground
end

#get_kcalFloat

Devuelve la cantidad de kcal que aporta el alimento

Returns:

  • (Float)

    cantidad de kcal



90
91
92
# File 'lib/alimento.rb', line 90

def get_kcal
	kcal = calculate_kcal
end

#get_kcal_groundFloat

Devuelve la cantidad de kcal generadas por m² del alimento

Returns:

  • (Float)

    cantidad de kcal



106
107
108
109
# File 'lib/alimento.rb', line 106

def get_kcal_ground
	#Se calculan las kcal generadas por m²
	kcal = calculate_kcal_ground
end

#get_lipidsFloat

Devuelve la cantidad de lípidos del alimento

Returns:

  • (Float)

    cantidad de lípidos



62
63
64
# File 'lib/alimento.rb', line 62

def get_lipids
	@lipids
end

#get_nameString

Devuelve el nombre del alimento

Returns:

  • (String)

    nombre del alimento



41
42
43
# File 'lib/alimento.rb', line 41

def get_name
	@name
end

#get_proteinsFloat

Devuelve la cantidad de proteínas del alimento

Returns:

  • (Float)

    cantidad de proteínas



48
49
50
# File 'lib/alimento.rb', line 48

def get_proteins
	@proteins
end

#to_sString

Devuelve el alimento formateado con toda su información alimentaria

Returns:

  • (String)

    alimento formateado



160
161
162
# File 'lib/alimento.rb', line 160

def to_s
	"\n#{@amount}g de #{@name} -> Proteínas #{@proteins}g, Carbohidratos #{@carbohydrates}g, Lípidos #{@lipids}g, Gases de efecto invernadero #{@gei} kgCO2eq, Uso del terreno #{@ground}"
end