Class: GrupoAlimenticio

Inherits:
Lista
  • Object
show all
Defined in:
lib/alimento/GrupoAlimenticio.rb,
lib/alimento/version.rb

Overview

Representación de un grupo alimenticio con categoría Hereda de Lista

Author:

  • Sebastian Jose Diaz Rodriguez

Since:

  • 1.0.0

Constant Summary collapse

VERSION =

Version de la clase GrupoAlimenticio

"1.0.0"

Instance Attribute Summary collapse

Attributes inherited from Lista

#head, #tail

Instance Method Summary collapse

Methods inherited from Lista

#each, #pop_head, #pop_tail, #push, #push_head, #push_tail

Constructor Details

#initialize(categoria) ⇒ GrupoAlimenticio

Constructor de GrupoAlimenticio

Parameters:

  • categoria (String)

    categoria del grupo alimenticio

Since:

  • 1.0.0



17
18
19
20
# File 'lib/alimento/GrupoAlimenticio.rb', line 17

def initialize(categoria)
    super()
    @categoria = categoria
end

Instance Attribute Details

#categoriaObject (readonly)

Since:

  • 1.0.0



11
12
13
# File 'lib/alimento/GrupoAlimenticio.rb', line 11

def categoria
  @categoria
end

#NodeObject (readonly)

head Nodo en la cabeza de la lista

Returns:

  • (Object)

    the current value of Node



10
11
12
# File 'lib/alimento/GrupoAlimenticio.rb', line 10

def Node
  @Node
end

#StringObject (readonly)

categoria categoria del grupo alimenticio representado

Returns:

  • (Object)

    the current value of String



10
11
12
# File 'lib/alimento/GrupoAlimenticio.rb', line 10

def String
  @String
end

Instance Method Details

#pop_alimentoany?

Extracción del primer AlimentoCategorizable del GrupoAlimenticio

Returns:

  • (any, nil)

    devuelve el valor guardado en el primer nodo o nil si no hay nodos en el GrupoAlimenticio

Since:

  • 1.0.0



47
48
49
# File 'lib/alimento/GrupoAlimenticio.rb', line 47

def pop_alimento()
    pop_head()
end

#push_alimento(x) ⇒ Node

Inserción de AlimentoCategorizable por la cabeza de la lista del GrupoAlimenticio

Parameters:

  • x (any)

    valor del nuevo nodo

Returns:

  • (Node)

    Devuelve el head

Since:

  • 1.0.0



26
27
28
29
30
# File 'lib/alimento/GrupoAlimenticio.rb', line 26

def push_alimento(x)
    if(x.is_a?(AlimentoCategorizable))
        push_head(AlimentoCategorizable.new(x.nombre, @categoria, x.glucidos, x.proteinas, x.lipidos))
    end
end

#push_alimentos(x) ⇒ Node

Inserción de varios AlimentoCategorizable por la cabeza de la lista del GrupoAlimenticio

Parameters:

  • x (Array<any>)

    valores de los nuevos nodos

Returns:

  • (Node)

    Devuelve el head

Since:

  • 1.0.0



36
37
38
39
40
41
42
# File 'lib/alimento/GrupoAlimenticio.rb', line 36

def push_alimentos(x)
    x.each do |alimento|
        if(alimento.is_a?(AlimentoCategorizable))
            push_head(AlimentoCategorizable.new(alimento.nombre, @categoria, alimento.glucidos, alimento.proteinas, alimento.lipidos))
        end
    end
end

#to_sString

Convierte el objeto en un String

Returns:

  • (String)

    tabla de alimentos que conforman el grupo

Since:

  • 1.0.0



53
54
55
56
57
58
59
60
61
62
# File 'lib/alimento/GrupoAlimenticio.rb', line 53

def to_s
    x = categoria + "\n"
    titles = "#{" " * 21}%-10s %-10s %-10s\n" % ["proteínas", "glúcidos", "lípidos"]
    x += titles
    each do |alimento|
        x += Alimento.instance_method(:to_s).bind(alimento).call + "\n"
    end
    x += "\n"
    return x
end