Class: PlatoAmbiental

Inherits:
Plato
  • Object
show all
Defined in:
lib/tddAlimentos/platoAmbiental.rb

Overview

platoAmbiental.rb

Autor

Himar Manuel Barquín Carrasco

Web

github.com/ULL-ESIT-LPP-1920/tdd-alu0101119373

Descripción

Clase que hereda de la clase Plato, y que incorpora los atributos gei y terreno, que nos informan de los gases de efecto invernadero y el terreno en metros cuadrados que son necesarios para producir este plato

Métodos

  • to_s

  • calc_vct

  • nutritional_footprint

  • calc_gei

  • calc_terrain

  • <=>

Instance Attribute Summary collapse

Attributes inherited from Plato

#food, #name, #percentage_carbohydrates, #percentage_lipids, #percentage_proteins, #quantities, #vct

Instance Method Summary collapse

Methods inherited from Plato

#calc_perc_carbohydrates, #calc_perc_lipids, #calc_perc_proteins, #calc_vct

Constructor Details

#initialize(name, alimentos = [], gramos = []) ⇒ PlatoAmbiental

Constructor de la clase PlatoAmbiental

Parámetros
  • name: Nombre del plato

  • alimentos: Conjunto de alimentos que componen el plato

  • gramos: Cantidades en gramos de cada alimento del plato



28
29
30
31
32
33
# File 'lib/tddAlimentos/platoAmbiental.rb', line 28

def initialize (name, alimentos = [], gramos = [])
    super(name, alimentos, gramos)

    @gei = calc_gei
    @terrain = calc_terrain
end

Instance Attribute Details

#geiObject (readonly)

Returns the value of attribute gei.



21
22
23
# File 'lib/tddAlimentos/platoAmbiental.rb', line 21

def gei
  @gei
end

#terrainObject (readonly)

Returns the value of attribute terrain.



21
22
23
# File 'lib/tddAlimentos/platoAmbiental.rb', line 21

def terrain
  @terrain
end

Instance Method Details

#<=>(another) ⇒ Object

Permite la comparación de dos ‘platos ambientales’ mediante la huella nutricional

Parámetros
  • another: objeto PlatoAmbiental que comparar con el objeto invocante

Devuelve

‘true’ si la comparación es verdadera. ‘false’ en otro caso



104
105
106
# File 'lib/tddAlimentos/platoAmbiental.rb', line 104

def <=> (another)
    self.nutritional_footprint <=> another.nutritional_footprint
end

#calc_geiObject

Calcula el gas de efecto invernadero que se produce al crear el plato

Devuelve

GEI del plato



74
75
76
77
78
79
80
81
82
83
# File 'lib/tddAlimentos/platoAmbiental.rb', line 74

def calc_gei
    datos = @food.collect { |x| x.gei }
    gramos = @quantities.collect { |x| x/100.0 }
    result = 0.0

    for i in 0...datos.size
        result += datos[i] * gramos[i]
    end
    result
end

#calc_terrainObject

Calcula el terreno consumido por la producción del plato

Devuelve

Valor del terreno



88
89
90
91
92
93
94
95
96
97
# File 'lib/tddAlimentos/platoAmbiental.rb', line 88

def calc_terrain
    datos = @food.collect { |x| x.terrain }
    gramos = @quantities.collect { |x| x/100.0 }
    result = 0.0

    for i in 0...datos.size
        result += datos[i] * gramos[i]
    end
    result
end

#nutritional_footprintObject

Calcula la huella nutricional del plato

Devuelve

Valor de la huella nutricional



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/tddAlimentos/platoAmbiental.rb', line 49

def nutritional_footprint
    kcal_impact = 0
    if @vct < 670
        kcal_impact = 1
    elsif @vct > 830
        kcal_impact = 3
    else
        kcal_impact = 2
    end

    gei_impact = 0
    if @gei < 800
        gei_impact = 1
    elsif @gei > 1200
        gei_impact = 3
    else
        gei_impact = 2
    end

    (kcal_impact + gei_impact) / 2.0
end

#to_sObject

Imprime la información de la clase Plato y le añade la información del GEI y el terreno

Devuelve

Cadena de texto con la información del plato de la clase Plato y la información del GEI y el terreno



38
39
40
41
42
43
44
# File 'lib/tddAlimentos/platoAmbiental.rb', line 38

def to_s
    result = ""

    result += super.to_s
    result += "\nGEI: #{@gei.round(2)} kgCO2eq"
    result += "\nTerreno: #{@terrain.round(2)} m2 / año"
end