Class: Plato

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

Overview

Objeto que representa un plato con multiples comidas

Direct Known Subclasses

Plato_2

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lista_plato, lista_cantidad, nombre_plato) ⇒ Plato

constructor que recibe la lista con alimentos, otra lista con la cantidad del alimento correspondiente y el nombre del plato



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/practica/plato.rb', line 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
	@proteinas=@carbohidratos=@lipidos=@calorias=@p_calorias= @p_lipidos = @p_carbohidratos = @total = 0 	#inicializacmos todos los atributos a 0
	
	@lista = lista_plato 		#asignamos los atributos que tenemos 
	@nombre = nombre_plato
	@cantidad= lista_cantidad

	self.calc_proteina		#llamamos a los diferentes metedos para dar valor a los diferentes atributos
	self.calc_lipido
	self.calc_carbohidrato
	@total = @proteinas + @lipidos + @carbohidratos
	
	self.calc_porcentajes
	self.calc_calorias
end

Instance Attribute Details

#caloriasObject (readonly)

Returns the value of attribute calorias.



4
5
6
# File 'lib/practica/plato.rb', line 4

def calorias
  @calorias
end

#cantidadObject (readonly)

Returns the value of attribute cantidad.



4
5
6
# File 'lib/practica/plato.rb', line 4

def cantidad
  @cantidad
end

#carbohidratosObject (readonly)

Returns the value of attribute carbohidratos.



4
5
6
# File 'lib/practica/plato.rb', line 4

def carbohidratos
  @carbohidratos
end

#lipidosObject (readonly)

Returns the value of attribute lipidos.



4
5
6
# File 'lib/practica/plato.rb', line 4

def lipidos
  @lipidos
end

#listaObject (readonly)

Returns the value of attribute lista.



4
5
6
# File 'lib/practica/plato.rb', line 4

def lista
  @lista
end

#nombreObject (readonly)

Returns the value of attribute nombre.



4
5
6
# File 'lib/practica/plato.rb', line 4

def nombre
  @nombre
end

#p_carbohidratosObject (readonly)

Returns the value of attribute p_carbohidratos.



4
5
6
# File 'lib/practica/plato.rb', line 4

def p_carbohidratos
  @p_carbohidratos
end

#p_lipidosObject (readonly)

Returns the value of attribute p_lipidos.



4
5
6
# File 'lib/practica/plato.rb', line 4

def p_lipidos
  @p_lipidos
end

#p_proteinasObject (readonly)

Returns the value of attribute p_proteinas.



4
5
6
# File 'lib/practica/plato.rb', line 4

def p_proteinas
  @p_proteinas
end

#proteinasObject (readonly)

Returns the value of attribute proteinas.



4
5
6
# File 'lib/practica/plato.rb', line 4

def proteinas
  @proteinas
end

Instance Method Details

#<=>(other) ⇒ Object

operador <=>



92
93
94
95
96
97
98
99
100
# File 'lib/practica/plato.rb', line 92

def <=> (other) 					#operador <=> 
	
	if other.is_a? Plato 			#verificamos que sea una instancia de Plato
		return (self.calorias <=> other.calorias)  
	else  							# en cualquer otro caso retornamos nil
		return nil
	end

end

#==(other) ⇒ Object

operador de comparacion



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

def == (other)			# operador de comparacion
	if other.instance_of? Plato  		# solo compara si tenemos una instancia de Plato
	
	self.to_s == other.to_s 			# compara el formato en string de ambos objetos
	else			
		false
	end
end

#calc_caloriasObject

metodo que calcula las calorias totales del plato (Kcal)



67
68
69
70
# File 'lib/practica/plato.rb', line 67

def calc_calorias	#metodo que calcula las calorias totales del plato (Kcal)
	@calorias = (@proteinas*4 + @carbohidratos*9 + @lipidos*4).round(2)
	
end

#calc_carbohidratoObject

metodo que calcula los carbohidratos del plato



58
59
60
61
62
63
64
65
66
# File 'lib/practica/plato.rb', line 58

def calc_carbohidrato	#metodo que calcula los carbohidratos del plato
	contador=0
	while( @lista[contador] != nil && @cantidad[contador] != nil)  do
		
		@carbohidratos=@carbohidratos + calcular_equivalente( @lista[contador].get_valor.carbohidratos , @cantidad[contador].get_valor )
		contador = contador +1
	end
	@carbohidratos
end

#calc_lipidoObject

metodo que calcula los lipidos del plato



48
49
50
51
52
53
54
55
56
# File 'lib/practica/plato.rb', line 48

def calc_lipido		#metodo que calcula los lipidos del plato
	contador=0
	while( @lista[contador] != nil && @cantidad[contador] != nil)  do
		
		@lipidos=@lipidos + calcular_equivalente( @lista[contador].get_valor.lipidos , @cantidad[contador].get_valor )
		contador = contador +1
	end
	@lipidos
end

#calc_porcentajesObject

metodo que obtiene la proporcion de lipido,proteinas y carbohidratos de cada alimento



72
73
74
75
76
# File 'lib/practica/plato.rb', line 72

def calc_porcentajes	# metodo que obtiene la proporcion de lipido,proteinas y carbohidratos de cada alimento
	@p_carbohidratos = ((@carbohidratos / @total)*100.0).round(2)
	@p_lipidos = ((@lipidos / @total)*100.0).round(2)
	@p_proteinas = ((@proteinas / @total)*100.0).round(2)
end

#calc_proteinaObject

metodo que calcula la proteinas del plato



38
39
40
41
42
43
44
45
46
# File 'lib/practica/plato.rb', line 38

def calc_proteina		#metodo que calcula la proteinas del plato
	contador=0
	while( @lista[contador] != nil && @cantidad[contador] != nil)  do
		
		@proteinas=@proteinas + calcular_equivalente(@lista[contador].get_valor.proteinas,@cantidad[contador].get_valor)
		contador = contador +1
	end
	@proteinas
end

#calcular_equivalente(valor, cantidad) ⇒ Object

metodo que calcula el porcentaje de un valor cualquiera



78
79
80
81
# File 'lib/practica/plato.rb', line 78

def calcular_equivalente(valor,cantidad)		# metodo que calcula el porcentaje de un valor cualquiera
	resultado=(valor * (cantidad / 100.0)).round(2)
	return resultado
end

#get_thisObject



7
8
9
# File 'lib/practica/plato.rb', line 7

def get_this
	return self
end

#to_sObject

damos formato del plato, siendo “Nombne, Alimento, Cantidad,.…..”



27
28
29
30
31
32
33
34
35
36
# File 'lib/practica/plato.rb', line 27

def to_s		#damos formato del plato, siendo "Nombne, Alimento, Cantidad,......"
	@nombre = "#{@nombre}"
	contador =0
	 
	while (@lista[contador] != nil && @cantidad[contador] != nil) do 
		@nombre = @nombre + ",#{@lista[contador].get_valor.nombre},#{@cantidad[contador].get_valor}"
		contador = contador + 1
	end
	return @nombre
end