class Plato

Esta clase describe una lista de instancias de la clase Alimento

Attributes

nombre[R]
peso[R]
porcentajeCarbohidratos[R]
porcentajeLipidos[R]
porcentajeProteinas[R]
totalCarbohidratos[R]
totalLipidos[R]
totalProteinas[R]
totalVCT[R]

Public Class Methods

new(nombre) click to toggle source
Calls superclass method 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
setCompareMode(mode) click to toggle source

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

<=>(other) click to toggle source

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
extracted(nodo) click to toggle source

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
huellaNutricional() click to toggle source

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
inserted(value) click to toggle source

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
to_s() click to toggle source

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