Class: Comida::PlatoHija

Inherits:
Plato
  • Object
show all
Includes:
Comparable
Defined in:
lib/comida/plato.rb

Overview

Clase PlatoHija la cual vamos a utilizar para almacenar una las emisiones de efecto invernadero y el valor del terreno. Al ser una clase heredada, podremos acceder a los atributos de las clase padre

Instance Attribute Summary collapse

Attributes inherited from Plato

#lista_alimentos, #lista_cantidades, #nombre_plato

Instance Method Summary collapse

Methods inherited from Plato

#calculo_valor_calorico_total, #porcentaje_carbohidratos, #porcentaje_lipidos, #porcentaje_proteinas

Constructor Details

#initialize(nombre, alimentos, cantidad) ⇒ PlatoHija

Al igual que en la clase padre, inicializacion de los atributos con los que va a trabajar la clase PlatoHija



149
150
151
152
153
# File 'lib/comida/plato.rb', line 149

def initialize(nombre,alimentos,cantidad)
  super(nombre,alimentos,cantidad)   # Llamada al contructor de la clase padre
  @emisiones_diarias = 0             # Variable para almacenar valor de efceto invernadero
  @metros_terreno = 0                # variable para almacenar valor del terreno
end

Instance Attribute Details

#emisiones_diariasObject (readonly)

Variable para almacenar valor de efceto invernadero, variable para almacenar valor del terreno



138
139
140
# File 'lib/comida/plato.rb', line 138

def emisiones_diarias
  @emisiones_diarias
end

#metros_terrenoObject (readonly)

Variable para almacenar valor de efceto invernadero, variable para almacenar valor del terreno



138
139
140
# File 'lib/comida/plato.rb', line 138

def metros_terreno
  @metros_terreno
end

Instance Method Details

#<=>(other) ⇒ Object

Definicion del metodo <=> utilizado para comparar la huella nutricional de platos



141
142
143
144
145
# File 'lib/comida/plato.rb', line 141

def <=>(other)
  comparando = self.huella_nutricional
  comparador = other.huella_nutricional
  comparando <=> comparador
end

#calculo_emisiones_diariasObject

Metodo empleado para el calculo de las emisiones diarias de efecto invernadero



156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/comida/plato.rb', line 156

def calculo_emisiones_diarias
  recorrido = lista_alimentos.head
  cantidad = lista_cantidades.head

  while (recorrido != nil && cantidad != nil)
    @emisiones_diarias = @emisiones_diarias + ((recorrido.value.gei * cantidad.value)/1000)

    recorrido = recorrido.next
    cantidad = cantidad.next
  end

  @emisiones_diarias
end

#calculo_metros_terrenoObject

Metodo empleado para el calculo de los metros de terreno utilizados para la elaboracion del plato



172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/comida/plato.rb', line 172

def calculo_metros_terreno
  recorrido = lista_alimentos.head
  cantidad = lista_cantidades.head

  while (recorrido != nil && cantidad != nil)
    @metros_terreno = @emisiones_diarias + ((recorrido.value.terreno * cantidad.value)/1000)

    recorrido = recorrido.next
    cantidad = cantidad.next
  end

  @metros_terreno
end

#huella_nutricionalObject

Metodo utilizado para el calculo del valor de la huella nutricional del plato, el cual se basa en el dato medio del calculo del valor calorico y el calculo de las emisiones de efecto invernadero



210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'lib/comida/plato.rb', line 210

def huella_nutricional
  numero1 = self.calculo_valor_calorico_total
  numero2 = self.calculo_emisiones_diarias

  if numero1 < 670
    ienergia = 1
  elsif numero1 <=830
     ienergia = 2
  else
     ienergia = 3
  end

  if numero2 < 800
    icarbono = 1
  elsif numero2 <= 1200
    icarbono = 2
  else
    icarbono = 3
  end

  media = (ienergia + icarbono)/2
end

#to_sObject

Metodo para formatear la salida de la cantidad de gases de efecto invernadero de cada alimentos

ademas de los metros de terreno empleados


188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/comida/plato.rb', line 188

def to_s
  recorrido = lista_alimentos.head
  cantidad = lista_cantidades.head
  formateo = []

  while (recorrido != nil && cantidad != nil)
    salida =  cantidad.value.to_s + "gr de " + recorrido.value.nombre
    formateo.push(salida)

    recorrido = recorrido.next
    cantidad = cantidad.next
  end

  formateo.push(@emisiones_diarias)
  formateo.push(@metros_terreno)

  formateo
end