Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 05-03-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, a ver
00:00:00
como estoy usando los paquetes
00:00:02
para distinguir los ejercicios entre sí
00:00:04
pues no voy a hacer
00:00:06
paquetes para entidades, lógica
00:00:08
etcétera, como es lo que se hace
00:00:10
en una situación habitual
00:00:12
pero bueno, a nosotros eso ya
00:00:13
como lo tenemos clarísimo, no tenemos que hacerlo
00:00:16
todo el rato para demostrarlo
00:00:18
pues nada, ejercicio 3
00:00:20
habréis hecho la clase
00:00:22
profesor, que la clase
00:00:24
profesor habréis
00:00:29
no tiene nada más que
00:00:31
el NIF y el nombre
00:00:35
y la lista, claro
00:00:39
la lista de alumnos
00:00:42
aquí siempre se nos va a plantear la duda
00:00:59
de esta propiedad alumnos
00:01:09
la dejo ya inicializada a una lista vacía
00:01:12
bueno, normalmente es recomendable
00:01:15
por lo de siempre
00:01:18
para que
00:01:19
alumnos no sea null nunca
00:01:21
porque si tenemos objetos que no son null
00:01:23
mejor
00:01:26
para que no nos den null pointer exception
00:01:27
si alguien los maneja mal
00:01:29
descuidadamente y no los instancia antes
00:01:31
entonces como estamos poniendo siempre
00:01:34
linked list
00:01:36
porque yo le tengo
00:01:37
un poco más cariño que a write list
00:01:40
pues como siempre ponemos linked list
00:01:41
vamos a variar, vamos a poner a write list
00:01:43
el uso es el mismo
00:01:45
salvo unos cuantos matices
00:01:47
que al final de esto
00:01:50
ya
00:01:52
podemos comentar para dejarlo completo
00:01:52
pero el uso es el mismo
00:01:55
insertar, recuperar en una posición
00:01:56
con el get, lo de siempre
00:02:00
pues venga
00:02:01
entonces los alumnos
00:02:03
la clase alumno
00:02:05
pues la clase alumno
00:02:09
que propiedades le habréis puesto
00:02:11
pues a ver, vamos a cerrar esto
00:02:12
la clase alumno le habréis puesto
00:02:14
ni fin hombre, ya está, un ejercicio sencillo
00:02:18
para practicar esto simplemente
00:02:21
que todos deberíais haber hecho ayer por la tarde
00:02:23
entonces el alumno ya no depende de nadie
00:02:27
pues le habréis puesto el constructor
00:02:41
los get y set
00:02:42
entonces aquí ya nos podemos adelantar y avanzar
00:02:48
como estamos caracterizando a una entidad
00:03:00
que es un alumno, lo estamos caracterizando
00:03:02
vamos a caracterizarlo del todo
00:03:04
entonces ya hemos caracterizado
00:03:06
sus propiedades
00:03:08
lo que lo identifica, el NIF y el nombre
00:03:10
el siguiente paso
00:03:12
¿vale? y algo de eso
00:03:14
lo identifica de forma única
00:03:16
¿vale? una cosa es la
00:03:17
información
00:03:20
la información es NIF y nombre
00:03:21
y luego otra cosa es la
00:03:24
metainformación
00:03:26
concepto que también
00:03:27
tenéis que conocer, metainformación
00:03:30
¿metainformación qué significa?
00:03:31
información
00:03:35
sobre la información, es decir, la información es NIF y nombre,
00:03:35
la información del alumno, y la meta información es cómo interpreto
00:03:40
yo esos datos, es información sobre la información, bueno pues
00:03:44
como parte de la meta información sería, oye NIF resulta
00:03:47
que yo sé, porque sé lo que es un NIF en la vida real, sé que
00:03:51
cada uno tiene un NIF único, lo sé, el nombre no,
00:03:56
lo del nombre lo repetimos, pero el NIF no,
00:04:01
entonces
00:04:03
estos atributos
00:04:04
además podemos extraer de ellos
00:04:06
que este va a ser único para los alumnos
00:04:09
eso automáticamente
00:04:11
nos permite decir
00:04:13
pues voy a hacer aquí un equals
00:04:14
para que a todos los efectos
00:04:16
de cara al resto del universo
00:04:18
a todos los efectos
00:04:20
dos alumnos con el mismo NIF sean iguales
00:04:22
entonces si incorporamos el equals
00:04:24
incorporamos esa
00:04:26
caracterización añadida de igualdad
00:04:28
y eso le va a ser muy útil a cualquiera
00:04:30
que trabaje con alumnos
00:04:32
porque si necesita en algún momento
00:04:34
distinguir si dos objetos son iguales
00:04:36
ya va a poder, si no ponemos un equals
00:04:38
no va a poder, entonces no se trata
00:04:40
solo de
00:04:42
decidir que propiedades
00:04:43
caracterizan a cada alumno, sino incorporar
00:04:46
toda la información que es útil para trabajar
00:04:48
con ellos, pues aquí es útil
00:04:50
incorporar mediante un equals
00:04:52
que dos alumnos con el mismo
00:04:54
nif son iguales
00:04:56
¿vale? siempre y cuando
00:04:57
pueda concluirlo
00:05:00
que en este caso está claro
00:05:01
bueno, pues entonces esto quedaría mucho más bonito
00:05:04
si uno se hace
00:05:06
un equals
00:05:08
basado en if
00:05:10
el hashCode fuera
00:05:11
no nos gusta por ahora
00:05:15
¿vale?
00:05:17
¿que vamos a mostrar datos de alumnos
00:05:20
en algún momento? pues también
00:05:22
es una buena costumbre poner un toString
00:05:24
como aparece en casi todas las clases
00:05:26
un toString que si alguien llama un
00:05:28
system.println o cualquier cosa
00:05:30
en lugar de ponerle el toString de equals
00:05:31
que es una arroba extraña
00:05:34
pues pone lo que uno quiera
00:05:35
bueno, pues buena costumbre
00:05:37
poner un toString con el aspecto que a uno le dé la gana
00:05:39
el que nos ofrece Eclipse
00:05:42
es este
00:05:46
¿nos gusta este? pues sí, no hombre ya está
00:05:47
¿no nos gusta? pues lo cambiamos
00:05:50
ah, el alumno está
00:05:52
y profesor ya tiene las propiedades
00:05:54
importamos list
00:05:57
array list
00:05:58
estamos repitiendo lo mismo
00:05:59
una, una y otra vez
00:06:02
así que si no os queda después de esto
00:06:04
tenéis un problema de fósforo
00:06:06
vale
00:06:09
a ver
00:06:11
ya tenemos las propiedades
00:06:12
pues lo de siempre, un constructor
00:06:15
aquí
00:06:17
meter en el constructor
00:06:19
la colección
00:06:22
pues quizá lo mismo que he dicho otras veces
00:06:24
pues a lo mejor es poco práctico
00:06:27
porque lo natural es que cuando uno
00:06:29
da de alta a un profesor porque ha llegado al instituto
00:06:31
da de alta a un profesor, da de alta al profesor
00:06:33
con su nifo y su nombre y los alumnos
00:06:35
irán llegando, entonces en el momento
00:06:37
de instanciar el profesor que se hace con el
00:06:39
constructor, pues ahí una situación
00:06:41
habitual es que solo tenga
00:06:43
en ese momento nif y nombre, entonces
00:06:45
tiene sentido hacer un constructor con nif y nombre
00:06:47
pero de nuevo todas estas cosas
00:06:48
se hacen después
00:06:51
de haber hecho toda esa fase de análisis en las que
00:06:53
se ha entendido
00:06:55
cuál es la situación real en la que se va a trabajar
00:06:56
entonces pues se va a trabajar una secretaría
00:06:58
Un profe llega que le acaba de mandar la consejería
00:07:01
Venga, que te doy de alta
00:07:03
Ya está, te doy de alta con nifinombre
00:07:04
Pues un constructor con nifinombre
00:07:07
Luego, como siempre he dicho
00:07:08
No es que haya la forma buena
00:07:21
Y la forma mala de hacer las cosas
00:07:23
Hay la forma
00:07:25
Que resuelve una situación
00:07:27
Y la forma que
00:07:29
No la resuelve un poquito peor
00:07:30
Ya está, no hay ni buena ni mala
00:07:33
Si no hay situaciones distintas
00:07:35
Vale, faltarían aquí los get y set
00:07:36
de todas las propiedades
00:07:42
y aquí podríamos hacer ya
00:07:45
la siguiente visita
00:07:48
de nuevo aquí
00:07:50
hay clave primaria
00:07:52
y hay algo que yo puedo interpretar como clave primaria
00:07:54
hombre pues sí, está claro que
00:07:56
los profesores van a tener todos diferentes
00:07:58
NIF o NIE o lo que sea
00:08:00
bueno, si hay algo que puedo identificar como
00:08:01
clave primaria a todos los efectos
00:08:04
de mi aplicación
00:08:06
pues ala
00:08:07
pongo un equals
00:08:09
con el nif
00:08:11
y mucho más bonito
00:08:18
y ya si lo quiero dejar
00:08:19
estupendísimo
00:08:22
pues pongo un toString
00:08:23
en el toString
00:08:26
meter la lista
00:08:30
no tiene mucho sentido
00:08:32
en el toString de profesor
00:08:34
pues lo natural es meter
00:08:38
nif, nombre y ya está
00:08:39
porque de hecho si metemos la lista
00:08:40
¿qué me hace el toString
00:08:43
este de Eclipse?
00:08:45
me muestra
00:08:48
NIF, nombre, alumnos
00:08:49
y luego aquí directamente la referencia
00:08:52
a la lista, con lo cual este
00:08:54
a su vez llamará al toString de lista
00:08:56
que me ha mostrado una patata
00:08:58
entonces este toString no nos vale
00:09:00
este toString va a
00:09:02
mostrar una patata muy fea
00:09:04
o me meto yo ahí en un for para mostrar los alumnos
00:09:06
que ya sería un toString muy complicado
00:09:08
o va, paso de ellos
00:09:10
directamente, como acostumbramos a hacer
00:09:12
vale
00:09:14
ya está, ya tengo un toString
00:09:15
de profesor, y ya
00:09:21
tenéis las dos clases, profesor
00:09:27
alumno, y ahora insertar profesor
00:09:29
add
00:09:31
que lo hacéis, vale
00:09:32
ahora, nuestro
00:09:34
main, este ejercicio dice que
00:09:37
en el main, es donde están los
00:09:39
datos, y los datos es el conjunto de profesores
00:09:41
vamos a hacer un main
00:09:43
ahí
00:09:45
no he puesto esto
00:09:53
ah, la dice, el main
00:09:55
el propio main, hace el volcado
00:10:08
de los datos, de la base de datos y los lleva
00:10:10
a la variable que sea
00:10:12
entonces todos los profes tienen que ir
00:10:14
a una variable para poder
00:10:16
manejarlo, pues ¿a cuál? ¿a una array?
00:10:18
¿a una lista? ¿un set? pues a una lista
00:10:20
pues sale a todos los profesores
00:10:22
con los que vamos a trabajar
00:10:24
ahí estarán
00:10:25
profesores
00:10:28
la implementación de lista que a uno
00:10:29
le dé la gana, aunque ya sabéis que hay
00:10:34
unos criterios
00:10:36
linked list mejor
00:10:37
para inserciones y
00:10:39
borrados
00:10:41
y peor para consultas y ArrayList
00:10:42
justo al revés
00:10:46
vale, pues entonces si uno
00:10:47
hace aquí, hacemos rápidamente el main
00:11:01
para que sea bueno, como si fuera un ejercicio
00:11:03
real
00:11:05
de examen o algo así, aunque va a ser más
00:11:07
difícil
00:11:09
voy a poner lo del teclado
00:11:10
para que sea más cómodo
00:11:15
añadimos esto
00:11:17
Vale, pues entonces aquí tenemos la opción, y ahora ya sí, insertar profesor, una de las opciones del menú, la otra era dado nombre de alumno, dado NIF, perdón, porque es lo que lo identifica, profes que dan clase a ese alumno,
00:11:28
Porque hay que avisarles de que se ha puesto enfermo o lo que sea.
00:12:18
Pues entonces, profes de un alumno dado NIF.
00:12:24
Esta sería la opción 2.
00:12:35
Y la 3.
00:12:39
Y la 3 sería listado alfabético de alumnos de un profe.
00:12:46
Aquí ya hay que hacer cosas de orden.
00:12:52
Alfabético de alumnos.
00:13:04
Vale.
00:13:07
Y ahora aquí leeríamos la opción y ahora ya el rollo de siempre.
00:13:07
En el caso de que la opción sea la primera, pues aquí ya sabemos que habrá que leer todos los datos del profesor.
00:13:29
Esto es un rollo, para lo cual aquí sería más bonito hacer un método auxiliar, llamar a ese método recoger datos, por ejemplo, para que no nos quede ahí un case con un montón de líneas.
00:13:42
Y luego una vez que hemos leído los datos de profesor
00:13:53
Pues habría que instanciarlo y añadirlo
00:13:58
A la lista de profesores
00:13:59
Aquí tendríamos, ¿no?
00:14:01
Un profesor P al que le leemos los datos
00:14:10
Y este pues ya lo añadiríamos
00:14:12
A la lista y ya está
00:14:19
Vale
00:14:20
Y ahora, la que nos interesa
00:14:32
Opción 2
00:14:34
Dado un NIF
00:14:35
Todos los de alumno, todos los profes que lo tienen
00:14:37
Entonces vamos a hacer aquí
00:14:41
La petición del dato del NIF
00:14:43
vale, pues el nif es un string
00:14:45
lo leeríamos con el mecanismo
00:14:56
de lectura que os guste
00:15:03
y ahora ya
00:15:04
habrá que hacer todo el código
00:15:06
correspondiente para buscar en la lista de
00:15:08
profesores, que profesor tiene ese
00:15:10
alumno, incorporarlo
00:15:12
al resultado, mostrarlo por consola, lo que sea
00:15:15
entonces aquí, en lugar de hacer
00:15:17
todo eso ahí, vamos a llamar a un método
00:15:20
que lo haga
00:15:22
vamos a cambiar la estructura
00:15:27
en vez de meterlo en un método de operaciones
00:15:28
pues un método auxiliar dentro del mismo main
00:15:30
vale, entonces si yo tengo
00:15:32
este método
00:15:41
en lugar de ponerlo aquí, repito, simplemente
00:15:41
lo hago llamando a un método
00:15:44
que está en la misma clase
00:15:46
pero vamos, voy a poner el código
00:15:48
dentro de ese método
00:15:50
entonces este método
00:15:51
este método será este
00:15:53
¿veis?
00:15:56
un método auxiliar
00:15:58
que va a coger el nif
00:15:59
y va a recorrer
00:16:02
esta lista de profesores
00:16:04
vale
00:16:07
y edu
00:16:07
este es el final del switch
00:16:12
por ahora
00:16:15
y aquí faltaría
00:16:16
el while, mientras
00:16:23
la opción sea diferente
00:16:24
de la de salir, que vamos a ponerle la de salir
00:16:27
la 0
00:16:29
vale, pues a ver, venga, observad
00:16:32
entonces esta estructura
00:16:48
otra vez, este es mi main
00:16:50
y dentro de mi main está la lista
00:16:52
de profesores con la que voy a trabajar
00:16:54
a la que luego voy a insertar aquí
00:16:55
la que voy a recorrer, aquí está mi lista de profesores
00:16:57
vale, la opción 2
00:17:00
que es la primera que estoy haciendo, pido el
00:17:02
nif y ahora voy a pasárselo
00:17:04
a un método
00:17:06
para que haga
00:17:06
todo lo que tenga que hacer y ya ese método
00:17:10
tenga los system out dentro para mostrar
00:17:12
lo recorro en un método
00:17:14
entonces este método
00:17:16
de nuevo ves que no lo estoy llamando
00:17:18
asociado a ningún objeto lo cual
00:17:20
es
00:17:21
no se puede
00:17:22
ya sabéis que a los métodos
00:17:25
y a las variables los llaman los objetos
00:17:28
salvo en el caso de ser
00:17:30
estáticos que entonces
00:17:32
lo que los llaman son las clases
00:17:34
y de oye método estático o variable
00:17:36
estática de esta clase
00:17:38
pero aquí no lo he llamado asociado a nada
00:17:39
¿por qué?
00:17:42
no lo he llamado asociado a nada
00:17:45
porque este método está
00:17:46
en la misma clase
00:17:47
Entonces como está en la misma clase
00:17:49
Esto es como
00:17:51
Si yo no lo asocio a nada
00:17:53
Por defecto es la clase en la que estoy
00:17:54
Es como si estuviera haciendo esto
00:17:57
¿Vale?
00:17:59
¿Vale?
00:18:03
Estamos repasando como siempre
00:18:05
Mostrar profes es un método estático
00:18:07
Mostrar profes es un método estático
00:18:10
De mi clase main
00:18:12
Es un método estático de mi clase main
00:18:13
Entonces como es un método estático
00:18:15
De mi clase main
00:18:17
Yo lo llamo con el nombre de la clase
00:18:18
pero
00:18:20
como en este caso
00:18:22
main es la misma clase en la que estoy
00:18:24
main es en la que estoy, no es otra
00:18:26
es en la que estoy
00:18:28
este main es opcional
00:18:29
en este caso
00:18:32
¿vale? porque en este caso la clase
00:18:33
que llama el método es la misma
00:18:36
en la que estoy
00:18:40
si yo llamara un método estático de otra clase
00:18:41
ahí sí que tengo que poner el nombre de la clase sí o sí
00:18:44
pero si estoy llamando un método
00:18:46
estático de la misma clase en la que estoy, sería opcional, ¿vale?
00:18:48
Lo digo porque siempre que aparece un método suelto parece que no lo llama nadie y siempre
00:18:52
lo llama alguien. Un objeto, si es que no es
00:18:56
estático, o una clase si es que es estático, ¿vale? Bueno, eso por
00:19:00
un lado. Siguiente cosa. Ahora
00:19:04
yo ya podría ponerme aquí a navegar por los profesores. Yo aquí lo que tengo que hacer
00:19:10
es navegar por los profesores, cada profesor, si tiene un alumno con
00:19:14
este nif, mostrarlo
00:19:18
bueno, pues podría ya ponerme
00:19:20
aquí a hacer eso, me falta
00:19:22
algo, no, por ejemplo
00:19:27
vamos a ponernos a navegar por la lista de profesores
00:19:32
para ver si ese profesor
00:19:34
contiene al alumno
00:19:37
y si lo contiene lo muestro
00:19:39
pues navegar la lista de profesores
00:19:40
es una lista
00:19:43
¿cómo recorro una lista?
00:19:44
un for de índice
00:19:47
con el get, un for each, un iterador
00:19:49
vamos a poner
00:19:51
un for de índice que es lo más habitual para las listas
00:19:53
porque tienen posición
00:19:55
los iteradores son más para conjuntos
00:19:57
y sea menor que
00:19:59
¿cómo se llama la lista?
00:20:02
se llama profesores
00:20:04
profesores.size
00:20:06
incrementando
00:20:10
y pues aquí tendríamos que hacer
00:20:14
aquí tendríamos que hacer
00:20:16
Si profesores tiene al alumno I, habría que ver cómo es eso de tiene al alumno I.
00:20:22
Pues muestro profesores, vale.
00:20:27
Pero se me ha puesto en rojillo, ¿verdad?
00:20:30
¿Por qué se me ha puesto en rojillo esto?
00:20:35
Sin que lo miréis en la manita.
00:20:40
Eh, Diego, no es por eso.
00:20:45
este método es el que yo he hecho
00:20:54
para recorrer la lista de profesores
00:21:01
que tengo aquí arriba
00:21:02
esta, para recorrerla
00:21:04
y para cada profesor
00:21:07
pues mirar si tiene alumno con este NIF, etc.
00:21:08
pero antes de arrancar a hacerlo ya me pone
00:21:10
eso que no, ¿por qué?
00:21:12
si yo pongo aquí
00:21:16
la manilla, ¿qué
00:21:17
error me va a dar?
00:21:18
bueno
00:21:24
No, estar está, lo que pasa es que no tiene, inicializada está, o sea que no está inicializada no, ¿qué otra cosa me va a decir? Sin ponerla vosotros, no me va a decir que no sea public, aparte es que el modificador public yo no puedo ponerlo aquí, el modificador public se pone en las propiedades de las clases, esto no es una propiedad de una clase, es una variable del método, es distinto una propiedad de clase,
00:21:24
que se pone aquí, que una propiedad
00:21:57
de método, que es una propiedad
00:21:59
no, una variable local de un método
00:22:01
venga, ¿qué error me va a decir ahí en rojo?
00:22:02
va por ahí, sí
00:22:15
pero exactamente ¿qué me va a decir?
00:22:16
me va a decir
00:22:25
is not visible
00:22:26
no me va a decir
00:22:29
oye, o no visible
00:22:31
perdón, que no la conozco
00:22:34
me va a decir, ¿quién es profesores?
00:22:35
no la conozco, eso es lo que me va a decir
00:22:38
¿Veis? Me dice
00:22:43
cannot, no puede ser resuelta.
00:22:44
No la conozco, no puede ser resuelta.
00:22:47
Eso es lo que va a decir, ¿no?
00:22:50
Desconocida, variable desconocida.
00:22:51
Claro, y tan desconocida
00:22:53
porque tenemos dos
00:22:55
métodos. Main es un método
00:22:56
que acaba y termina aquí.
00:22:58
Este es otro
00:23:01
que acaba y termina aquí. Las variables
00:23:02
locales de un método
00:23:04
no son visibles para otro método.
00:23:06
Una variable local de un método
00:23:08
tiene visibilidad solo
00:23:10
en ese bloque, no tiene visibilidad
00:23:12
afuera, entonces
00:23:14
mi variable profesor es, yo la he declarado
00:23:16
aquí dentro del main
00:23:19
que es el que hace las cosas, trabaja
00:23:19
y ahí está, no pasa nada, puede estar ahí
00:23:22
perfectamente, porque va a estar ahí
00:23:24
toda la vida del main, toda la vida del programa
00:23:27
porque el main va a estar ahí
00:23:29
pero todo lo que yo
00:23:30
haga fuera del main, es imposible
00:23:33
que tenga acceso a esta variable
00:23:35
porque es local
00:23:36
¿vale? entonces
00:23:37
era de esperar que esos me pusieran rojillo
00:23:40
y me dijeran no conozco profesores
00:23:43
vale, bueno
00:23:45
pues soluciones
00:23:47
primera solución que se os ocurre
00:23:48
decirle no la conoces
00:23:51
te la paso por parámetro
00:23:55
tranquilo, no pasa nada, te la paso por parámetro
00:23:57
entonces este método
00:23:59
mostrar profesores
00:24:01
que reciba el NIF
00:24:02
y la lista de profes con la que trabajar
00:24:05
llamémosle profesores
00:24:07
lista como... ¡Uy, profe!
00:24:16
¿Vale? Dice, no puedes acceder
00:24:20
a ella porque es local al
00:24:22
método main, con lo cual desde
00:24:24
fuera de main no puedes.
00:24:25
Te la paso por parámetro.
00:24:28
¿Vale? Entonces, ahora
00:24:30
cuando llamemos el método,
00:24:32
habrá que pasarle la lista con la
00:24:34
que queremos trabajar.
00:24:36
¿Vale?
00:24:39
Esta es una solución.
00:24:41
Y otra, si es que
00:24:49
podemos, otra sería sacarla
00:24:50
de aquí, ¿no? O sea, si el problema es que es local a main
00:24:53
y por tanto fuera de main no puedo, pues hombre
00:24:56
si la saco como variable de clase, si la saco como variable de clase
00:25:00
y la pongo aquí, esta, si la saco
00:25:05
fuera, ya pueden acceder a ella cualquier método
00:25:09
de la clase main, ¿no? Es el otro, es decir, la saco
00:25:13
fuera. Vale, sacarla fuera así tal cual, hacer un copia y pega
00:25:17
de esto aquí, pum, copio
00:25:23
corto más bien, corto y pego
00:25:24
eso tal cual
00:25:27
corto y pego sería una solución
00:25:28
no, porque no, que más habría que poner
00:25:30
o no, razonadlo
00:25:33
ya, pero que no es un tema de que no me acuerdo
00:25:39
porque me falla la memoria
00:25:44
sino es
00:25:46
que lo razonéis
00:25:48
que esto no lo habréis aprendido de memoria, que lo habréis entendido
00:25:50
Entonces si yo hago un corta y pega
00:25:52
Y saco esto fuera
00:25:56
El problema está resuelto, puedo trabajar ya dentro
00:25:56
De los métodos con la variable profesores
00:25:59
Tanto de este como del otro
00:26:02
Vamos a hacer un corta y pega
00:26:03
Hago un corta
00:26:09
Y pega
00:26:12
Ya, pero no me vale que me digáis las cosas como conejos
00:26:15
A ver, entonces, y voy a poner la situación en la que estaba
00:26:19
En la que ya no se lo paso como parámetro
00:26:21
Ya no se lo paso
00:26:23
vale, ya no se lo paso como parámetro
00:26:25
no se lo paso
00:26:31
¿por qué? porque la he sacado
00:26:33
fuera, ahora es una variable de clase
00:26:35
ahora es una variable de clase
00:26:37
todos los
00:26:39
métodos de la clase
00:26:41
tienen visibilidad de esa variable, todos
00:26:42
una variable de clase, ¿no? todos
00:26:45
pero aún así
00:26:46
cuando yo intento acceder a
00:26:47
profesores aquí, me sigue poniendo en rojo
00:26:51
entonces sin poner ahí la manita
00:26:53
¿qué error me está diciendo ahora ahí?
00:26:55
me sigue dando un error, sí o sí
00:26:57
desde luego ya no va a ser
00:26:58
profesores cannot be resolved
00:27:01
ya no va a ser
00:27:02
porque profesores claro que puede ser resuelta
00:27:03
tienes perfectamente acceso a ello
00:27:05
es una variable de la clase
00:27:07
pues que error nos va a dar ahí
00:27:08
claro me va a decir
00:27:12
no puedes referenciar a una variable
00:27:16
no estática dentro de un método estático
00:27:18
eso era el concepto de estático
00:27:21
verdad
00:27:23
que es justo lo que me dice
00:27:23
oye
00:27:25
no puedes referenciar a una variable estática
00:27:26
a una variable no estática
00:27:30
en un contexto estático
00:27:33
claro, si esto es un método
00:27:35
estático, entonces uno podría
00:27:38
decir, ah, estupendo
00:27:40
no pasa nada
00:27:42
le quito el static
00:27:43
genial
00:27:45
le quito el static, ningún problema
00:27:48
este método ya puede acceder a profesores
00:27:50
perfectamente
00:27:52
pero ahora en qué le ha cagado
00:27:53
ahora ya sí que le ha cagado y ha roto la aplicación del todo
00:27:56
¿no?
00:27:58
le he quitado el static
00:28:00
para que ya pueda acceder a la variable de clase
00:28:01
no estática que yo he pegado
00:28:04
arriba, y ahora me dice
00:28:06
vale, este se ha quedado tranquilo, pero
00:28:08
arriba ha explotado todo
00:28:10
¿por qué ha explotado?
00:28:11
porque no puedo llamar desde main
00:28:17
que es estático, no puedo llamar a un método que no sea
00:28:19
estático, ¿vale? ahora el que ha saltado
00:28:22
es este, main es un
00:28:24
método estático y esto sí que no lo puedo
00:28:25
cambiar sí o sí, esto no lo puedo cambiar
00:28:27
porque el main tiene que estar en la cabecera
00:28:30
luego todo
00:28:31
lo que llame este método que esté fuera
00:28:33
sea propiedad
00:28:36
o sea otro método, todo tiene que ser estático
00:28:37
obligatoriamente, entonces si yo le he
00:28:40
quitado el estático a mostrar profesores
00:28:42
a mostrar profes
00:28:44
si se lo he quitado
00:28:46
de ahí ya no puedo llamarlo
00:28:47
con lo cual, quitar
00:28:48
este static no ha sido solución
00:28:53
quitar el static no ha sido solución
00:28:55
entonces que puedo hacer para arreglar
00:28:58
esto y que pueda acceder
00:29:00
a profesores
00:29:02
sin necesitar pasársela.
00:29:02
¿Qué cambio puedo hacer?
00:29:07
Ya el último cambio, ya el definitivo.
00:29:11
¿Vale? O sea, estamos otra vez
00:29:14
que método
00:29:16
estático no puedes acceder a una variable
00:29:17
de clase que no sea estática.
00:29:19
No, es muy sencillo.
00:29:27
Hagamos la lista estática, pero ¿qué más me das?
00:29:29
Si solo hay una...
00:29:31
Y esta es la solución, natural.
00:29:33
O sea, yo solamente tengo una lista de profesores.
00:29:38
Pues ya está.
00:29:41
Esta, que sea static.
00:29:43
Y entonces pueden acceder todos los métodos.
00:29:45
Y no tengo que pasarlo por parámetro.
00:29:48
Aunque podríamos haber optado por la primera solución que dijimos.
00:29:50
Pásaselo por parámetro.
00:29:52
Si es que yo no puedo sacarlo del main.
00:29:54
Si yo no puedo sacarlo del main,
00:29:56
porque la tengo que tener aquí,
00:29:59
no puedo sacarla del main.
00:30:00
entonces la única solución es
00:30:01
pasársela por parámetros
00:30:04
la primera que habíamos dicho, pasársela por aquí
00:30:05
no hay solución, pero si la puedo sacar
00:30:07
del main, mejor, no tengo que
00:30:10
pasar por parámetro todo el rato
00:30:12
pero entonces pongamos la estática que no pasa
00:30:13
nada, porque sea estática
00:30:16
de hecho va en su naturaleza, solo hay una lista
00:30:17
de profesores
00:30:20
¿vale?
00:30:20
bueno, pues entonces ahora ya podríamos
00:30:25
recorrer este
00:30:27
cacharro de profesores para hacer las cosas
00:30:28
¿Vale?
00:30:31
Venga, vamos a parar un par de minutillos
00:30:32
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 11
- Fecha:
- 6 de marzo de 2024 - 12:22
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 30′ 38″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 153.53 MBytes