Saltar navegación

Clase 14-05-24 - 1 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 15 de mayo de 2024 por Raquel G.

22 visualizaciones

Descargar la transcripción

Vale, entonces esta clase es la que os dábamos hecha y es la clase que tiene las medicaciones de esa persona. 00:00:01
Las medicaciones son las claves y las tomas son cada medicación, cada medicación tiene asociado un objeto toma 00:00:11
y el objeto toma incluye los días de la semana que se la tiene que tomar y cuántos comprimidos, ¿vale? 00:00:21
entonces esta clase es la que se supone 00:00:27
que el médico 00:00:30
ha construido 00:00:31
el médico es el que ha rellenado 00:00:33
el que con la otra 00:00:38
parte de la aplicación que lógicamente 00:00:40
no tenía sentido hacer vosotros silencio 00:00:42
porque era muy larga 00:00:44
pues con esa otra parte de la aplicación 00:00:46
el médico ha metido para 00:00:48
la persona tal sus medicaciones 00:00:50
los días, el número 00:00:52
de comprimidos y eso 00:00:54
ha generado que exista este map 00:00:56
y ya la aplicación nuestra tira de este map 00:00:58
entonces yo lo que os daba era este método 00:01:02
que ya daba unas medicaciones metidas 00:01:04
para cada una de ellas una cantidad de comprimidos 00:01:07
y para cada una de ellas los días a la semana 00:01:11
que tocaba esa medicación 00:01:14
esos son los datos que ha metido el médico 00:01:15
entonces este método rellenar medicaciones 00:01:17
servía simplemente para ir metiendo en ese map 00:01:21
todas las medicaciones 00:01:24
su nombre, para cada una de ellas 00:01:27
su nombre, que es la clave 00:01:29
y la toma correspondiente 00:01:30
a esa medicación 00:01:33
la toma de una medicación incluye 00:01:34
cuántos comprimidos y los días 00:01:37
de la semana que toca 00:01:39
entonces esta clase está clara 00:01:40
lo que hacía, construía el map 00:01:43
metiendo para cada medicación 00:01:45
la toma 00:01:47
vale, pues entonces lo que tenemos que hacer es 00:01:49
las clases que nos pedía 00:01:52
que era la clase toma imprescindible 00:01:53
entonces 00:01:56
esta clase 00:01:57
tenía una propiedad 00:01:58
que era el número de comprimidos 00:02:07
int 00:02:09
y otra propiedad que eran los días 00:02:13
por semana, los días a la semana 00:02:18
que se toma, que puede que no sean todos 00:02:20
entonces la forma de meter 00:02:22
esa información era mediante un string 00:02:24
que recogía esos días 00:02:26
lunes, miércoles o jueves, lunes, martes o jueves 00:02:28
separados por guiones 00:02:30
Jolines 00:02:31
Vale, pues entonces aquí 00:02:32
Si hacemos lo estándar 00:02:40
Que es generar constructores 00:02:42
Y getter y setter 00:02:44
Pues ya está, lo dejamos lista 00:02:46
Vale, entonces esta ya se nos quita acá 00:02:48
El error de compilación 00:03:03
Bueno, pues entonces 00:03:05
Luego nuestra aplicación 00:03:07
Se supone que va a funcionar 00:03:08
Como dice aquí 00:03:11
Que es el usuario va a seleccionar 00:03:11
de este combo box un día de los 00:03:21
siete que hay en el combo box 00:03:23
cuando se despliega 00:03:25
de los siete va a seleccionar un día 00:03:27
y con ese día va a trabajar aquí 00:03:29
va a trabajar para poner el listado 00:03:31
de medicaciones que toman 00:03:33
para cuando le demos a tomar medicación 00:03:34
cambiar la información 00:03:37
pero todo eso para el día en el que yo esté trabajando 00:03:38
que el señor 00:03:41
se levanta el día siguiente y es jueves 00:03:43
pues volverá a cambiarlo y marcará el combo box 00:03:45
jueves y entonces ya 00:03:47
la aplicación trabajará con ese nuevo día 00:03:49
con la información asociada a ese día 00:03:51
entonces, para eso 00:03:54
esta aplicación 00:03:56
se podría haber diseñado 00:03:58
de muchas maneras para hacer esto mismo 00:03:59
se podría haber diseñado 00:04:01
de muchas maneras, entonces la forma en la que 00:04:04
pensamos 00:04:06
es, vamos a diseñarla de tal forma que 00:04:08
exista un objeto día 00:04:09
que ese objeto me recoja toda 00:04:10
la información relacionada con ese día 00:04:13
las medicaciones que se tiene que tomar 00:04:15
si están tomadas o no 00:04:17
¿Vale? Es una forma de diseñar esta aplicación 00:04:18
Como el usuario va a trabajar en un día en concreto 00:04:21
En un día que va a seleccionar en el combo box 00:04:25
Pues un diseño será, vale, pues créate una clase día 00:04:27
Que recoge la información del día concreto en el que estás 00:04:31
Toda la información que la aplicación necesita 00:04:34
Bueno, pues esa es la siguiente clase que pedía 00:04:37
El enunciado 00:04:39
¿Qué es la clase día? 00:04:41
¿Qué sirve para recoger esa información? 00:04:45
pues el estado en el que están las tomas 00:04:47
de ese día en concreto que acabas de seleccionar 00:04:49
bueno, pues entonces 00:04:51
esta clase día 00:04:53
¿qué propiedades tendrás? 00:04:54
el día en el que estás 00:04:56
si es lunes, martes, miércoles, el día en el que estás 00:04:58
la lista de las medicaciones 00:05:01
que te tocan para ese día 00:05:03
y otra lista 00:05:05
que indica mediante 00:05:07
ceros o unos si esa 00:05:09
medicación en esa posición se ha tomado 00:05:11
o no, ¿vale? 00:05:13
O sea, un string para el nombre y dos listas 00:05:14
Pues venga, vamos a hacer 00:05:17
Esa clase 00:05:19
Vale, pues entonces 00:05:20
Este es el nombre del día 00:05:37
En el que estás 00:05:40
Pues no sé cómo 00:05:41
Día-semana, vamos a llamarlo 00:05:43
Día-semana, porque esto va a recoger 00:05:46
O lunes, martes, miércoles 00:05:48
Jueves, viernes, sábado y domingo 00:05:50
Vale 00:05:51
Hay que declararlo como string 00:05:53
Porque lunes, martes, miércoles, jueves, viernes 00:05:57
es un string, es una cadena 00:05:59
lo que pasa es que está 00:06:01
días, semanas 00:06:02
sí, quizás es un nombre, días, semana 00:06:08
porque esta es el listado de días a la semana 00:06:10
que se toma el medicamento 00:06:11
vale, entonces en realidad 00:06:13
cuando una variable 00:06:18
puede tomar sólo un conjunto 00:06:20
posible de valores 00:06:22
finito 00:06:24
hay un tipo específico 00:06:25
para ella que es el tipo 00:06:28
numerado, los enumerados no los hemos visto 00:06:30
por falta de tiempo, no sé si 00:06:32
pero que os suenen, es una tontería 00:06:33
este es un ejemplo 00:06:36
esta propiedad yo sé que solamente 00:06:37
puede tener 7 posibles valores 00:06:40
y solo 7, lunes, martes 00:06:42
miércoles, jueves, viernes, sábado y domingo 00:06:44
entonces aquí 00:06:45
lo que se haría sería hacerse 00:06:47
un enumerado con 7 00:06:50
posibles valores, lunes, martes, miércoles 00:06:52
jueves, viernes, sábado y domingo 00:06:54
y ahora decir que esta propiedad pertenece 00:06:55
a ese enumerado 00:06:58
¿vale? para que os suene que es esto de enumerado 00:06:59
que es un concepto que bueno 00:07:02
que no es difícil de entender 00:07:03
entonces eso sería una mejor opción 00:07:07
porque si lo dejamos así 00:07:10
cualquier cosa que sea un stream 00:07:11
es válida para día a semana 00:07:14
si yo pongo ahí 00:07:15
pues es válido para día a semana 00:07:16
entonces la aplicación puede 00:07:19
que tenga más errores luego a la hora de ejecutarse 00:07:21
entonces sería mejor, repito, hacerse ese 00:07:24
tipo enumerado que te dice 00:07:27
cuidado, este tipo solo puede tener 00:07:29
7 posibilidades 00:07:31
Lunes, martes, miércoles, jueves, viernes, sábado y domingo 00:07:33
Y ahora mi variable día-semana 00:07:35
Que pertenezca a ese numerado 00:07:37
¿Vale? Entonces que suene el término numerado 00:07:38
Que es un término de programación de toda la vida 00:07:40
Y si nos diera tiempo en algún momento 00:07:42
Pues lo contaríamos en 5 minutos 00:07:44
Nada más 00:07:47
Bueno, pues una propiedad es día-la-semana 00:07:47
La otra, el listado de las medicaciones 00:07:49
Que tiene que tomar ese día 00:07:53
Las medicaciones son 00:07:54
Un string 00:07:57
Los nombres de las medicaciones van un string 00:07:57
Medicaciones que tiene que tomar ese día 00:08:00
Como es una lista 00:08:03
De nuevo, pues 00:08:04
Mejor si la dejamos inicializada 00:08:07
Para evitar null pointer exception 00:08:09
Y esas cosas 00:08:13
Y luego, otra lista 00:08:14
Que esta será de numeritos enteros 00:08:19
Para indicar si la medicación 00:08:22
Está tomada o no 00:08:24
Esta lista, pues yo que sé 00:08:25
Con el nombre que a uno más le guste 00:08:31
bueno, pues es una forma de recoger 00:08:34
esta información 00:08:51
¿vale? se podría haber recogido 00:08:52
de otra manera, hacer otro map 00:08:56
en el cual la clave 00:08:57
fuera el nombre de medicación, string 00:08:59
y el valor fuera el entero 00:09:01
0 o 1 para indicar si está tomada o no 00:09:03
por ejemplo, pero bueno, para no repetir 00:09:05
tanto lo del map y todo eso 00:09:07
pues pusimos dos listas 00:09:09
que recogen 00:09:11
esa información 00:09:13
de alguna manera 00:09:14
como si la recogieran en paralelo 00:09:17
la medicación que está en la posición 1 00:09:19
está tomada o no 00:09:21
según el numerito que está en la posición 1 00:09:22
de la lista tomadas 00:09:25
0 si no lo está, 1 si sí 00:09:26
bueno, pues el día tiene esta información 00:09:28
ya está 00:09:31
en qué día estamos 00:09:32
cuántas medicaciones tocan ese día 00:09:34
y si están tomadas o no 00:09:36
y ahora ya, cuando tengamos este objeto 00:09:37
la aplicación ya leerá de él 00:09:41
para colocar aquí 00:09:43
lo que tenga que colocar 00:09:45
si ese objeto ya lo tenemos 00:09:46
que era lo primero que pedía la aplicación, instanciar 00:09:48
ese objeto cuando se ha seleccionado un día 00:09:50
pues de ese objeto se lera 00:09:52
para escribir 00:09:53
ya estoy aquí, y ya está 00:09:56
de esas listas podremos leer 00:09:57
y colocar ahí en el 00:10:00
vale, bueno, pues entonces 00:10:01
esto 00:10:04
le vamos a hacer un constructor 00:10:05
vamos a hacerle 00:10:07
un constructor con el día de la semana 00:10:10
si luego según hacemos la aplicación 00:10:13
nos viene bien hacerle algún otro 00:10:17
pues siempre se pueden ir añadiendo constructores 00:10:19
y Getty Set para todo 00:10:21
ala 00:10:30
entonces aquí 00:10:37
en realidad con único objetivo de meterlo 00:10:40
de la lencia un poco a calzador 00:10:42
en esta aplicación se supone 00:10:43
que hay un día de los 7 00:10:48
que es un día especial 00:10:50
que es el día en el cual la aplicación te va a 00:10:52
recordar 00:10:54
acuérdate de pedir revisar 00:10:55
la medicación para la semana que viene 00:10:58
porque cada semana la medicación 00:10:59
los días que se toma, el número de comprimidos 00:11:02
puede cambiar 00:11:04
porque aquí tal y como está la aplicación planteada 00:11:04
tú tienes los 7 días 00:11:08
de una semana 00:11:09
estoy el lunes, te lo dice 00:11:11
entonces para la semana siguiente puede que cambie 00:11:13
entonces hay un día 00:11:16
que es el día 00:11:18
que si te colocas en él, la aplicación se va a ir 00:11:19
encargando de recordarte 00:11:22
revisa para la semana que viene 00:11:23
revisa para la semana que viene 00:11:26
bueno, pues ese día 00:11:27
ese día se recoge una clase especial 00:11:29
en una clase que hereda de día normal 00:11:33
pero que añade un mensajito 00:11:35
un mensajito, una propiedad mensajito 00:11:36
que es el mensaje que la aplicación te va a mostrar 00:11:39
bueno pues entonces eso se traducía en el diseño 00:11:41
se traducía en el diseño que hay una clase 00:11:46
día recordatorio que hereda de la anterior 00:11:49
y tiene una propiedad más que es el mensaje 00:11:52
que la aplicación va a mostrar 00:11:55
Pues entonces 00:11:57
Hacemos una clase 00:12:01
Que herede de día 00:12:04
Porque los días de recordatorio 00:12:15
Son días que tienen sus medicaciones 00:12:17
Sus tomas, todo 00:12:19
Lo tienen todo como los demás 00:12:20
Lo que pasa es que además los días de recordatorio 00:12:22
Tienen un mensajito dentro configurado 00:12:24
Que la aplicación va a mostrar 00:12:26
Entonces 00:12:28
Vale 00:12:30
Pues entonces, como no tengo constructor sin parámetros 00:12:44
Por eso es por lo que me dice aquí 00:12:48
Al no tener constructor 00:12:49
Se supone que tienes el 00:12:51
Con parámetros, perdón, el sin parámetros 00:12:52
Pero el sin parámetros por defecto 00:12:55
Hace el super de arriba y aquí no tenemos 00:12:57
El sin parámetros 00:12:59
Bueno, este error de compilación viene de ahí 00:13:00
Entonces 00:13:03
Voy a hacerlo un constructor 00:13:04
Y ya está 00:13:06
Un constructor 00:13:08
Que invoque a este 00:13:13
De arriba 00:13:17
Vale, y ya está 00:13:18
Vale, y le voy a hacer un get y el set para lo de arriba 00:13:20
para la propiedad nueva 00:13:25
Sí, lo he hecho con el día de la semana 00:13:31
para no meter ahí dos lists 00:13:37
que siempre es muy pesado 00:13:39
si luego según uno va haciendo la aplicación 00:13:40
resulta que le viene bien 00:13:41
tener un constructor que meta otras cosas 00:13:43
pues lo añades luego 00:13:45
de hecho no estoy haciendo constructores 00:13:46
sin parámetros tampoco 00:13:49
y luego siempre viene muy bien 00:13:50
tener un sin parámetros 00:13:52
para instanciar un objeto sin propiedades 00:13:53
y luego dárselas 00:13:55
bueno, según vayamos a la aplicación 00:13:56
si nos van haciendo faltas los podemos ir poniendo 00:13:58
vale, bueno, pues las clases ya están 00:14:00
y más o menos lo que significa 00:14:04
cada clase y para que sea hecho en el diseño 00:14:06
más o menos lo tenemos claro 00:14:08
ahora ya lo que tenemos es que hacer una aplicación 00:14:09
que gestione 00:14:12
las medicaciones que se toman los diferentes 00:14:13
días de la semana, cada día de la 00:14:16
semana se va a corresponder con un objeto día 00:14:18
vale 00:14:20
y a través de 00:14:21
el map de medicaciones 00:14:24
pues podremos ir sacando 00:14:25
la información 00:14:28
a mostrar en la interfaz 00:14:30
bueno, pues ahora ya que tenemos las clases 00:14:32
y más o menos entendemos 00:14:35
por qué están hechas así 00:14:36
qué información recogen 00:14:38
y qué papel juegan en mi aplicación 00:14:39
ahora ya vamos a hacer 00:14:42
la interfaz 00:14:44
y luego ya le damos comportamiento 00:14:45
entonces aquí, si no me he salto nada 00:14:47
tenemos las clases hechas 00:14:50
y ahora los datos se recogen en un map 00:14:52
que eso ya lo tenemos hecho 00:14:56
y ahora 00:14:57
empieza la aplicación, la aplicación 00:15:00
es una interfaz gráfica con un comportamiento 00:15:02
asociado, entonces más o menos 00:15:04
antes de empezar a hacer nada, pues claro 00:15:07
uno tiene que entender 00:15:08
en qué consiste la aplicación 00:15:09
pues en este caso la aplicación es simplemente 00:15:13
esto 00:15:14
seleccionarás en un combo box un día de la semana 00:15:17
cuando lo selecciones 00:15:20
se construirá ese objeto día 00:15:22
con la información de las tomas 00:15:24
para ese día y de las medicaciones 00:15:26
habrá que tirar del map para construir 00:15:28
eso, habrá que tirar del map 00:15:30
cuando lo tenga se pone en el área de texto esta 00:15:31
y ya está, el evento del combo box 00:15:34
va a ser ese 00:15:36
y ahora que yo me voy a tomar una, pongo el nombrecito 00:15:36
en el área de texto 00:15:40
le doy a tomar y ya está 00:15:42
y me cambia en el área de texto automáticamente 00:15:43
me cambia ahí, y ya tengo ahí siempre recogido 00:15:45
pues para ese día 00:15:48
vale, pues entonces, más o menos entendido 00:15:49
lo que hay que hacer 00:15:52
construimos la interfaz gráfica 00:15:52
que eso es lo más sencillo, y luego ya damos comportamiento 00:15:56
a los componentes que lo tengan 00:15:58
Que en este caso es el combo box 00:16:00
Porque según yo cambie de día 00:16:02
Me cambia el enlistado de abajo 00:16:04
¿Y qué otra cosa? El botón 00:16:06
Ya está, dos listeners 00:16:08
Para el combo box y para el botón 00:16:10
Pues venga, lo siguiente entonces es hacer ya la interfaz 00:16:12
Pues ahora nos hacemos aquí 00:16:15
Un nuevo frame 00:16:18
Vale, pues este es nuestro frame 00:16:21
En este caso 00:16:54
La interfaz gráfica es 00:16:55
Panel para poner los botoncitos 00:16:57
y listo, no tiene más rollo 00:17:00
pues venga, nos cortamos el panel 00:17:02
le ponemos 00:17:04
el gestor absoluto 00:17:06
y empezamos a poner 00:17:08
los componentes 00:17:10
seleccione día para ver 00:17:12
sus medicaciones, una primera etiqueta 00:17:16
pues venga 00:17:18
bolines 00:17:20
una primera etiqueta ahí 00:17:26
etiqueta 00:17:28
uno, la voy a llamar, porque esta etiqueta no la vamos a 00:17:38
usar luego para nada, entonces tampoco hace falta 00:17:40
Por un nombre muy explicativo 00:17:42
Y ahora el texto que va a tener 00:17:43
Se lo cambiamos abajo a 00:17:45
Seleccione día 00:17:47
Para 00:17:50
Ver sus medicaciones 00:17:51
Ahora la etiqueta esta ya la tenemos 00:17:55
Ahora 00:17:58
Seleccione lo he escrito mal 00:18:02
Seleccione 00:18:04
Vale 00:18:15
Un combo box 00:18:16
Pues venga, cogemos un combo box 00:18:19
con el desplegable de los días 00:18:21
que va a ir ahí 00:18:23
le vamos a dar un nombre a la variable 00:18:24
para luego encontrarlo fácil en la aplicación 00:18:29
pues listado días le podemos llamar 00:18:31
list 00:18:35
el combo box se llama listado de días 00:18:36
vale 00:18:41
y ahora este combo box 00:18:41
los elementos que va a tener son 00:18:44
fijos y siempre los mismos 00:18:47
lunes, martes, miércoles, jueves, viernes, sábado y domingo 00:18:48
pues entonces ya directamente nos podemos seguir 00:18:50
antes de seguir metiendo cosas 00:18:53
nos podemos ir aquí a la pestaña de fuente 00:18:55
y aquí cuando me hace el combo box 00:18:57
ya añadirle directamente los días a la semana 00:19:01
entonces que va a tener 00:19:03
va a tener solamente cadenas 00:19:04
bueno pues lo vamos a parametrizar con string 00:19:06
ahí 00:19:09
y ahora ya simplemente 00:19:10
es que ya podemos hacerle esto 00:19:12
a listado días 00:19:15
punto add item 00:19:16
lunes 00:19:19
y así con todos 00:19:21
Así a lo vago 00:19:22
1, 2, 3, 4, 5, 6 00:19:36
Vale, a ver 00:19:40
Lo estoy haciendo así a lo 00:19:53
A lo 00:19:54
A lo rústico 00:19:57
Vale, estamos así en un examen 00:20:00
Pero claro, todo esto se puede hacer 00:20:03
De una manera un poquito más bonita en código 00:20:05
No poner ahí las tres sentencias 00:20:07
meter esto en un array, recorrer el array 00:20:08
que va a cabeza y añadiendo una cosa 00:20:10
hacer un modelo 00:20:12
para el combo box, efectivamente 00:20:16
pues bueno, un montón de 00:20:17
ala, pues nuestro combo box ya es este 00:20:19
de hecho si miramos la 00:20:22
vista previa, ah no, la vista previa 00:20:24
no se ve, si 00:20:26
ejecutamos, pues bueno, aquí están todos 00:20:27
nuestros días y ya está 00:20:30
y este combo box es que ya se queda así 00:20:32
tan listo, vale 00:20:33
y la etiqueta me ha quedado muy pequeña 00:20:35
Vamos a hacer el frame más grande 00:20:37
Para que 00:20:40
En el frame le voy a poner 00:20:43
En lugar de 450 de ancho 00:20:49
Le voy a poner 00:20:51
Pues 750 00:20:52
Para que 00:20:56
La etiqueta quepa mejor 00:20:58
¿Qué? 00:21:00
Ya está 00:21:08
pero no entendía ni la mitad 00:21:08
o sea, yo lo que 00:21:12
del enunciado 00:21:14
ya, bueno, pero en ese caso 00:21:14
tú me dices, explícame el enunciado 00:21:18
porque no entiendo qué es lo que me quieres decir 00:21:20
en ese 00:21:22
de la clase de día 00:21:23
los días de la semana 00:21:26
te lo estaba metiendo con una raya 00:21:28
claro, pero es que 00:21:29
el objeto día recoge la información 00:21:32
de un día y una propiedad 00:21:34
la propiedad es el día en el que estás 00:21:36
Estás o el lunes o el martes en uno de ellos 00:21:38
Claro 00:21:40
Y luego además pensaba que 00:21:42
El combo box tenía que meter 00:21:45
De alguna manera esa variante 00:21:47
De esa clase 00:21:48
De todas maneras 00:21:49
Claro, no, el combo box tiene 00:21:54
O sea, yo 00:21:57
Luego pensé 00:21:58
Es que 00:21:59
¿Cómo él da una cosa con la otra? 00:22:01
A mí la única manera que yo sé hacerlo es creando 00:22:04
agregando el combo 00:22:07
desde la clase de ventana 00:22:09
los días de la semana 00:22:10
no metiendo la variable de la otra clase 00:22:12
a ver, si de un enunciado 00:22:15
tú no entiendes lo que se pide 00:22:17
no entiendes algo, me lo dices 00:22:19
y lo explicamos todo lo que haga falta 00:22:21
porque 00:22:23
siempre es mejor eso que arrancar 00:22:26
ya una aplicación mal 00:22:29
porque si ya arranca mal, porque está mal entendida 00:22:30
enderezar eso es muy complicado 00:22:32
bueno, pues entonces 00:22:34
Estamos construyendo todavía la interfaz 00:22:36
Seguimos, ¿qué nos falta? 00:22:38
Otra etiqueta con estado de las tomas y el área de texto 00:22:40
Pues venga 00:22:42
Otra etiqueta 00:22:44
Con 00:22:47
Etiqueta 2 00:22:48
Y el texto 00:22:51
Que tiene es 00:22:58
Dime, dime 00:22:59
Bueno, el 00:23:01
El plugin 00:23:06
Te lo hace todo en el constructor, sí 00:23:08
Si lo hace esto en un método aparte 00:23:10
Luego ese método y que llamaron el constructor 00:23:14
Porque todo esto se tiene que ejecutar en el momento de instancia 00:23:15
Del frame, en el constructor 00:23:18
Vale, pues a ver 00:23:19
Estado de las temas, no, joder 00:23:24
Si es que 00:23:26
Uno no duerme y otro no ven 00:23:26
Pero ya, la edad es muy mala 00:23:29
Vale, bueno 00:23:31
Pues ahora ya el área de texto 00:23:37
Nuestro área de texto, text area 00:23:38
Aquí 00:23:42
Colocada y grande 00:23:43
Para que quepan las medicaciones 00:23:47
vamos a cambiar el nombre de la variable 00:23:48
pues yo que sé, listado tomas 00:23:51
la vamos a llamar 00:23:56
esta área de texto se llama listado de las tomas 00:23:57
ahí van a aparecer las tomas del día seleccionado 00:24:00
para lo cual habrá que haber tirado del map de medicaciones 00:24:05
y nos falta ahora ya otra etiqueta 00:24:09
de selecciones, escriba medicación a tomar 00:24:12
Pues otra etiqueta por aquí 00:24:16
Textarea, al blanco grande ese 00:24:19
Un área de texto, es como un textfield pero que te permite varias líneas 00:24:26
Y ahora 00:24:30
Escriba 00:24:33
El nombre de la medicación 00:24:36
Que va a tomar 00:24:41
Vale, pues esa medicación se va a escribir en un textfield 00:24:48
Eso ya sí, con una única línea es suficiente 00:24:58
Vamos a cambiar el nombre de la variable 00:25:01
Para luego encontrarla rápido en el código 00:25:06
Nombre, medicación, por ejemplo 00:25:08
Ya está 00:25:12
Y ahora el botoncito 00:25:16
Y ya no hay más que hacer en esta interfaz 00:25:17
Botón tomar, lo vamos a llamar, por ejemplo 00:25:19
Tomar medicación 00:25:27
¡Hala! 00:25:36
Pues nuestra interfaz ya está 00:25:44
Ya está, no hace nada, claro 00:25:48
ya la tenemos, la etiqueta esta 00:25:56
se queda siempre muy 00:26:00
y ahora ya lo que queda es 00:26:02
vamos a ver, ¿qué comportamiento va a tener esto? 00:26:10
bueno, pues 00:26:13
dos eventos, cuando seleccione 00:26:14
el combo box y marque un día 00:26:16
se tendrá que instanciar 00:26:18
un objeto día 00:26:22
que es lo que dice el enunciado, un objeto día 00:26:22
con el nombre del día 00:26:24
claro, y 00:26:26
el listado de las medicaciones que se 00:26:28
toman ese día y si están 00:26:30
tomadas o no, bueno inicialmente todas han 00:26:32
no tomado 00:26:34
y luego ya tirar de ese objeto día 00:26:34
para construir el texto que va al área 00:26:38
de texto 00:26:40
y luego pues en función de si pasan ciertas cosas 00:26:40
avisar con los jOptionPanel 00:26:44
que es lo que dice ahí 00:26:45
si pasan cosas en este caso como que 00:26:47
sea el día de recordatorio creo 00:26:50
vale 00:26:52
y el evento de tomar 00:26:54
medicación pues se escribirá 00:26:56
aquí una medicación que os le voy a tomar 00:26:58
se cogerá ese texto de ahí 00:26:59
y en el objeto día, en el objeto día 00:27:02
que tiene la información de ese día 00:27:04
que lo tiene todo, pues en ese objeto día 00:27:07
cambiar la que sea tomada, cambiarla 00:27:08
a tomada 00:27:11
y cambiar el texto 00:27:12
bueno, entonces más o menos eso es lo que hay que hacer 00:27:13
ahora ya nos vamos a cada uno de los 00:27:17
componentes y le metemos ese código 00:27:19
ahora ya hay que meter dos eventos y ya está 00:27:21
la aplicación terminada 00:27:23
pero claro, no son dos eventos tampoco inmediatos de programar 00:27:24
pues hay que programar un poquito 00:27:27
pues venga 00:27:28
Empezamos con el ActionListener 00:27:30
Como es el evento por defecto 00:27:33
Del ActionListener es el por defecto 00:27:38
Pues ala 00:27:40
El ActionPerformer este de aquí 00:27:41
Vale 00:27:43
Pues entonces aquí que tenemos que hacer 00:27:45
Pues lo que dice 00:27:47
Este enunciado 00:27:50
Que dice 00:27:51
Funcionalidades 00:27:52
Introducido un día de la semana 00:27:54
En el combo box 00:27:57
La aplicación instancia un objeto 00:27:58
Para el día elegido 00:28:01
si el día es lunes 00:28:02
lo que instanciará sería día recordatorio 00:28:05
porque además meterá un mensajito 00:28:08
que será este 00:28:10
pero si el día no es lunes, instanciará un día normal 00:28:11
entonces 00:28:14
vamos a instanciar el objeto día 00:28:17
construyendo toda la información 00:28:20
y luego ya mostraremos 00:28:22
en el área de texto 00:28:24
la información de ese día 00:28:25
y ya está 00:28:28
Para el combo box 00:28:30
No hay que hacer nada más 00:28:33
Luego tomar medicación 00:28:35
Ya es la que en función de si la medicación existe o no 00:28:37
Si ya se ha tomado 00:28:39
O no se ha tomado, etcétera 00:28:41
Pues ya te dará avisos 00:28:42
¿Vale? 00:28:43
Los comprimidos que tienes que tomar, etcétera 00:28:48
Bueno 00:28:50
Pues venga, vamos a la primera 00:28:50
A ver, aquí lo primero es 00:28:54
Vamos a coger el día que está en el combo box 00:28:56
El día de la semana 00:28:59
aquí yo lo voy a escribir 00:28:59
todo en plan chorizo, vamos escribiendo luego todo este código 00:29:02
que me va a salir aquí un truño enorme 00:29:05
pues efectivamente uno ya lo puede 00:29:07
arreglar 00:29:09
sacar cosas a métodos 00:29:11
recolocar, refactorizar, etc 00:29:12
ahora mismo estamos un poco en modo examen 00:29:14
pues viendo a ver que primera versión nos queda 00:29:17
vamos a sacar primero 00:29:19
el día de la semana en el que estamos 00:29:20
este día de la semana sale del combo box 00:29:22
el combo box se llamaba 00:29:24
se llamaba 00:29:27
listado días 00:29:29
listado días 00:29:32
punto get selected 00:29:35
item 00:29:37
ala 00:29:38
vamos a hacer el casting a string 00:29:41
porque este método me dice 00:29:45
cuando devuelven object pero 00:29:47
sabemos que es un string 00:29:49
vale aquí tenemos el día de la semana que se ha seleccionado 00:29:50
en el combo box cuando hemos hecho click 00:29:53
y a partir de ese día de la semana 00:29:55
tenemos que hacer todo lo demás 00:29:57
bueno primero es día de recordatorio 00:29:59
O no lo es 00:30:01
Pues vamos a distinguirlo 00:30:02
Vamos a ver 00:30:06
Vamos a 00:30:06
Si día 00:30:09
Punto 00:30:11
Equals lunes 00:30:12
Vale 00:30:20
Entonces, con el objeto día 00:30:22
Que vamos a instanciar 00:30:25
Vamos a declarar aquí 00:30:26
A ver, día semana 00:30:27
Pero lo voy a llamar con S para 00:30:31
Lo voy a llamar día actual 00:30:32
Día actual 00:30:35
vale 00:30:36
este es el día que vamos a instanciar 00:30:38
va a ser el día actual en el que estoy 00:30:42
es el día que vamos a instanciar 00:30:43
vale, pues 00:30:45
si el día seleccionado 00:30:47
día, espera 00:30:49
vamos a llamar a las variables un poco mejor 00:30:51
lo voy a llamar día seleccionado, el del combo box 00:30:53
si el día seleccionado 00:30:56
seleccionado 00:31:03
es igual al lunes 00:31:04
entonces 00:31:05
día actual 00:31:08
vamos a hacer una instancia de día recordatorio 00:31:10
y luego ya 00:31:13
una instancia, luego ya le vamos poniendo las propiedades 00:31:16
día recordatorio 00:31:21
día recordatorio 00:31:24
tenemos un constructor de día recordatorio que ya me daba 00:31:27
el día de la semana y el mensajito 00:31:30
por eso ya se lo podemos poner, día de la semana, lunes 00:31:32
y el mensajito el que me han dado en la aplicación 00:31:36
voy a ponerlo aquí abajo 00:31:38
el que me han dado en la aplicación 00:31:41
que es 00:31:43
este 00:31:46
a ver, lunes 00:31:48
coma 00:32:03
recuerde ahí 00:32:04
vale, si el día deseleccionado es lunes 00:32:06
mi día actual es un día de recordatorio 00:32:11
con estas dos propiedades 00:32:13
y me faltaría rellenar el resto de propiedades 00:32:15
claro, las medicaciones que tocan para ese día 00:32:17
y los días 00:32:20
vale, me tocaría eso 00:32:21
pero la parte esta 00:32:23
la podemos hacer ya, y ahora, y si no es lunes 00:32:25
es decir, es martes, miércoles, jueves 00:32:27
viernes, pues entonces el día actual 00:32:30
no es un objeto día recordatorio 00:32:32
sino que es un objeto 00:32:34
día normal y corriente 00:32:36
con día de la semana 00:32:37
pues el día seleccionado 00:32:39
día seleccionado 00:32:41
vale, entonces 00:32:53
este es el día actual en el que estoy 00:32:56
el día actual en el que estamos 00:32:58
O bien lunes con el mensajito correspondiente y en ese caso es de tipo día recordatorio, pero recordad que yo lo puedo instanciar como día recordatorio aunque la instancia esté declarada como tipo día, porque día recordatorio le da de día. 00:32:59
Entonces puedo instanciarlo dentro de día. 00:33:17
Y si no es día de recordatorio lo instancio como día normal. 00:33:19
vale, pero ahora que nos falta 00:33:23
nos falta ya el meollo, la parte ya de programar 00:33:25
que es 00:33:27
los objetos día 00:33:28
tienen la lista de medicaciones 00:33:31
que tenemos que sacar 00:33:33
de aquí 00:33:35
de este map 00:33:36
entonces, tendremos que 00:33:38
recorrer el map 00:33:41
vale, para cada 00:33:43
posición del map 00:33:45
quedarnos con los días a la semana 00:33:46
que se toma esa medicación 00:33:49
si en esa lista de días a la semana 00:33:50
está el día 00:33:54
actual, entonces tendremos 00:33:56
que meter la medicación en la lista 00:33:58
eso es lo que habrá que hacer, ¿verdad? 00:33:59
esa es la operativa de programación que tenemos que hacer ahora 00:34:01
recorrer el map 00:34:04
coger 00:34:05
para cada 00:34:07
medicación que está en ese map 00:34:09
los días a la semana 00:34:11
si está comprendido en los días 00:34:13
a la semana el día que tengo 00:34:16
seleccionado, esa medicación 00:34:18
se va a la lista de medicaciones del día 00:34:20
¿vale? 00:34:22
eso es lo que tendremos que hacer 00:34:24
pues venga, vamos a iterar por el map 00:34:25
eso es lo primero 00:34:28
vamos a iterar por el map 00:34:28
pues venga, iterar por un map 00:34:31
ya sabemos como 00:34:34
como lo hacemos 00:34:36
mi map es la variable 00:34:37
estática datos.medicaciones 00:34:40
ese es mi map 00:34:44
entonces datos.medicaciones 00:34:46
le podemos sacar con un entry set 00:34:49
este conjunto 00:34:52
string toma 00:34:59
vale 00:35:05
lo vamos a llamar 00:35:08
medics dia 00:35:11
importamos set 00:35:13
importamos 00:35:18
entry 00:35:22
vale, pues estas son las 00:35:23
medicaciones, o sea, perdón 00:35:26
las medicaciones totales 00:35:28
medicaciones 00:35:30
vale, las medicaciones totales 00:35:31
vale, pues vamos a ir ahora una por una 00:35:34
vamos a ir ahora una por una 00:35:36
y para cada una de ellas 00:35:38
de nuevo, miramos a ver si le toca 00:35:39
tomarla en ese día 00:35:41
en el que estamos, si le toca 00:35:43
la clave irá 00:35:45
a la lista y si no le toca pues nada 00:35:47
pues venga 00:35:49
vamos a recorrer ahora el map, este 00:35:51
para lo cual hemos hecho este set 00:35:53
ahora, ¿cómo recorremos 00:35:55
este set? pues recorremos este set 00:35:57
con un for each, por ejemplo 00:35:59
para cada medicación 00:36:00
en mi listado de medicaciones 00:36:09
para cada medicación 00:36:13
vale, los días a la semana 00:36:14
que tiene que tomar 00:36:18
si se tiene que tomar esta medicación M 00:36:19
los días a la semana, vamos a guardarlos aquí 00:36:21
días en las que 00:36:23
tiene que tomar, sabemos que están aquí 00:36:27
en M.getValue 00:36:29
que es la toma 00:36:31
.getDíaSemana 00:36:33
¿verdad? 00:36:35
es decir, aquí tengo 00:36:37
en este string 00:36:39
tengo esto 00:36:40
tengo este listado 00:36:42
y ahora, esta es la parte 00:36:44
de programar 00:36:49
tenemos que ver si 00:36:49
dentro de este string separado con guiones 00:36:52
está contenida 00:36:55
la inicial 00:36:57
del día que tengo seleccionada 00:36:58
que tengo seleccionado 00:37:01
en mi combo box 00:37:02
es decir 00:37:04
esto que tengo aquí 00:37:07
el día actual 00:37:09
el día seleccionado 00:37:11
tendrá una inicial 00:37:12
y tenemos que ver si esa inicial 00:37:14
está 00:37:16
contenido aquí 00:37:18
con la salvedad 00:37:20
de que el miércoles su inicial es la X 00:37:23
entonces esto 00:37:25
uno lo puede programar de mil maneras 00:37:26
pero vámonos a una 00:37:28
por ejemplo, vamos a fijar primero la inicial 00:37:30
del día, para ver si la inicial está contenida en ese listado 00:37:32
vale, pues 00:37:35
venga, string 00:37:36
inicial día 00:37:38
entonces 00:37:40
este inicial día 00:37:41
¿cuál va a ser? 00:37:43
pues depende, si el día 00:37:46
no es miércoles 00:37:48
es la inicial del día 00:37:49
pero si el día es miércoles es la X 00:37:52
entonces si está en inicial día lo podemos hacer 00:37:54
por ejemplo así 00:37:56
día actual 00:37:58
punto 00:38:00
equals 00:38:02
día actual no, perdón, día semana 00:38:03
día seleccionado, perdón, día seleccionado 00:38:06
Que es el día del combo box 00:38:08
Ay, que me he ido 00:38:09
Día seleccionado, que es el día del combo box 00:38:11
Seleccionado 00:38:15
Es igual 00:38:18
A miércoles 00:38:22
No sé si los he puesto con tildes o no 00:38:24
Hay que verificar 00:38:28
Es igual a miércoles 00:38:29
Porque si es igual a miércoles 00:38:32
Entonces inicia el día, ¿cuál va a ser? 00:38:34
Pero si no es igual a miércoles 00:38:37
Inicial día, ¿cuál va a ser? 00:38:40
Día seleccionado, punto charat cero 00:38:41
¿Verdad? 00:38:43
Seleccionado, punto 00:38:48
Char 00:38:50
Cero 00:38:54
Y aquí me sobra 00:38:55
Charat cero 00:39:01
Y aquí lo que me falta es un paréntesis 00:39:02
Vale, entonces 00:39:12
Antes de arreglar este error rojo 00:39:15
Que ahora me decís por qué sale 00:39:16
Está claro esta sentencia y lo que quería hacer con ella 00:39:18
Quiero guardar en un string 00:39:21
la inicial del día en el que estoy 00:39:23
es decir, la L o la M 00:39:25
o la X 00:39:27
o la J 00:39:29
yo sé que la inicial del día en el que estoy 00:39:30
va a venir como 00:39:32
la inicial del día que tengo seleccionado 00:39:35
en el combo box, salvo si es miércoles 00:39:37
salvo si es miércoles 00:39:39
entonces no puedo aquí directamente decir 00:39:40
que la inicial día sea 00:39:43
día seleccionado punto charad cero 00:39:44
será día seleccionado charad cero 00:39:46
solamente si el día es distinto de miércoles 00:39:49
pues entonces me lo puedo hacer con un 00:39:51
if, si es que nos gusta 00:39:54
este operador 00:39:55
pero bueno, es un operador que se usa continuamente 00:39:58
bueno, pues la inicial de día es 00:40:00
el día seleccionado de mi combo box es miércoles 00:40:02
entonces la inicial de día es x 00:40:04
que no es miércoles, entonces mi inicial 00:40:05
de día es su primer carácter 00:40:08
vale, ahora sí que pregunto 00:40:10
¿por qué me sale aquí en rojo esto? 00:40:11
sin que miréis la esa 00:40:13
bueno 00:40:14
pues explícamelo 00:40:19
claro, porque el método charAt 00:40:20
te devuelve esa letra 00:40:25
pero en formato char 00:40:27
y yo he puesto aquí guardarlo en un 00:40:28
string, entonces hombre, podría cambiarlo 00:40:31
aquí a char 00:40:33
y entonces aquí darle este 00:40:34
uy, perdón 00:40:37
dárselo así 00:40:39
vale, ay 00:40:40
he borrado la esta 00:40:44
ahí 00:40:49
vale, podría cambiarlo a char 00:40:50
pero entonces le tengo que pasar aquí 00:40:58
el x en char, que es como la comilla simple 00:41:00
o podría dejarlo en string 00:41:02
depende como me interese luego el uso que vaya a usar 00:41:04
y en ese caso si lo dejara en string 00:41:06
lo tendría tan sencillo como 00:41:08
concatenar esto con el este y ya lo tengo en string 00:41:10
¿no? 00:41:12
entonces lo que a uno le guste más 00:41:14
en función de luego para qué vaya a usar 00:41:16
inicial de día, ahora lo veremos a ver que nos interesa más 00:41:18
pero antes que entendáis lo que estamos haciendo 00:41:20
vale 00:41:22
esto ya sí que es un char porque está en comillas simples 00:41:24
y esto es un char 00:41:26
que este char lo quiere un string 00:41:29
pasar de un char o cualquier cosa string 00:41:31
es concatenar con la cadena vacía y facilísimo 00:41:33
lo que queramos 00:41:35
vale, pero tenemos aquí un char con la inicial del día 00:41:37
y ahora, ¿qué tenemos que ver? 00:41:40
pues 00:41:43
si esta inicial 00:41:43
está comprendida 00:41:45
en todo este string 00:41:47
porque si está comprendida 00:41:49
en ese string, entonces tengo que 00:41:52
añadir la clave de la 00:41:54
medicación, que es el nombre, a la lista 00:41:56
de mi objeto 00:41:58
día actual. Eso es lo que tendré que hacer. 00:42:00
¿Verdad? ¿Vale? 00:42:02
Pues, ¿cómo podemos hacer esto? O programando 00:42:04
así a lo bestia, 00:42:06
es decir, 00:42:08
siempre tenemos 00:42:10
la opción patatera, que es 00:42:12
ir recorriendo 00:42:14
el string 00:42:16
todo enterito. 00:42:17
¿Que el chara 00:42:20
este coincide con el este? 00:42:22
pues entonces ya está, no está 00:42:23
o sea, siempre tengo la opción 00:42:26
larga, la de programar pura y dura 00:42:27
¿vale? o 00:42:30
puedo recorrer a los 00:42:31
métodos de string, voy a buscar un método de string 00:42:34
a ver si tengo un método de string que me dice 00:42:35
¿este string contiene una secuencia de caracteres? 00:42:37
pues seguramente tenga algún método 00:42:40
pero vamos a 00:42:41
hacerlo a la vía de, uh, no quiero buscar 00:42:43
métodos que luego igual no me funcionan, voy a hacerlo 00:42:45
programando puro y duro, pues hombre, siempre 00:42:47
podríamos hacer esto, como vamos a averiguar 00:42:49
si algo existe o no existe 00:42:51
o si le podríamos hacer un está igual a 00:42:52
falso y recorremos el 00:42:55
días tomar 00:42:57
mientras 00:42:58
si sea menor que días 00:43:03
tomar 00:43:05
punto length la longitud del string 00:43:06
incrementando y 00:43:09
pues ahora podemos hacer 00:43:10
si en la posición 00:43:12
de días tomar y 00:43:15
char at 00:43:17
y resulta 00:43:19
que esta posición 00:43:21
es igual 00:43:22
esto es un char 00:43:24
es igual a mi inicial día 00:43:25
como es un char 00:43:28
comparo con doble igual 00:43:31
porque un char no es un objeto 00:43:32
si es igual a mi inicial día 00:43:34
pues a la esta, esta igual a true 00:43:36
siempre lo puedo hacer así 00:43:38
y ya está 00:43:40
recorro 00:43:41
mi listado de días 00:43:44
y si en alguna de las posiciones 00:43:47
encuentro que está la inicial 00:43:50
de mi día, ya está 00:43:52
está, vale 00:43:53
días tomar 00:43:56
es este listado de aquí 00:44:00
porque lo he sacado 00:44:02
de getDíaSemana de la toma 00:44:06
M es 00:44:08
una medicación en concreto con su toma 00:44:13
perdón 00:44:16
M tiene 00:44:17
el nombre de medicación 00:44:19
y el objeto toma que te incluye 00:44:22
con lo cual el objeto toma lo sacamos con getValue 00:44:24
vale, entonces 00:44:26
¿qué está? pues entonces 00:44:36
tenemos que meter 00:44:40
en la lista del día 00:44:41
día actual 00:44:44
en la lista del día actual 00:44:46
día actual 00:44:47
punto ad, vamos a meter en esta 00:44:50
lista, perdón, día actual punto 00:44:52
get 00:44:54
medicaciones, en get medicaciones 00:44:55
vamos a meterle esa medicación 00:44:58
y esa medicación ¿dónde está? en 00:45:00
m.getkey 00:45:02
¿verdad? y hay que ponerla 00:45:03
como no tomada, dice, porque estamos 00:45:10
inicializando. Pues entonces 00:45:12
para ponerla como no tomada 00:45:14
a día actual punto 00:45:16
get tomadas 00:45:22
punto add 00:45:24
un cero. Vale, pues el objeto 00:45:25
ya estaría construido. 00:45:30
Nos falta sacar 00:45:33
la información para poner el área de texto. 00:45:34
Pero el objeto ya estaría. 00:45:36
¿No? 00:45:39
Revisamos. Hemos creado un día. 00:45:40
Ese día 00:45:43
es o bien día recordatorio o bien 00:45:44
día normal, si es día recordatorio 00:45:46
además tiene ese mensaje, nada más 00:45:48
y ahora nos toca 00:45:50
recorrer el map de medicaciones 00:45:52
para cada medicación 00:45:54
ver si los días 00:45:56
en los que toca tomarla 00:45:58
incluyen el que tengo en el combo box 00:45:59
porque si lo incluyen 00:46:02
añado la medicación a la lista 00:46:03
pues lo siguiente que hemos hecho 00:46:06
nos hemos puesto a recorrer nuestro map 00:46:07
de medicaciones 00:46:10
Y ahora, para cada medicación M, con su nombre y su toma, a partir de la toma que está en Get Value, hemos sacado los días de semana que toca. 00:46:11
Ahora, con este código, hemos mirado a ver si el día seleccionado, la inicial del día seleccionado, con la salvedad de que 6.000 parciales X, 00:46:24
La inicial del día, a ver si está contenido ahí, porque si está, hay que añadir a ese día actual, a la lista de medicaciones, esa medicación, que estará en la clave, porque es la clave del mapa. 00:46:35
Y además hay que ponerla como no tomada. 00:46:52
Nuestro día ya está construido. 00:46:55
Ahora, ¿qué es lo que le falta al evento? 00:47:00
El día está construido, pero luego hay que mostrar el área de texto. 00:47:02
hay que mostrar el área de texto 00:47:05
el listado, este de aquí 00:47:08
hay que mostrarlo 00:47:10
entonces ahora ya simplemente vamos a construir 00:47:12
un string recorriendo las tomas 00:47:14
concatenando 00:47:17
sin más, para pegar eso en el área de texto 00:47:19
y se acabó 00:47:21
pues venga, vamos a poner 00:47:21
el texto que vamos a fijar en el área de texto 00:47:23
vamos a ponerlo aquí 00:47:26
string texto 00:47:27
inicialmente así 00:47:29
ala 00:47:32
Y ahora vamos a recorrer las medicaciones que le toca tomar, que están aquí en el día actual, vamos a recorrerlas para irlas concatenando. 00:47:37
y ya está 00:47:49
pues ahora 00:47:49
para cada string 00:47:51
que es la medicación correspondiente 00:47:53
como ya tengo mucha M 00:47:57
mucha E 00:47:59
no sé qué 00:47:59
vamos a 00:48:00
día actual 00:48:02
punto get 00:48:04
medicaciones 00:48:09
este es el listado de medicaciones 00:48:11
de ese día concreto 00:48:12
que lo acabamos de hacer 00:48:13
pues que vamos a hacer 00:48:14
vamos a concatenar 00:48:16
S más 00:48:18
igual 00:48:19
la medicación concreta 00:48:22
que es esta 00:48:27
perdón, el texto 00:48:28
texto más igual la medicación 00:48:31
vale, que tenemos que concatenar 00:48:36
después de la medicación, un espacio 00:48:38
un espacio 00:48:40
vale, ya tenemos el espacio 00:48:42
vale, estoy construyendo este texto 00:48:44
y luego que hay que concatenar 00:48:45
hay que concatenar no tomada 00:48:47
bueno 00:48:49
si lo hacemos más general hay que concatenar 00:48:52
concatenar tomada 00:48:53
si hubiera un 1 00:48:55
en el lista de tomas 00:48:57
o no tomada si hubiera un 0 00:48:59
entonces vamos a hacerlo más en general 00:49:01
porque si eso lo vamos a construir luego 00:49:02
vale, pues entonces 00:49:05
¿y qué más hay que concatenarle? 00:49:07
pues hay que concatenarle el qué? 00:49:09
pues tomada o no tomada, dependiendo 00:49:11
pues de nuevo podemos poner 00:49:13
a ver, si día 00:49:14
actual 00:49:17
ah no, porque estoy haciéndolo con un 00:49:18
con un for each 00:49:21
vale, entonces no, no, vamos a hacerlo 00:49:23
con un for de índice 00:49:25
porque las tomas 00:49:27
tengo que irme a la misma posición 00:49:29
vamos a hacer esto mismo con un for de índice 00:49:31
que se va a ver más claro 00:49:33
para cada i igual a 0 00:49:34
mientras i sea menor que 00:49:37
día actual 00:49:38
punto get 00:49:41
medicaciones 00:49:43
punto lens 00:49:44
punto size, perdón 00:49:46
porque es una colección incrementando 00:49:48
i, vale 00:49:51
Pues ahora, ¿qué tenemos que concatenar? 00:49:54
Tenemos que concatenar a texto 00:49:59
el nombre de la medicación 00:50:00
con un espacio. 00:50:03
Pues venga, el nombre de la medicación será 00:50:05
díaactual.getmedicaciones.geti 00:50:07
¿Vale? 00:50:16
Eso es lo primero que concatenamos. 00:50:20
El nombre de la medicación más un espacio. 00:50:22
¿Vale? 00:50:26
Lo voy a hacer en dos líneas separadas 00:50:27
para que no sea un lío. 00:50:29
ya tenemos concatenado 00:50:29
hasta aquí 00:50:31
el adiro espacio 00:50:33
nos falta concatenar el tomado o no tomado 00:50:36
en función de si está tomado o no 00:50:39
pues vamos a verlo 00:50:40
¿qué más le vamos a concatenar a texto? 00:50:43
pues a texto le vamos a concatenar 00:50:45
tomado o no tomado 00:50:46
en función de si vale 0 o 1 00:50:49
el día actual que tomadas 00:50:51
pues venga, vamos a hacerlo 00:50:53
día 00:50:54
actual 00:50:57
punto get tomadas 00:50:59
punto get i 00:51:02
este es igual a cero 00:51:05
pues entonces vamos a concatenar 00:51:08
con no tomada 00:51:12
porque no está tomada 00:51:13
que no es cero, entonces será uno 00:51:14
pues concatenamos con tomada 00:51:21
dos puntos 00:51:24
esto se podría hacer con un if también 00:51:26
si esto 00:51:28
es igual a cero 00:51:30
texto más igual no tomada 00:51:31
Si no, texto más igual tomada 00:51:33
¿Vale? 00:51:35
Y ahora nos falta ya concatenar con el salto de línea 00:51:41
Para que la siguiente medicación se vaya 00:51:43
A la línea de abajo 00:51:45
Texto más igual 00:51:46
Y se acabó el evento del combo 00:51:49
Ah bueno, no, nos falta fijar el área de texto 00:51:54
Tenemos el string que va al área de texto 00:51:56
¿El área de texto cómo se llama? 00:51:58
El área de texto se llamaba 00:52:00
El text area 00:52:03
Listado tomas 00:52:08
Se llamaba el text area 00:52:18
control c 00:52:20
pues venga, nos vamos aquí al evento 00:52:22
set test 00:52:27
e texto 00:52:35
vale 00:52:37
vale 00:52:41
entonces, aparte de esto rojo que ahora lo 00:52:44
quitamos 00:52:49
el evento, si lo repasamos 00:52:50
el evento del combo ex 00:52:54
nos quedamos con el día seleccionado en el combo box 00:52:56
get selected item, nos hemos quedado con ese día 00:52:58
ahora, construimos un día actual 00:53:01
con la información de medicaciones para ese día 00:53:02
si el día es lunes 00:53:04
el día será además recordatorio 00:53:06
con el mensajito 00:53:08
si no lo es, será un día normal 00:53:09
ahora recorremos 00:53:12
el map de medicaciones 00:53:14
para cada medicación 00:53:16
nos quedamos con los días 00:53:18
a la semana que toca tomar esa medicación 00:53:20
este código es 00:53:22
los días a la semana 00:53:26
que toca tomar 00:53:28
esa medicación 00:53:31
es el que tenemos seleccionado aquí 00:53:31
y para eso hemos hecho ese código 00:53:35
que lo repasáis despacio 00:53:37
el que no 00:53:39
el que se haga un lío 00:53:40
pues entonces añado 00:53:42
las medicaciones de mi día actual 00:53:44
esa medicación 00:53:46
y la marco como no tomada 00:53:47
a cero 00:53:48
y ya está 00:53:49
ya tenemos el día hecho 00:53:50
y ahora ya construimos 00:53:51
el área de texto 00:53:53
con la información 00:53:54
un string 00:53:54
con las medicaciones que toca 00:53:55
separada por espacio 00:53:57
separada por tomada o no tomada 00:53:59
en función de si está no tomada o no, en este caso 00:54:01
van a ser no tomadas todas, pero acabamos 00:54:03
de empezar, y ahora ya ponemos 00:54:05
este texto en el área de texto 00:54:07
ahora, ¿por qué me aparece aquí rojo 00:54:09
esto? me aparece rojo 00:54:11
esto de aquí, ¿por qué? 00:54:16
claro, porque lo tengo 00:54:24
dentro, pero aquí hay una 00:54:25
cosa peculiar, particular, o sea 00:54:27
yo esto la tengo dentro, la tengo aquí 00:54:29
como local 00:54:31
entonces podría sacarla fuera 00:54:32
Y solucionado, ¿verdad? 00:54:34
Si me voy aquí a text area 00:54:36
La saco fuera 00:54:38
Y listo 00:54:39
¿Vale? 00:54:42
Y efectivamente se me ha quitado el error 00:54:46
Veo que ya no es tan rojo aquí 00:54:49
¿Vale? Pero 00:54:50
Esto 00:54:52
Pero vamos a volverla a meter 00:54:53
A ver qué pasa 00:54:57
La voy a volver a meter para adentro 00:54:58
Cojo el área de texto 00:55:00
La meto otra vez para dejarla como estaba 00:55:03
Vale 00:55:04
entonces me vuelve a aparecer el error 00:55:06
pero es que esto es una cosa 00:55:08
especial, vamos a ver 00:55:10
esto en realidad 00:55:13
es una clase anónima que está dentro 00:55:13
del método, es una clase anónima 00:55:17
no es una clase interna 00:55:18
es una clase anónima y las clases anónimas se pueden 00:55:20
hacer dentro del método 00:55:23
entonces esto debería 00:55:24
tener acceso a las propiedades 00:55:27
las variables que están en el método 00:55:29
porque la clase anónima sí se puede hacer 00:55:31
dentro del método 00:55:33
no es como cuando hacemos una clase 00:55:33
interna, que la clase interna 00:55:36
está fuera del método, dentro de la clase 00:55:38
pero fuera del método, entonces solamente tiene acceso a las propiedades 00:55:40
de la clase, la clase interna 00:55:42
es que está a su vez dentro del método 00:55:44
luego tendría que tener acceso a las propiedades 00:55:45
del método, incluso aunque fueran 00:55:48
locales, y de hecho lo tiene 00:55:50
de hecho lo tiene 00:55:52
¿vale? 00:55:53
porque yo aquí, por ejemplo 00:55:56
he accedido a listado días 00:55:58
y listado días también es 00:56:00
local al método 00:56:02
y sin embargo, ¿por qué ha listado Thomas no puede? 00:56:03
pues por una cosa muy tonta 00:56:07
que es muy antinatural, pero funciona así 00:56:08
porque está declarada más abajo 00:56:11
y la máquina virtual de Java 00:56:15
aunque no lo parezca, es interpretada 00:56:17
entonces al ser interpretada lleva un orden 00:56:21
entonces a veces esas características 00:56:24
de ser interpretada se ponen de manifiesto 00:56:27
entonces si cambiáis esto, esto mismo 00:56:30
y lo colocáis delante 00:56:33
aunque siga siendo local 00:56:35
se quita ese error 00:56:37
esa tontería tiene esto a veces 00:56:38
coño, debería quitarse 00:56:40
ah, vale, es que el error 00:56:44
es por otra cosa, vale, vale 00:56:49
vale, ¿veis? 00:56:51
se quita, entonces 00:56:55
en algunas situaciones muy concretas 00:56:56
se ve el carácter 00:56:59
interpretado de la máquina virtual 00:57:01
que es un carácter, que es una cosa 00:57:02
muy mala, los lenguajes interpretados 00:57:05
O sea, que tú dependas del orden es absurdo 00:57:07
Bueno, pues entonces 00:57:10
El evento del combo ahora ya sí que está completo 00:57:13
Y todo hecho 00:57:15
Que esto era lo más largo del código 00:57:17
El hacer este evento 00:57:20
¿Vale? 00:57:21
Pero a ver, era programación de toda la vida 00:57:23
Recorrer un map 00:57:24
Y ya está 00:57:25
Entonces, vamos a probar ya 00:57:27
Ejecutar esto a ver qué pasa 00:57:30
Espera, voy a parar y volver a arrancar 00:57:32
Porque esto está quedando muy largo 00:57:33
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
22
Fecha:
15 de mayo de 2024 - 18:08
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
57′ 35″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
276.33 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid