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



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/practica/plato.rb', line 6

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



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

def calorias
  @calorias
end

#cantidadObject (readonly)

Returns the value of attribute cantidad



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

def cantidad
  @cantidad
end

#carbohidratosObject (readonly)

Returns the value of attribute carbohidratos



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

def carbohidratos
  @carbohidratos
end

#lipidosObject (readonly)

Returns the value of attribute lipidos



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

def lipidos
  @lipidos
end

#listaObject (readonly)

Returns the value of attribute lista



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

def lista
  @lista
end

#nombreObject (readonly)

Returns the value of attribute nombre



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

def nombre
  @nombre
end

#p_carbohidratosObject (readonly)

Returns the value of attribute p_carbohidratos



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

def p_carbohidratos
  @p_carbohidratos
end

#p_lipidosObject (readonly)

Returns the value of attribute p_lipidos



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

def p_lipidos
  @p_lipidos
end

#p_proteinasObject (readonly)

Returns the value of attribute p_proteinas



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

def p_proteinas
  @p_proteinas
end

#proteinasObject (readonly)

Returns the value of attribute proteinas



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

def proteinas
  @proteinas
end

Instance Method Details

#<=>(other) ⇒ Object

operador <=>



86
87
88
89
90
91
92
93
94
# File 'lib/practica/plato.rb', line 86

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



77
78
79
80
81
82
83
84
# File 'lib/practica/plato.rb', line 77

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)



61
62
63
64
# File 'lib/practica/plato.rb', line 61

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



52
53
54
55
56
57
58
59
60
# File 'lib/practica/plato.rb', line 52

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
	
end

#calc_lipidoObject

metodo que calcula los lipidos del plato



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

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
end

#calc_porcentajesObject

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



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

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



33
34
35
36
37
38
39
40
41
# File 'lib/practica/plato.rb', line 33

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
	
end

#calcular_equivalente(valor, cantidad) ⇒ Object

metodo que calcula el porcentaje de un valor cualquiera



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

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

#to_sObject

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



22
23
24
25
26
27
28
29
30
31
# File 'lib/practica/plato.rb', line 22

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