Class: Plato

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/practica6/platos.rb

Direct Known Subclasses

MejorPlato

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(aux, &block) ⇒ Plato

Returns a new instance of Plato.

Parameters:

  • conjuntoAlimentos (List)

    Lista de alimentos que forman el plato.

  • conjuntoCantidades (List)

    Lista de cantidades de cada alimento que forma el plato.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/practica6/platos.rb', line 17

def initialize(aux, &block)
    #@nombrePlato= nombrePlato
   
    @conjuntoAlimentos= []
    @conjuntoCantidades= []

    if block_given?
        if block.arity == 1
            yield self
        else
            instance_eval(&block) 
        end
    end

end

Instance Attribute Details

#conjuntoAlimentosObject

Los atributos son de lectura y escritura.



8
9
10
# File 'lib/practica6/platos.rb', line 8

def conjuntoAlimentos
  @conjuntoAlimentos
end

#conjuntoCantidadesObject

Los atributos son de lectura y escritura.



8
9
10
# File 'lib/practica6/platos.rb', line 8

def conjuntoCantidades
  @conjuntoCantidades
end

#nombrePlatoObject

Los atributos son de lectura y escritura.



8
9
10
# File 'lib/practica6/platos.rb', line 8

def nombrePlato
  @nombrePlato
end

Instance Method Details

#<=>(another) ⇒ Object

Sobreescritura de la funcion <=> de la clase Comparable para comparar dos elementos

Parameters:

  • another (Comida)

    Plato con el que se pretende comparar este Plato (el plato con mayor #porProteinas será mayor).



127
128
129
130
131
132
133
# File 'lib/practica6/platos.rb', line 127

def <=>(another)
	if another.class.ancestors.include?Plato 
 aux1= porProteinas
 aux2= another.porProteinas
 aux1 <=> aux2
	end
end

#alimento(a = {}) ⇒ Object



37
38
39
40
# File 'lib/practica6/platos.rb', line 37

def alimento (a= {})
    @conjuntoAlimentos<< a[:descripcion]
    @conjuntoCantidades<< a[:gramos]
end

#conjuntoPorcentajeDouble

Funcion auxiliar de #porProteinas, #porLipidos y #porCarbohidratos.

Returns:

  • (Double)

    Sumatorio de glucidos, lipidos y Proteinas.



47
48
49
50
51
52
53
54
55
# File 'lib/practica6/platos.rb', line 47

def conjuntoPorcentaje
    aux= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        aux+= (conjuntoAlimentos[i].proteinas.to_d)* (conjuntoCantidades[i].to_d/1000.0)
        aux+= (conjuntoAlimentos[i].carbohidratos.to_d)* (conjuntoCantidades[i].to_d/1000.0)
        aux+= (conjuntoAlimentos[i].lipidos.to_d)* (conjuntoCantidades[i].to_d/1000.0)
    end
    return aux
end

#nombre(nombre) ⇒ Object



33
34
35
# File 'lib/practica6/platos.rb', line 33

def nombre (nombre)
	@nombrePlato= nombre
end

#porCarbohidratosDouble

% de carbohidratos del plato respecto a otros componentes.

Returns:

  • (Double)

    % de carbohidratos del plato.



88
89
90
91
92
93
94
# File 'lib/practica6/platos.rb', line 88

def porCarbohidratos
    auxCarbohidratos= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        auxCarbohidratos+= (conjuntoAlimentos[i].carbohidratos.to_d)* (conjuntoCantidades[i].to_d/1000.0)
    end
    return ((auxCarbohidratos/ conjuntoPorcentaje)* 100)
end

#porLipidosDouble

% de lipidos del plato respecto a otros componentes.

Returns:

  • (Double)

    % de lipidos del plato.



75
76
77
78
79
80
81
# File 'lib/practica6/platos.rb', line 75

def porLipidos
    auxLipidos= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        auxLipidos+= (conjuntoAlimentos[i].lipidos.to_d)* (conjuntoCantidades[i].to_d/1000.0)
    end
    return ((auxLipidos/ conjuntoPorcentaje)* 100)
end

#porProteinasDouble

% de proteinas del plato respecto a otros componentes.

Returns:

  • (Double)

    % de proteinas del plato.



62
63
64
65
66
67
68
# File 'lib/practica6/platos.rb', line 62

def porProteinas 
    auxProteinas= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        auxProteinas+= (conjuntoAlimentos[i].proteinas.to_d)* (conjuntoCantidades[i].to_d/1000.0)
    end
    return ((auxProteinas/ conjuntoPorcentaje)* 100)
end

#to_sString

Foramte el plato a una cadena de texto legible.

Returns:

  • (String)

    Cadena de texto resumen del plato.



114
115
116
117
118
119
120
# File 'lib/practica6/platos.rb', line 114

def to_s
    string= "#{@nombrePlato}:\n"
    conjuntoAlimentos.size.times do |i|
        string+= "#{conjuntoAlimentos[i].nombre}, #{conjuntoCantidades[i]};\n"
    end
    return string
end

#valorCaloricoTotalDouble

Calor calórico del plato.

Returns:

  • (Double)

    Valor calórico del plato.



101
102
103
104
105
106
107
# File 'lib/practica6/platos.rb', line 101

def valorCaloricoTotal
    auxVCT= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        auxVCT+= (conjuntoAlimentos[i].kilocalorias.to_d)* (conjuntoCantidades[i].to_d/1000.0)
    end
    return auxVCT
end