Class: Comida::Plato

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

Overview

Clase Plato la cual vamos a utilizar para almacenar una lista de alimentos que va a ser la lista que utilizamos para almacenar los alimentos del plato y la otra lista que es la de cantidades utilizadas para cada alimento

Direct Known Subclasses

PlatoHija

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre, alimentos, cantidad) ⇒ Plato

Metodo inicializar los atributos del Plato



37
38
39
40
41
# File 'lib/comida/plato.rb', line 37

def initialize(nombre,alimentos,cantidad)
  @nombre_plato = nombre          # Nombre del Plato
  @lista_alimentos = alimentos    # Lista con los alimentos que forman el plato
  @lista_cantidades = cantidad    # Lista con las cantidades que hay que usar de cada alimento
end

Instance Attribute Details

#lista_alimentosObject (readonly)

Nombre del Plato, Lista con los alimentos que forman el plato, Lista con las cantidades que hay que usar de cada alimento



34
35
36
# File 'lib/comida/plato.rb', line 34

def lista_alimentos
  @lista_alimentos
end

#lista_cantidadesObject (readonly)

Nombre del Plato, Lista con los alimentos que forman el plato, Lista con las cantidades que hay que usar de cada alimento



34
35
36
# File 'lib/comida/plato.rb', line 34

def lista_cantidades
  @lista_cantidades
end

#nombre_platoObject (readonly)

Nombre del Plato, Lista con los alimentos que forman el plato, Lista con las cantidades que hay que usar de cada alimento



34
35
36
# File 'lib/comida/plato.rb', line 34

def nombre_plato
  @nombre_plato
end

Instance Method Details

#calculo_valor_calorico_totalObject

Calculo del valor calorico del plato en funcion de las proteinas,lipidos e hidratos de carbono que contienen los alimentos usados



96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/comida/plato.rb', line 96

def calculo_valor_calorico_total
  recorrido = lista_alimentos.head
  cantidad = lista_cantidades.head
  acumulador = 0

  while (recorrido != nil && cantidad != nil)
    acumulador = acumulador + (((recorrido.value.proteinas * cantidad.value)/1000) * 4) + (((recorrido.value.lipidos * cantidad.value)/1000) * 9) + (((recorrido.value.carbohidratos * cantidad.value)/1000) * 4)

    recorrido = recorrido.next
    cantidad = cantidad.next
  end

  acumulador.round(2)
end

#porcentaje_carbohidratosObject

Metodo para calcular el porcentaje total de hidratos de carbono de todos los alimentos que se han usado para crear el plato



79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/comida/plato.rb', line 79

def porcentaje_carbohidratos
  recorrido = lista_alimentos.head
  acumulador = 0
  porcentaje = 0

  while recorrido != nil
    acumulador = acumulador + recorrido.value.proteinas + recorrido.value.carbohidratos + recorrido.value.lipidos
    porcentaje = porcentaje + recorrido.value.carbohidratos

    recorrido = recorrido.next
  end

  ((porcentaje * 100)/acumulador).round(2)
end

#porcentaje_lipidosObject

Metodo para calcular el porcentaje total de lipidos de todos los alimentos que se han usado para crear el plato



62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/comida/plato.rb', line 62

def porcentaje_lipidos
  recorrido = lista_alimentos.head
  acumulador = 0
  porcentaje = 0

  while recorrido != nil
    acumulador = acumulador + recorrido.value.proteinas + recorrido.value.carbohidratos + recorrido.value.lipidos
    porcentaje = porcentaje + recorrido.value.lipidos

    recorrido = recorrido.next
  end

  ((porcentaje * 100)/acumulador).round(2)
end

#porcentaje_proteinasObject

Metodo para calcular el porcentaje total de proteinas de todos los alimentos que se han usado para crear el plato



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/comida/plato.rb', line 45

def porcentaje_proteinas
  recorrido = lista_alimentos.head
  acumulador = 0
  porcentaje = 0

  while recorrido != nil
    acumulador = acumulador + recorrido.value.proteinas + recorrido.value.carbohidratos + recorrido.value.lipidos
    porcentaje = porcentaje + recorrido.value.proteinas

    recorrido = recorrido.next
  end

  ((porcentaje * 100)/acumulador).round(2)
end

#to_sObject

Metodo para formatear la salida de la cantidad de cada alimento con su correspondiente alimento



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/comida/plato.rb', line 112

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
end