practica 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.coveralls.yml +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +97 -0
- data/Guardfile +82 -0
- data/README.md +11 -0
- data/Rakefile +6 -0
- data/bin/.yardoc/checksums +0 -0
- data/bin/.yardoc/complete +0 -0
- data/bin/.yardoc/object_types +0 -0
- data/bin/.yardoc/objects/root.dat +0 -0
- data/bin/.yardoc/proxy_types +0 -0
- data/bin/console +14 -0
- data/bin/doc/_index.html +85 -0
- data/bin/doc/class_list.html +51 -0
- data/bin/doc/css/common.css +1 -0
- data/bin/doc/css/full_list.css +58 -0
- data/bin/doc/css/style.css +496 -0
- data/bin/doc/file_list.html +51 -0
- data/bin/doc/frames.html +17 -0
- data/bin/doc/index.html +85 -0
- data/bin/doc/js/app.js +303 -0
- data/bin/doc/js/full_list.js +216 -0
- data/bin/doc/js/jquery.js +4 -0
- data/bin/doc/method_list.html +51 -0
- data/bin/doc/top-level-namespace.html +100 -0
- data/bin/setup +8 -0
- data/doc/Alimento.html +1221 -0
- data/doc/Lista.html +1496 -0
- data/doc/Node.html +817 -0
- data/doc/Persona.html +362 -0
- data/doc/Plato.html +1651 -0
- data/doc/Plato_2.html +1280 -0
- data/doc/Practica.html +132 -0
- data/doc/_index.html +161 -0
- data/doc/class_list.html +51 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +496 -0
- data/doc/file.README.html +81 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +17 -0
- data/doc/index.html +81 -0
- data/doc/js/app.js +303 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +667 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/practica.rb +10 -0
- data/lib/practica/lista.rb +189 -0
- data/lib/practica/menu.rb +42 -0
- data/lib/practica/nodo.rb +24 -0
- data/lib/practica/persona.rb +22 -0
- data/lib/practica/plato.rb +103 -0
- data/lib/practica/plato_herencia.rb +140 -0
- data/lib/practica/plato_herencia2.rb +44 -0
- data/lib/practica/practica6.rb +53 -0
- data/lib/practica/version.rb +4 -0
- data/practica.gemspec +46 -0
- metadata +215 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Top Level Namespace
|
8
|
+
|
9
|
+
— Documentation by YARD 0.9.20
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
pathId = "";
|
19
|
+
relpath = '';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="_index.html">Index</a> »
|
40
|
+
|
41
|
+
|
42
|
+
<span class="title">Top Level Namespace</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Top Level Namespace
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
</div>
|
80
|
+
|
81
|
+
<h2>Defined Under Namespace</h2>
|
82
|
+
<p class="children">
|
83
|
+
|
84
|
+
|
85
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Practica.html" title="Practica (module)">Practica</a></span>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Alimento.html" title="Alimento (class)">Alimento</a></span>, <span class='object_link'><a href="Lista.html" title="Lista (class)">Lista</a></span>, <span class='object_link'><a href="Node.html" title="Node (class)">Node</a></span>, <span class='object_link'><a href="Persona.html" title="Persona (class)">Persona</a></span>, <span class='object_link'><a href="Plato.html" title="Plato (class)">Plato</a></span>, <span class='object_link'><a href="Plato_2.html" title="Plato_2 (class)">Plato_2</a></span>
|
90
|
+
|
91
|
+
|
92
|
+
</p>
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
</div>
|
103
|
+
|
104
|
+
<div id="footer">
|
105
|
+
Generated on Thu Dec 19 12:37:22 2019 by
|
106
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
107
|
+
0.9.20 (ruby-2.5.7).
|
108
|
+
</div>
|
109
|
+
|
110
|
+
</div>
|
111
|
+
</body>
|
112
|
+
</html>
|
data/lib/practica.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Aqui incluimos los diferentes ficheros que definen las clases que vamos a usar
|
2
|
+
require "practica/version"
|
3
|
+
require "practica/practica6"
|
4
|
+
require "practica/persona"
|
5
|
+
require "practica/nodo"
|
6
|
+
require "practica/lista"
|
7
|
+
require "practica/plato"
|
8
|
+
require "practica/plato_herencia"
|
9
|
+
require "practica/plato_herencia2"
|
10
|
+
require "practica/menu.rb"
|
@@ -0,0 +1,189 @@
|
|
1
|
+
# Clase Lista que contendra diversos nodos enlazados entre si
|
2
|
+
class Lista
|
3
|
+
attr_reader :head,:tail,:size
|
4
|
+
include Enumerable #incluimos el modulo Enumerable
|
5
|
+
|
6
|
+
def initialize(head) #constructor
|
7
|
+
@size = 1 #inicializamos el size de la lista a 1
|
8
|
+
@gei=0.0 #establecemos @terreno y @ gei total a 0
|
9
|
+
@terreno=0.0
|
10
|
+
@cadena ="#{head.to_s}" # creamos el objeto lista formateado a string
|
11
|
+
@nuevo = Node.new(head,nil,nil) # creamos el nodo con el objeto que le pasamos por parametro
|
12
|
+
@head = @nuevo # establecemos que tanto la cabeza como la cola son el mismo, pues la lista solo tiene un nodo
|
13
|
+
@tail = @nuevo
|
14
|
+
|
15
|
+
end
|
16
|
+
def each #operador each para Enumerable
|
17
|
+
@i = head #indice que empieza en head
|
18
|
+
while (@i != nil) # bucle para recorrer la lista, hasta que el indice sea nil ( el siguiente despues de la cola)
|
19
|
+
yield @i.get_valor # marcamos el valor del nodo en el que se encuentra el indice
|
20
|
+
@i=@i.get_siguiente # hacemos que el indice avance al proximo nodo
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def [] (index) #operador de acceso segun un indice
|
25
|
+
if index.is_a?Integer #verificamos que el indice es un entero
|
26
|
+
if index== 0 # en caso de que sea 0, retornamos head
|
27
|
+
return @head.get_this
|
28
|
+
elsif index== (@size -1) #en caso de que sea el ultimo, retornamos head
|
29
|
+
return @tail.get_this
|
30
|
+
elsif index< (@size -1) && index> 0 # en otro caso, recorremos la lista hasta encontrar el nodo que corresponda al indice
|
31
|
+
iterator= @head
|
32
|
+
index.times{iterator= iterator.next}
|
33
|
+
return iterator.get_this
|
34
|
+
else # en cualquier otro caso retornamos nil
|
35
|
+
return nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
return nil
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def buscar (dato,siguiente,anterior) #metodo para buscar un Alimento dentro de la lista
|
43
|
+
|
44
|
+
|
45
|
+
@actual = @head #nodo con el que vamos a comparar
|
46
|
+
@encontrado = false # condicion de parada
|
47
|
+
|
48
|
+
|
49
|
+
while (@actual != nil && @encontrado ==false) do # bucle que recorre todos los nodos hasta que o bien encuentra una coincidencia o hasta que no hayan mas nodos
|
50
|
+
|
51
|
+
if (dato == @actual.get_valor ) then # si coincide
|
52
|
+
|
53
|
+
if((siguiente == nil )&& (@actual.get_siguiente==nil)) then # en caso de que no haya siguiente
|
54
|
+
|
55
|
+
if(@actual.get_prev.get_valor == anterior) then # si el anterior coincide
|
56
|
+
|
57
|
+
@encontrado=true # lo encontamos
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
elsif (anterior==nil && @actual.get_prev== nil) then # en caso de que no haya anterior
|
62
|
+
|
63
|
+
if(@actual.get_siguiente.get_valor == siguiente)then # comparamos con el siguiente
|
64
|
+
@encontrado=true # lo encontramos
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
elsif(@actual.get_prev != nil && @actual.get_siguiente !=nil) #verificamos que tanto siguiente como anterior no son nil
|
70
|
+
if(@actual.get_siguiente.get_valor ==siguiente && @actual.get_prev.get_valor == anterior ) then #si tanto anterior como siguiente coinciden
|
71
|
+
@encontrado=true # lo encontramos
|
72
|
+
else
|
73
|
+
@actual=@actual.get_siguiente # em caso contrario avanzamos
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
else #si no coincide anterior y siguiente
|
78
|
+
|
79
|
+
@actual=@actual.get_siguiente # obtenemos el siguiente nodo
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
else #si no
|
84
|
+
@actual=@actual.get_siguiente # obtenemos el siguiente nodo
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
return @encontrado #retornamos si lo encontramos o no
|
89
|
+
end
|
90
|
+
|
91
|
+
def insertar_back(nuevo) #metodo para insertar un Alimento por el final de la lista
|
92
|
+
@size = @size +1
|
93
|
+
@nodo_nuevo = Node.new(nuevo,nil,nil)
|
94
|
+
|
95
|
+
@tail.set_next(@nodo_nuevo.get_this)
|
96
|
+
@aux=@tail.get_this
|
97
|
+
@tail = @nodo_nuevo.get_this
|
98
|
+
@tail.set_prev(@aux.get_this)
|
99
|
+
|
100
|
+
return @tail.get_valor
|
101
|
+
end
|
102
|
+
|
103
|
+
def insertar(nuevo) #metodo para insertar un Alimento por la cabeza
|
104
|
+
@size = @size +1
|
105
|
+
@nodo_nuevo = Node.new(nuevo,nil,nil)
|
106
|
+
|
107
|
+
@head.set_prev(@nodo_nuevo.get_this)
|
108
|
+
@aux = @head.get_this
|
109
|
+
@head = @nodo_nuevo.get_this
|
110
|
+
@head.set_next(@aux.get_this)
|
111
|
+
|
112
|
+
return @head.get_valor
|
113
|
+
end
|
114
|
+
|
115
|
+
def insertar_list(lista) # metodo que se encarga de enlazar dos listas
|
116
|
+
@size = @size+lista.size
|
117
|
+
@tail.set_next(lista.head.get_this)
|
118
|
+
lista.head.set_prev(@tail.get_this)
|
119
|
+
@tail=lista.tail.get_this
|
120
|
+
return @tail
|
121
|
+
end
|
122
|
+
|
123
|
+
def get_gei #metodo que obtiene el total de GEI de todos los alimentos dentro de la lista
|
124
|
+
@actual = @head
|
125
|
+
|
126
|
+
|
127
|
+
while (@actual != nil ) do # bucle que recorre todos los nodos hasta que o bien encuentra una coincidencia o hasta que no hayan mas nodos
|
128
|
+
@gei= @gei +@actual.get_valor.get_GEI
|
129
|
+
@actual = @actual.get_siguiente
|
130
|
+
end
|
131
|
+
|
132
|
+
return @gei.round(2)
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
def get_gei_y #metodo que obtioene el GEI por año
|
137
|
+
|
138
|
+
return (self.get_gei * 365).round(2)
|
139
|
+
end
|
140
|
+
|
141
|
+
def get_terreno #metodo que obtiene el terreno total de todos los Alimentos de la lista
|
142
|
+
@actual = @head
|
143
|
+
|
144
|
+
|
145
|
+
while (@actual != nil ) do # bucle que recorre todos los nodos hasta que o bien encuentra una coincidencia o hasta que no hayan mas nodos
|
146
|
+
@terreno= @terreno +@actual.get_valor.get_terreno
|
147
|
+
@actual = @actual.get_siguiente
|
148
|
+
end
|
149
|
+
|
150
|
+
return @terreno.round(2)
|
151
|
+
|
152
|
+
end
|
153
|
+
|
154
|
+
def pop # metodo que saca un alimento desde la cabeza
|
155
|
+
@size = @size -1
|
156
|
+
@aux = @head
|
157
|
+
@head =@head.get_siguiente
|
158
|
+
@head.set_prev(nil)
|
159
|
+
@aux.set_next(nil)
|
160
|
+
return @aux.get_valor
|
161
|
+
end
|
162
|
+
|
163
|
+
def pop_back # metodo que saca un alimento desde la cola
|
164
|
+
@size = @size-1
|
165
|
+
@aux =@tail
|
166
|
+
@tail = @tail.get_prev
|
167
|
+
@tail.set_next(nil)
|
168
|
+
@aux.set_prev(nil)
|
169
|
+
|
170
|
+
return @aux.get_valor
|
171
|
+
end
|
172
|
+
|
173
|
+
def to_s #metodo que formatea la lista en un string
|
174
|
+
@actual = @head.get_siguiente
|
175
|
+
if(@actual != nil) then
|
176
|
+
|
177
|
+
while (@actual!=nil) do
|
178
|
+
|
179
|
+
@cadena= @cadena + ",#{@actual.get_valor.to_s}"
|
180
|
+
@actual = @actual.get_siguiente
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
|
186
|
+
return @cadena
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Menu
|
2
|
+
attr_reader :name, :desc_menus, :menu, :precios, :total
|
3
|
+
def initialize(name, &block)
|
4
|
+
@name = name
|
5
|
+
@desc_menus = []
|
6
|
+
@menu = []
|
7
|
+
@precios = []
|
8
|
+
@total=0
|
9
|
+
|
10
|
+
if block_given?
|
11
|
+
if block.arity == 1
|
12
|
+
yield self
|
13
|
+
else
|
14
|
+
instance_eval(&block)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def componente(bloque = {})
|
20
|
+
@desc_menus << bloque[:descripcion]
|
21
|
+
@menu << bloque[:platos]
|
22
|
+
@precios << bloque[:precio]
|
23
|
+
end
|
24
|
+
def precio(coste)
|
25
|
+
@total=coste[:precio]
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_s
|
30
|
+
text = @name + "\n"
|
31
|
+
for i in 0..@desc_menus.length-1 do
|
32
|
+
text << "\t- #{@desc_menus[i]}\n"
|
33
|
+
text << "\t\t#{@menu[i]}"
|
34
|
+
text <<"\n"
|
35
|
+
text << "\t\t#{@precios[i]} €\n"
|
36
|
+
end
|
37
|
+
text<<"\n#{@total}"
|
38
|
+
text
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Estructura Nodo de la listas, contendran un valor, y la direccion al proximo y anterior nodo
|
2
|
+
Node = Struct.new(:value,:next,:prev) do
|
3
|
+
|
4
|
+
def set_next(siguiente) #metodo para establecer el proximo nodo
|
5
|
+
self.next=siguiente
|
6
|
+
end
|
7
|
+
|
8
|
+
def set_prev(anterior) #metodo para establecer el nodo anterior
|
9
|
+
self.prev = anterior
|
10
|
+
end
|
11
|
+
def get_valor #metodo para obtener el valor del nodo
|
12
|
+
self.value
|
13
|
+
end
|
14
|
+
def get_siguiente #metodo para obtener el siguiente nodo
|
15
|
+
self.next
|
16
|
+
end
|
17
|
+
def get_prev #metodo para obtener el nodo anterior
|
18
|
+
self.prev
|
19
|
+
end
|
20
|
+
def get_this #metodo para obtener la instancia de este nodo
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Clase Persona que es la que Come el alimento
|
2
|
+
class Persona
|
3
|
+
|
4
|
+
def initialize(genero,edad) #Constructor que contiene el genero y la edad de la persona
|
5
|
+
#true = hombre, false = mujer
|
6
|
+
@genero=genero
|
7
|
+
@edad=edad.to_i
|
8
|
+
@GEI=0
|
9
|
+
end
|
10
|
+
|
11
|
+
def come (a1,c1,a2,c2,a3,c3,a4,c4) #metodo que recibe diferentes alimentos y la cantidad de los mismos
|
12
|
+
@GEI=a1.get_GEI*c1
|
13
|
+
@GEI=@GEI + a2.get_GEI*c2
|
14
|
+
@GEI=@GEI + a3.get_GEI*c3
|
15
|
+
@GEI=@GEI + a4.get_GEI*c4
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_impacto #metodo que retorna el GEI total de los alimentos consumidos
|
19
|
+
return @GEI.round(2)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
#Objeto que representa un plato con multiples comidas
|
2
|
+
|
3
|
+
class Plato
|
4
|
+
attr_reader :lista, :cantidad,:nombre, :proteinas, :carbohidratos , :lipidos ,:calorias, :p_proteinas, :p_lipidos, :p_carbohidratos
|
5
|
+
include Comparable #incluimos el modulo Comparable
|
6
|
+
|
7
|
+
def get_this
|
8
|
+
return self
|
9
|
+
end
|
10
|
+
def initialize(lista_plato,lista_cantidad,nombre_plato) # constructor que recibe la lista con alimentos, otra lista con la cantidad del alimento correspondiente y el nombre del plato
|
11
|
+
@proteinas=@carbohidratos=@lipidos=@calorias=@p_calorias= @p_lipidos = @p_carbohidratos = @total = 0 #inicializacmos todos los atributos a 0
|
12
|
+
|
13
|
+
@lista = lista_plato #asignamos los atributos que tenemos
|
14
|
+
@nombre = nombre_plato
|
15
|
+
@cantidad= lista_cantidad
|
16
|
+
|
17
|
+
self.calc_proteina #llamamos a los diferentes metedos para dar valor a los diferentes atributos
|
18
|
+
self.calc_lipido
|
19
|
+
self.calc_carbohidrato
|
20
|
+
@total = @proteinas + @lipidos + @carbohidratos
|
21
|
+
|
22
|
+
self.calc_porcentajes
|
23
|
+
self.calc_calorias
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def to_s #damos formato del plato, siendo "Nombne, Alimento, Cantidad,......"
|
28
|
+
@nombre = "#{@nombre}"
|
29
|
+
contador =0
|
30
|
+
|
31
|
+
while (@lista[contador] != nil && @cantidad[contador] != nil) do
|
32
|
+
@nombre = @nombre + ",#{@lista[contador].get_valor.nombre},#{@cantidad[contador].get_valor}"
|
33
|
+
contador = contador + 1
|
34
|
+
end
|
35
|
+
return @nombre
|
36
|
+
end
|
37
|
+
|
38
|
+
def calc_proteina #metodo que calcula la proteinas del plato
|
39
|
+
contador=0
|
40
|
+
while( @lista[contador] != nil && @cantidad[contador] != nil) do
|
41
|
+
|
42
|
+
@proteinas=@proteinas + calcular_equivalente(@lista[contador].get_valor.proteinas,@cantidad[contador].get_valor)
|
43
|
+
contador = contador +1
|
44
|
+
end
|
45
|
+
@proteinas
|
46
|
+
end
|
47
|
+
|
48
|
+
def calc_lipido #metodo que calcula los lipidos del plato
|
49
|
+
contador=0
|
50
|
+
while( @lista[contador] != nil && @cantidad[contador] != nil) do
|
51
|
+
|
52
|
+
@lipidos=@lipidos + calcular_equivalente( @lista[contador].get_valor.lipidos , @cantidad[contador].get_valor )
|
53
|
+
contador = contador +1
|
54
|
+
end
|
55
|
+
@lipidos
|
56
|
+
end
|
57
|
+
|
58
|
+
def calc_carbohidrato #metodo que calcula los carbohidratos del plato
|
59
|
+
contador=0
|
60
|
+
while( @lista[contador] != nil && @cantidad[contador] != nil) do
|
61
|
+
|
62
|
+
@carbohidratos=@carbohidratos + calcular_equivalente( @lista[contador].get_valor.carbohidratos , @cantidad[contador].get_valor )
|
63
|
+
contador = contador +1
|
64
|
+
end
|
65
|
+
@carbohidratos
|
66
|
+
end
|
67
|
+
def calc_calorias #metodo que calcula las calorias totales del plato (Kcal)
|
68
|
+
@calorias = (@proteinas*4 + @carbohidratos*9 + @lipidos*4).round(2)
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
def calc_porcentajes # metodo que obtiene la proporcion de lipido,proteinas y carbohidratos de cada alimento
|
73
|
+
@p_carbohidratos = ((@carbohidratos / @total)*100.0).round(2)
|
74
|
+
@p_lipidos = ((@lipidos / @total)*100.0).round(2)
|
75
|
+
@p_proteinas = ((@proteinas / @total)*100.0).round(2)
|
76
|
+
end
|
77
|
+
|
78
|
+
def calcular_equivalente(valor,cantidad) # metodo que calcula el porcentaje de un valor cualquiera
|
79
|
+
resultado=(valor * (cantidad / 100.0)).round(2)
|
80
|
+
return resultado
|
81
|
+
end
|
82
|
+
|
83
|
+
def == (other) # operador de comparacion
|
84
|
+
if other.instance_of? Plato # solo compara si tenemos una instancia de Plato
|
85
|
+
|
86
|
+
self.to_s == other.to_s # compara el formato en string de ambos objetos
|
87
|
+
else
|
88
|
+
false
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def <=> (other) #operador <=>
|
93
|
+
|
94
|
+
if other.is_a? Plato #verificamos que sea una instancia de Plato
|
95
|
+
return (self.calorias <=> other.calorias)
|
96
|
+
else # en cualquer otro caso retornamos nil
|
97
|
+
return nil
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
end
|