class Plato
Esta clase describe una lista de instancias de la clase Alimento
Attributes
Public Class Methods
ListaDobleEnlazada::new
# File lib/Plato.rb, line 27 def initialize(nombre) super() @nombre = nombre @peso = 0 @totalProteinas = 0 @porcentajeProteinas = 0 @totalCarbohidratos = 0 @porcentajeCarbohidratos = 0 @totalLipidos = 0 @porcentajeLipidos = 0 @totalVCT = 0 @huellaNutricional = 0 end
Define el modo de la comparación entre 2 instancias de la clase Plato
@param [Integer(Enum CompareMode)] mode
# File lib/Plato.rb, line 15 def Plato.setCompareMode(mode) @@compareMode = mode end
Public Instance Methods
Implementación del metodo 'Comparable::<=>' para implementación con clase Plato
# File lib/Plato.rb, line 92 def <=>(other) return nil unless other.instance_of? Plato if(@@compareMode == CompareMode::ByVCT) then @totalVCT <=> other.totalVCT else self.huellaNutricional <=> other.huellaNutricional end end
Define el comportamiento de la clase Plato
en el momento en el que un alimento es eliminado de su lista inserta Sobreescribe el metodo 'extracted(nodo)' definido en la clase padre 'ListaDobleEnlazada' y es
llamado internamente cada vez que se llama al metodo 'delete' en clase padre 'ListaDobleEnlazada' @param [Alimento] nodo El alimento que acaba de ser eliminado de la lista
# File lib/Plato.rb, line 67 def extracted(nodo) alimento = nodo if( value.instance_of? Node) then alimento = value.value end @peso -= alimento.cantidad*100 #Representado en g @totalProteinas -= alimento.proteinas @totalCarbohidratos -= alimento.carbohidratos @totalLipidos -= alimento.lipidos @totalVCT -= alimento.valorEnergetico totalNutrientes = @totalProteinas + @totalCarbohidratos + @totalLipidos @porcentajeProteinas = @totalProteinas / totalNutrientes * 100 @porcentajeCarbohidratos = @totalCarbohidratos / totalNutrientes * 100 @porcentajeLipidos = @totalLipidos / totalNutrientes * 100 @huellaNutricional -= alimento.huellaNutricional end
Devuelve la media de las huellasNutricionales de todos los alimentos del plato
# File lib/Plato.rb, line 23 def huellaNutricional() return @huellaNutricional/self.size() end
Define el comportamiento de la clase Plato
en el momento en el que un nuevo alimento es insertado Sobreescribe el metodo 'inserted(value)' definido en la clase padre 'ListaDobleEnlazada' y es
llamado inertamente cada vez que se llama al metodo 'insert' en clase padre 'ListaDobleEnlazada' @param [Alimento] value El alimento que acaba de ser insertado
# File lib/Plato.rb, line 45 def inserted(value) #method(:insert).super_method.call(value) #Llama al metodo insert de padre alimento = value if( value.instance_of? Node) then alimento = value.value end @peso += alimento.cantidad*100 #Representado en g @totalProteinas += alimento.proteinas @totalCarbohidratos += alimento.carbohidratos @totalLipidos += alimento.lipidos @totalVCT += alimento.valorEnergetico totalNutrientes = @totalProteinas + @totalCarbohidratos + @totalLipidos @porcentajeProteinas = @totalProteinas / totalNutrientes * 100 @porcentajeCarbohidratos = @totalCarbohidratos / totalNutrientes * 100 @porcentajeLipidos = @totalLipidos / totalNutrientes * 100 @huellaNutricional += alimento.huellaNutricional end
Devuelve el objeto Plato
formateado en un string endentible para un ser humano
# File lib/Plato.rb, line 83 def to_s result = "" self.each{|alimento| result += "#{alimento.nombre}(#{alimento.cantidad*100} g), " } result = result[0...-2] result += ". #{@porcentajeProteinas.round(2)}% Proteinas, #{@porcentajeCarbohidratos.round(2)}% Carbohidratos, #{@porcentajeLipidos.round(2)}% Lipidos, #{@totalVCT.round(2)} kcal" return result end