Class: Plato

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

Overview

plato.rb

Autor

Himar Manuel Barquín Carrasco

Web

github.com/ULL-ESIT-LPP-1920/tdd-alu0101119373

Descripción

Clase que contiene una lista de alimentos, con sus cantidades. Además, nos informa del porcentaje de proteínas, lípidos y carbohidratos en proporción a las kilocalorías totales del plato.

Métodos

  • to_s

  • calc_vct

  • calc_perc_proteins

  • calc_perc_lipids

  • calc_perc_carbohydrates

  • <=>

Direct Known Subclasses

PlatoAmbiental

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, alimentos = [], gramos = []) ⇒ Plato

Constructor de la clase Plato

Parámetros
  • name: Nombre del plato

  • alimentos: Conjunto de alimentos que componen el plato

  • gramos: Cantidades en gramos de cada alimento del plato



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/tddAlimentos/plato.rb', line 29

def initialize (name, alimentos = [], gramos = [])
    @name = name

    @food = List.new
    @food.insert_more(alimentos)

    @quantities = List.new
    @quantities.insert_more(gramos)

    @vct = calc_vct

    # Calculamos los porcentajes
    @percentage_proteins = calc_perc_proteins
    @percentage_lipids = calc_perc_lipids
    @percentage_carbohydrates = calc_perc_carbohydrates
end

Instance Attribute Details

#foodObject (readonly)

Returns the value of attribute food.



22
23
24
# File 'lib/tddAlimentos/plato.rb', line 22

def food
  @food
end

#nameObject (readonly)

Returns the value of attribute name.



22
23
24
# File 'lib/tddAlimentos/plato.rb', line 22

def name
  @name
end

#percentage_carbohydratesObject (readonly)

Returns the value of attribute percentage_carbohydrates.



22
23
24
# File 'lib/tddAlimentos/plato.rb', line 22

def percentage_carbohydrates
  @percentage_carbohydrates
end

#percentage_lipidsObject (readonly)

Returns the value of attribute percentage_lipids.



22
23
24
# File 'lib/tddAlimentos/plato.rb', line 22

def percentage_lipids
  @percentage_lipids
end

#percentage_proteinsObject (readonly)

Returns the value of attribute percentage_proteins.



22
23
24
# File 'lib/tddAlimentos/plato.rb', line 22

def percentage_proteins
  @percentage_proteins
end

#quantitiesObject (readonly)

Returns the value of attribute quantities.



22
23
24
# File 'lib/tddAlimentos/plato.rb', line 22

def quantities
  @quantities
end

#vctObject (readonly)

Returns the value of attribute vct.



22
23
24
# File 'lib/tddAlimentos/plato.rb', line 22

def vct
  @vct
end

Instance Method Details

#<=>(another) ⇒ Object

Nos permite comparar platos por su Valor Calórico Total

Parámetros
  • another: Otro plato que se compara con el invocante

Devuelve

‘true’ si la comparación es verdadera. ‘false’ en otro caso



122
123
124
# File 'lib/tddAlimentos/plato.rb', line 122

def <=> (another)
    self.vct <=> another.vct
end

#calc_perc_carbohydratesObject

Calcula el porcentaje de carbohidratos del plato

Devuelve

Porcentaje de carbohidratos



106
107
108
109
110
111
112
113
114
115
# File 'lib/tddAlimentos/plato.rb', line 106

def calc_perc_carbohydrates
    alimentos = @food.collect { |x| x.carbohydrates }
    gramos = @quantities.collect { |x| x/100.0 }
    result = 0.0

    for i in 0...alimentos.size
        result += (gramos[i] * alimentos[i]) * 4
    end
    result /= @vct
end

#calc_perc_lipidsObject

Calcula el porcentaje de lípidos del plato

Devuelve

Porcentaje de lípidos



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

def calc_perc_lipids
    alimentos = @food.collect { |x| x.lipids }
    gramos = @quantities.collect { |x| x/100.0 }
    result = 0.0

    for i in 0...alimentos.size
        result += (gramos[i] * alimentos[i]) * 9
    end
    result /= @vct
end

#calc_perc_proteinsObject

Calcula el porcetaje de proteínas del plato

Devuelve

Porcentaje de proteínas



78
79
80
81
82
83
84
85
86
87
# File 'lib/tddAlimentos/plato.rb', line 78

def calc_perc_proteins
    alimentos = @food.collect { |x| x.protein }
    gramos = @quantities.collect { |x| x/100.0 }
    result = 0.0

    for i in 0...alimentos.size
        result += (gramos[i] * alimentos[i]) * 4
    end
    result /= @vct
end

#calc_vctObject

Calcula el Valor Calórico Total del plato

Devuelve

Valor Calórico Total del plato



64
65
66
67
68
69
70
71
72
73
# File 'lib/tddAlimentos/plato.rb', line 64

def calc_vct
    alimentos = @food.collect { |x| x.energetic_value }
    gramos = @quantities.collect { |x| x/100.0 }
    result = 0.0

    for i in 0...alimentos.size
        result += (gramos[i] * alimentos[i])
    end
    result
end

#to_sObject

Método para imprimir la información del plato

Devuelve

Cadena de texto con la información del plato



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/tddAlimentos/plato.rb', line 49

def to_s
    alimentos = @food.collect { |x| x.name }
    gramos = @quantities.collect { |x| x }
    result = ""

    result += "Nombre del plato: #{@name}.\nIngredientes:\n"
    for i in 0...alimentos.size
        result += "- #{alimentos[i]} (#{gramos[i]} gr)\n"
    end
    result += "Kilocalorias totales: #{self.vct} kcal"
end