Class: PlatoAmbiental
- Inherits:
-
PlatoNutricional
- Object
- PlatoNutricional
- PlatoAmbiental
- Defined in:
- lib/huella/plato_ambiental.rb
Overview
Es una clase hija de PlatoNutricional, encapsula los métodos ambientales de un Plato.
Al igual que en la clase padre, se define un nombre, lista de alimentos y lista de
cantidades, que son inicializadas en el initialize de la clase padre con super
Instance Attribute Summary
Attributes inherited from PlatoNutricional
#listaAlimentos, #listaCantidades, #nombre
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Compara dos Platos según la huella nutricional.
-
#getEficienciaEnergeticaFormateada ⇒ Object
Se calcula la relación GEI/valorEnegertico y la retorna formateada.
-
#getGeiAnualPlato ⇒ Object
Retorna los gases de efecto invernadero producidos en un año por un plato.
-
#getGeiDiarioPlato ⇒ Object
Retorna los gases de efecto invernadero producidos en un día por un plato.
-
#getTerrenoPlato ⇒ Object
Retorna el uso de terreno producido en un año por un plato.
-
#huellaNutricional ⇒ Object
Retorna un número en el rango [1,3] que corresponde a la huella nutricional de un plato.
-
#initialize(nombre, listaAlimentos, listaCantidades) ⇒ PlatoAmbiental
constructor
A new instance of PlatoAmbiental.
Methods inherited from PlatoNutricional
#==, #getPorcentajeCarbohidratosPlato, #getPorcentajeLipidosPlato, #getPorcentajeProteinasPlato, #getValorEnergeticoPlato, #to_s
Constructor Details
#initialize(nombre, listaAlimentos, listaCantidades) ⇒ PlatoAmbiental
Returns a new instance of PlatoAmbiental.
8 9 10 |
# File 'lib/huella/plato_ambiental.rb', line 8 def initialize(nombre, listaAlimentos, listaCantidades) super(nombre, listaAlimentos, listaCantidades) end |
Instance Method Details
#<=>(other) ⇒ Object
Compara dos Platos según la huella nutricional
68 69 70 71 72 73 |
# File 'lib/huella/plato_ambiental.rb', line 68 def <=>(other) #-1 si left < right # 0 si left == right # 1 si left > right self.huellaNutricional <=> other.huellaNutricional end |
#getEficienciaEnergeticaFormateada ⇒ Object
Se calcula la relación GEI/valorEnegertico y la retorna formateada
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/huella/plato_ambiental.rb', line 47 def getEficienciaEnergeticaFormateada salida = [] eficienciaTotal = 0 @listaAlimentos.each_with_index do |elemento, index| energia = @listaCantidades.at(index) * elemento.getValorEnergetico gei = @listaCantidades.at(index) * elemento.gei #GEI pruducidos por 1 kcal de un alimento eficiencia = (gei/energia).round(2) eficienciaTotal += eficiencia salida << eficiencia end "[" + @nombre + " " + eficienciaTotal.round(2).to_s + " [" + salida.join(" ") + "]]" end |
#getGeiAnualPlato ⇒ Object
Retorna los gases de efecto invernadero producidos en un año por un plato
29 30 31 |
# File 'lib/huella/plato_ambiental.rb', line 29 def getGeiAnualPlato (self.getGeiDiarioPlato * 365).round(2) end |
#getGeiDiarioPlato ⇒ Object
Retorna los gases de efecto invernadero producidos en un día por un plato
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/huella/plato_ambiental.rb', line 13 def getGeiDiarioPlato geiTotal = 0 alimentoWithCantidad = @listaAlimentos.zip(@listaCantidades) alimentosMultiplicados = alimentoWithCantidad.map do |alimento, cantidad| alimento * cantidad end geiTotal = alimentosMultiplicados.reduce(:+).gei geiTotal.round(2) end |
#getTerrenoPlato ⇒ Object
Retorna el uso de terreno producido en un año por un plato
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/huella/plato_ambiental.rb', line 34 def getTerrenoPlato terrenoTotal = 0 @listaAlimentos.each_with_index do |alimento, index| terrenoTotal += alimento.terreno * @listaCantidades.at(index) end terrenoTotal.round(2) end |
#huellaNutricional ⇒ Object
Retorna un número en el rango [1,3] que corresponde a la huella nutricional de un plato
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/huella/plato_ambiental.rb', line 77 def huellaNutricional alimentoWithCantidad = @listaAlimentos.zip(@listaCantidades) #Energia energia = alimentoWithCantidad.map do |alimento, cantidad| alimento.getIndiceEnergia(cantidad) end #Huella Carbono carbono = alimentoWithCantidad.map do |alimento, cantidad| alimento.getIndiceHuellaCarbono(cantidad) end #Sumatorio dividendo = energia.reduce(:+) + carbono.reduce(:+) divisor = energia.size * 2.0 #Nota: Se divide entre la cantidad de indices (dividendo / divisor).round(2) end |