Class: PlatoAmbiental

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

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

#getEficienciaEnergeticaFormateadaObject

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

#getGeiAnualPlatoObject

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

#getGeiDiarioPlatoObject

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

#getTerrenoPlatoObject

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

#huellaNutricionalObject

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