Clase 14-05-24 - 1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
y
00:10:11
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
7
00:19:38
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
de
00:34:55
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
X
00:38:36
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
At
00:38:52
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
en
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
si
00:53:25
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