Class: Alimento::Plato

Inherits:
Object
  • Object
show all
Includes:
Comparable, Enumerable
Defined in:
lib/alimento/plato.rb

Direct Known Subclasses

PlatoAmbiental

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre, lista, cantidades) ⇒ Plato

Note:

Constructor de la clase

Returns a new instance of Plato

Parameters:

  • nombre

    Identificador del plato

  • lista

    Lista de alimentos

  • cantidades

    Vector de las cantidades de cada alimento



16
17
18
# File 'lib/alimento/plato.rb', line 16

def initialize(nombre, lista, cantidades)
	@nombre, @lista, @cantidades = nombre, lista, cantidades
end

Instance Attribute Details

#cantidadesObject (readonly)

Returns the value of attribute cantidades



9
10
11
# File 'lib/alimento/plato.rb', line 9

def cantidades
  @cantidades
end

#listaObject (readonly)

Returns the value of attribute lista



9
10
11
# File 'lib/alimento/plato.rb', line 9

def lista
  @lista
end

#nombreObject (readonly)

Returns the value of attribute nombre



9
10
11
# File 'lib/alimento/plato.rb', line 9

def nombre
  @nombre
end

Instance Method Details

#<=>(otro) ⇒ Object

Note:

Comparador de platos

Returns Plato con mayor contenido en kcal

Parameters:

  • otro

    Objeto de tipo plato con el que comparar

Returns:

  • Plato con mayor contenido en kcal



23
24
25
# File 'lib/alimento/plato.rb', line 23

def <=>(otro)
	VCT() <=> otro.VCT
end

#porcentaje_carbohidratosFloat

Note:

Calculo del procentaje de carbohidratos del plato

Returns Porcentaje de carbohidratos

Returns:

  • (Float)

    Porcentaje de carbohidratos



56
57
58
59
60
61
62
63
64
# File 'lib/alimento/plato.rb', line 56

def porcentaje_carbohidratos
total = VCT()
carbohidratos =
i = 0
	lista.each{|iter|
		carbohidratos += iter.value.valor_glucidos(iter.value.carbohidratos * @cantidades[i]/100)
		i += 1}
	return ((carbohidratos * 100) / total).round(1)
end

#porcentaje_lipidosFloat

Note:

Calculo del procentaje de lipidos del plato

Returns Porcentaje de lipidos

Returns:

  • (Float)

    Porcentaje de lipidos



69
70
71
72
73
74
75
76
77
# File 'lib/alimento/plato.rb', line 69

def porcentaje_lipidos
total = VCT()
lipidos =
i = 0
	lista.each{|iter|
		lipidos += iter.value.valor_lipidos(iter.value.lipidos * @cantidades[i]/100)
		i += 1}
	return ((lipidos * 100) / total).round(1)
end

#porcentaje_proteinasFloat

Note:

Calculo del procentaje de proteinas del plato

Returns Porcentaje de proteinas

Returns:

  • (Float)

    Porcentaje de proteinas



43
44
45
46
47
48
49
50
51
# File 'lib/alimento/plato.rb', line 43

def porcentaje_proteinas
total = VCT()
proteinas =
i = 0
	lista.each{|iter|
		proteinas += iter.value.valor_proteinas(iter.value.proteinas * @cantidades[i]/100)
		i += 1}
	return ((proteinas * 100) / total).round(1)
end

#to_sString

Note:

Formateo del plato

Returns El nombre del plato y los alimentos que lo componen

Returns:

  • (String)

    El nombre del plato y los alimentos que lo componen



82
83
84
85
86
87
88
89
90
# File 'lib/alimento/plato.rb', line 82

def to_s
	string = "Plato: #{nombre}, Componentes: "
	i = 0
	lista.collect{|iter|
		string += "'#{iter.value.nombre} (#{cantidades[i]}g)' "
		i += 1 }

	return string
end

#VCTFloat

Note:

Calculo de las kcal totales de cada plato con sus cantidades

Returns Valor total de kcal

Returns:

  • (Float)

    Valor total de kcal



30
31
32
33
34
35
36
37
38
# File 'lib/alimento/plato.rb', line 30

def VCT
	total_kcal = 0
	i = 0
	@lista.each{ |iter|
		total_kcal += (iter.value.valor_energetico(iter.value.valor_glucidos(iter.value.carbohidratos), iter.value.valor_proteinas(iter.value.proteinas), iter.value.valor_lipidos(iter.value.lipidos)) * @cantidades[i]/100)
		i += 1
	}
	return total_kcal.round(1)
end