Class: Plato

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

Overview

Author

Eduardo Estévez Rodríguez ([email protected])

Copyright

Cretive Commons

License

Distributes under the same terms as Ruby

Direct Known Subclasses

Eficiencia

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre, alimentos, gramos) ⇒ Plato

Se asigna el nombre del plato, los alimentos y la cantidad de cada alimento en gramos



15
16
17
18
19
# File 'lib/feeding/plato.rb', line 15

def initialize(nombre, alimentos, gramos)
	@nombre = nombre
	@alimentos = alimentos
	@gramos = gramos
end

Instance Attribute Details

#alimentosObject (readonly)

Se incluye el mixin Comparable



11
12
13
# File 'lib/feeding/plato.rb', line 11

def alimentos
  @alimentos
end

#gramosObject (readonly)

Se incluye el mixin Comparable



11
12
13
# File 'lib/feeding/plato.rb', line 11

def gramos
  @gramos
end

#nombreObject (readonly)

Se incluye el mixin Comparable



11
12
13
# File 'lib/feeding/plato.rb', line 11

def nombre
  @nombre
end

Instance Method Details

#<=>(other) ⇒ Object

Se define para incluir el mixin Comparable Se toma como valor para la comparación las kcalorías del plato



101
102
103
# File 'lib/feeding/plato.rb', line 101

def <=>(other)
	get_kcal <=> other.get_kcal
end

#get_alimentosObject

Devuelve el conjunto de alimentos que forman el plato



27
28
29
# File 'lib/feeding/plato.rb', line 27

def get_alimentos
	@alimentos
end

#get_cbhObject

Devuelve la cantidad de carbohidratos que posee el plato



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/feeding/plato.rb', line 52

def get_cbh
		aux_ali = @alimentos.get_head()
        aux_gr = @gramos.get_head()
        carbohi_t = 0
        gramos_t = 0
        while !aux_ali.nil?
                carbohi_t += (aux_ali[:value].carbohidratos * aux_gr[:value]) / 100
                gramos_t += aux_gr[:value]
                aux_ali = aux_ali[:next]
                aux_gr = aux_gr[:next]
        end
        ((carbohi_t / gramos_t) * 100).round(2)
end

#get_gramosObject

Devuelve el conjunto de gramos que forman los alimentos del plato



32
33
34
# File 'lib/feeding/plato.rb', line 32

def get_gramos
	@gramos
end

#get_kcalObject

Devuelve la cantidad de kcalorías que posee el plato



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

def get_kcal
	aux = @alimentos.get_head()
	aux_gr = @gramos.get_head()
	kcal = 0
	while !aux.nil?
		kcal  += (aux_gr[:value] / 100) * (aux[:value].proteina * 4 + aux[:value].carbohidratos * 4 + aux[:value].lipidos * 9).round(2)
		aux = aux[:next]
		aux_gr = aux_gr[:next]
	end
	kcal.round(2)
end

#get_lpdObject

Devuelve la cantidad de lípidos que posee el plato



67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/feeding/plato.rb', line 67

def get_lpd
        aux_ali = @alimentos.get_head()
        aux_gr = @gramos.get_head()
        lipidos_t = 0
        gramos_t = 0
        while !aux_ali.nil?
                lipidos_t += (aux_ali[:value].lipidos * aux_gr[:value]) / 100
                gramos_t += aux_gr[:value]
                aux_ali = aux_ali[:next]
                aux_gr = aux_gr[:next]
        end
        ((lipidos_t / gramos_t) * 100).round(2)
end

#get_nombreObject

Devuelve el nombre del plato



22
23
24
# File 'lib/feeding/plato.rb', line 22

def get_nombre
	@nombre
end

#get_prtObject

Devuelve la cantidad de proteínas que posee el plato



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/feeding/plato.rb', line 37

def get_prt
	aux_ali = @alimentos.get_head()
	aux_gr = @gramos.get_head()
	proteinas_t = 0
	gramos_t = 0
	while !aux_ali.nil?
		proteinas_t += (aux_ali[:value].proteina * aux_gr[:value]) / 100
		gramos_t += aux_gr[:value]
		aux_ali = aux_ali[:next]
		aux_gr = aux_gr[:next]
	end
	((proteinas_t / gramos_t) * 100).round(2)
end

#to_sObject

Devuelve el plato formateado



95
96
97
# File 'lib/feeding/plato.rb', line 95

def to_s
	"(#{@nombre}, #{@alimentos.show_list}, (#{@gramos.show_list}))"
end