P6-alu0101111254 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/P6/P8.rb ADDED
@@ -0,0 +1,177 @@
1
+ require "P6/P6"
2
+ require "P6/P7"
3
+
4
+ #Clase palto padre, contiene una lista de alimentos
5
+ #@author Lucas Christian Bodson Lobato
6
+ #@see Alimento
7
+ #@see Lista
8
+ #@attr_reader name devuelve el nombre del Plato
9
+ #@attr_reader list devuelve la lista de alimentos que forman el Plato
10
+ #@attr_reader grams devuelve la lista conteniendo el peso de los alimentos de list
11
+ class BasicPlato
12
+ include Comparable
13
+
14
+ attr_reader :name, :list, :grams
15
+ #Conntructor, requiere un string con el nombre del palto, una lista de alimentos y una lista de gramos
16
+ def initialize(name , list, grams)
17
+ @name=name
18
+ @list=list
19
+ @grams=grams
20
+ end
21
+
22
+ #Metodo para calcular el vct o valor energetico total de un Plato
23
+ #@return un float con el vct
24
+ def vct
25
+ en_val=0
26
+ @list.each do |var|
27
+ en_val+=var.val_en
28
+ end
29
+ return en_val
30
+ end
31
+
32
+ #Metodo de comparacion entre platos, utiliza el vct de los platos para comparar, si es menor que el plato other devuelve -1, 0 si es igual y 1 si es mayor, es necesario para usar los metodos del mixin comparable
33
+ def <=>(other)
34
+ return vct <=> other.vct
35
+ end
36
+
37
+ #total de gramos de lipidos, carbohidratos y proteinas
38
+ def total_nutr
39
+ tot_gram=0.0
40
+ @list.each do |var|
41
+ tot_gram+=var.proteins
42
+ tot_gram+=var.lipids
43
+ tot_gram+=var.carbos
44
+ end
45
+ return tot_gram
46
+ end
47
+
48
+ #Devuelve el peso total de las proteinas del plato en gramos
49
+ def prot
50
+ tot_prot=0.0
51
+ @list.each do |var|
52
+ tot_prot+=var.proteins
53
+ end
54
+ per_prot=(tot_prot*100.0)/(total_nutr)
55
+ return(per_prot)
56
+ end
57
+
58
+ #Devuelve el peso total de los lipidos del plato en gramos
59
+ def lipid
60
+ tot_lip=0.0
61
+ @list.each do |var|
62
+ tot_lip+=var.lipids
63
+ end
64
+ per_lip=(tot_lip*100.0)/(total_nutr)
65
+ return(per_lip)
66
+ end
67
+
68
+ #Devuelve el peso total de los carbohidratos del plato en gramos
69
+ def carbs
70
+ tot_carb=0.0
71
+ @list.each do |var|
72
+ tot_carb+=var.carbos
73
+ end
74
+ per_carb=(tot_carb*100.0)/(total_nutr)
75
+ return(per_carb)
76
+ end
77
+
78
+ #Devuelve un string conteniendo todos los to_s de los alimentos de un plato y la informacion adicional del plato formateada
79
+ def to_s
80
+ resultado=""
81
+ resultado+="Nombre: "+@name+ "\n"
82
+ resultado+="alimentos: \n"
83
+ @list.each do |var|
84
+ resultado+=var.to_s
85
+ resultado+="\n"
86
+ end
87
+ resultado+="pesos: \n"
88
+ @grams.each do |var|
89
+ resultado+=var.to_s
90
+ resultado+="\n"
91
+ end
92
+ resultado+="porcentaje proteinas: "+ prot.to_s + " \n"
93
+ resultado+="porcentaje lipidos: "+ lipid.to_s + " \n"
94
+ resultado+="porcentaje carbohidratos: "+ carbs.to_s + " \n"
95
+ resultado+="VCT: "+ vct.to_s + " \n"
96
+ end
97
+
98
+ end
99
+
100
+ #Clase plato hijo, contiene todos los elementos de plato padre, pero con nuevos metodos, y metodos sobrecargados como el to_s y <=>
101
+ #@see BasicPlato
102
+ #@author Lucas Christian Bodson Lobato
103
+ class Plato < BasicPlato
104
+
105
+ #Constructor, simplemente usa el contructor de BasicPlato
106
+ def initialize(name , list, grams)
107
+ super(name , list, grams)
108
+ end
109
+
110
+ #Devuelve el gei generado para cultivar todos los alimentos de un plato
111
+ def gei_diario
112
+ gei=0
113
+ @list.each do |var|
114
+ gei+=var.gei
115
+ end
116
+ return(gei)
117
+ end
118
+
119
+ #Devuelve el terreno necesario para cultivar todos los alimentos de un plato
120
+ def terrain
121
+ terrain=0
122
+ @list.each do |var|
123
+ terrain+=var.terrain
124
+ end
125
+ return(terrain)
126
+ end
127
+
128
+ #Devuelve la huella nutricional de un plato, se calcula haciendo la media de la huella nuitricional de todos los alimentos de este
129
+ def huella_nutricional
130
+
131
+ impacto_kcal=0.0
132
+ impacto_gei=0.0
133
+
134
+ if (gei_diario*1000)<800 then impacto_gei=1.0
135
+ elsif (gei_diario*1000)<1200 then impacto_gei=2.0
136
+ else impacto_gei=3.0
137
+ end
138
+
139
+ if vct<670 then impacto_kcal=1.0
140
+ elsif vct<830 then impacto_kcal=2.0
141
+ else impacto_kcal=3.0
142
+ end
143
+
144
+ return (impacto_gei+impacto_kcal)/2
145
+ end
146
+
147
+ #Metodo de comparacion entre platos,hace lo mismo que en la clase padre pero usando huella_nutricional es necesario para usar los metodos del mixin comparable
148
+ #@see BasicPlato
149
+ def <=>(other)
150
+ return huella_nutricional <=> other.huella_nutricional
151
+ end
152
+
153
+ #Devuelve un string conteniendo todos los to_s de los alimentos de un plato y la informacion adicional del plato formateada, incluyendo el gei y el terreno
154
+ def to_s
155
+ resultado=""
156
+ resultado+="Nombre: "+@name+ "\n"
157
+ resultado+="alimentos: \n"
158
+ @list.each do |var|
159
+ resultado+=var.to_s
160
+ resultado+="\n"
161
+ end
162
+
163
+ resultado+="pesos: \n"
164
+ @grams.each do |var|
165
+ resultado+=var.to_s
166
+ resultado+="\n"
167
+ end
168
+
169
+ resultado+="porcentaje proteinas: "+ prot.to_s + " \n"
170
+ resultado+="porcentaje lipidos: "+ lipid.to_s + " \n"
171
+ resultado+="porcentaje carbohidratos: "+ carbs.to_s + " \n"
172
+ resultado+="VCT: "+ vct.to_s + " \n"
173
+ resultado+="GEI: "+ gei_diario.to_s + " \n"
174
+ resultado+="Terrain: "+ terrain.to_s + " \n"
175
+
176
+ end
177
+ end
data/lib/P6/version.rb ADDED
@@ -0,0 +1,4 @@
1
+ #m�dulo p6 generado por defecto
2
+ module P6
3
+ VERSION = "0.1.0"
4
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: P6-alu0101111254
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Lucas Bodson
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-01-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: guard
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: guard-rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ description: Usamos Test Driven Development para generar una clase para almacenar
98
+ informacion de alimentos y evaluarlas.
99
+ email:
100
+ - alu0101111254@ull.edu.es
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".coveralls.yml"
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - ".travis.yml"
109
+ - ".vs/slnx.sqlite"
110
+ - Gemfile
111
+ - Gemfile.lock
112
+ - Guardfile
113
+ - P6.gemspec
114
+ - README.md
115
+ - Rakefile
116
+ - bin/console
117
+ - bin/setup
118
+ - docs/Alimento.html
119
+ - docs/BasicPlato.html
120
+ - docs/Lista.html
121
+ - docs/Node.html
122
+ - docs/P6.html
123
+ - docs/P6/Error.html
124
+ - docs/Plato.html
125
+ - docs/_index.html
126
+ - docs/class_list.html
127
+ - docs/css/common.css
128
+ - docs/css/full_list.css
129
+ - docs/css/style.css
130
+ - docs/file.README.html
131
+ - docs/file_list.html
132
+ - docs/frames.html
133
+ - docs/index.html
134
+ - docs/js/app.js
135
+ - docs/js/full_list.js
136
+ - docs/js/jquery.js
137
+ - docs/method_list.html
138
+ - docs/top-level-namespace.html
139
+ - lib/P6.rb
140
+ - lib/P6/P10.rb
141
+ - lib/P6/P6.rb
142
+ - lib/P6/P7.rb
143
+ - lib/P6/P8.rb
144
+ - lib/P6/version.rb
145
+ homepage: https://github.com/ULL-ESIT-LPP-1920/tdd-alu0101111254
146
+ licenses: []
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubygems_version: 3.0.3
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: 'Practica 6 de lpp : TDD.'
167
+ test_files: []