Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Clase 27-02-24 - 3 - 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 27 de febrero de 2024 por Raquel G.

7 visualizaciones

Descargar la transcripción

vale, vamos a nuestro main 00:00:00
este de aquí otra vez 00:00:02
pues hombre, ya hay muchas cosas que podemos hacer con una lista 00:00:03
¿no? 00:00:06
podemos meter cosas 00:00:08
podemos recuperar 00:00:09
podemos consultar 00:00:12
recorriendo con un for y con el get 00:00:13
consultar por posición 00:00:16
hemos podido ordenar 00:00:17
y muchas cosas, las que nos ofrezcan los métodos 00:00:20
¿que queremos eliminar? 00:00:22
vale, vamos a eliminar 00:00:24
y ya hacéis un pequeño 00:00:25
main 00:00:28
que haga cosas con alumno, con una colección 00:00:29
y ya está 00:00:31
vale, que queremos eliminar alumnos 00:00:33
por ejemplo, vale 00:00:35
pues ya hemos visto antes que remove 00:00:45
hay unas cuantas variantes 00:00:47
de remove, eliminar por 00:00:48
posición está clara, imaginamos que queremos 00:00:51
eliminar el 00:00:53
ah bueno, que lo hemos hecho antes 00:00:55
el remove 1, vale, este ya lo hemos hecho 00:00:56
hemos visto que efectivamente podemos 00:00:59
eliminar por posición 00:01:01
vale, pero hemos visto que había 00:01:02
otra variante, ¿vale? 00:01:18
Eliminar por objeto. Hemos visto que había 00:01:28
una variante, jolines, 00:01:30
hemos visto que efectivamente 00:01:47
había una variante 00:01:48
que le pasabas un objeto y te 00:01:49
elimina ese objeto 00:01:52
de la colección. 00:01:53
¿Vale? Es decir, 00:01:56
tú no tienes la posición en la 00:01:58
que está el alumno, que normalmente 00:02:00
en muchos casos no eliminas por 00:02:02
posición. Yo tengo mi aplicación de 00:02:04
gestión de alumnos. Según me van llegando 00:02:06
al mostrador de secretaría 00:02:08
pues nada, yo voy, venga, en mi interfaz gráfica 00:02:09
voy ahí pa' papá, voy tecleando 00:02:12
sus datos pa' dentro, tecleando sus datos pa' dentro 00:02:14
eso en la aplicación está generando una 00:02:16
lista 00:02:18
pero la aplicación de gestión 00:02:18
no tiene por qué estarte registrando en qué 00:02:22
posición está cada uno, no tiene por qué 00:02:24
estarte registrando, entonces tú a lo mejor 00:02:26
quieres eliminar uno, pero quieres 00:02:28
eliminar el alumno que te llega, oye que soy 00:02:30
Pepito, con el número de matrícula tal 00:02:32
elimíname 00:02:33
bueno, pues Pepito, con el número de matrícula tal 00:02:34
donde está, no le puedo eliminar por posición 00:02:38
para eso 00:02:39
estaría este remove 00:02:42
para eso estaría este remove 00:02:43
vale, voy a intentar usarlo así 00:02:45
vamos a intentar usarlo así, a ver que pasa 00:02:47
vamos a suponer 00:02:50
que queremos eliminar 00:02:52
a este objeto 00:02:53
a este objeto 00:02:55
vamos a eliminar a este de aquí 00:03:07
a este 00:03:10
bueno, pues en principio 00:03:12
uno podría pensar, no 00:03:16
voy a pasarle 00:03:18
ese objeto 00:03:21
voy a pasarle ese 00:03:22
el alumno con 00:03:25
número de matrícula 3 que se llama 00:03:28
Pepe con 20 años 00:03:30
que lo he metido aquí 00:03:31
y está en la lista 00:03:33
vamos a eliminarlo 00:03:34
y ahora vamos a 00:03:39
volver a recorrerla 00:03:41
a ver que ha hecho 00:03:46
voy a poner aquí 00:03:47
esto para que se vea que 00:03:55
este último 00:03:57
a ver 00:04:00
remove me dice 00:04:06
pásale un objeto 00:04:07
sí, pero déjame que lo probemos 00:04:08
vale, pero me refiero 00:04:16
que alguien podría pensar, me pides un objeto 00:04:20
a eliminar 00:04:22
yo de ese objeto ya no tengo la referencia en ningún sitio 00:04:24
porque cuando yo te lo he 00:04:27
dado para insertar te he dicho 00:04:29
un alumno con estos datos 00:04:30
vale 00:04:32
y ahora bórrame un alumno con esos datos 00:04:34
entonces uno podría pensar 00:04:36
efectivamente que esto tiene sentido 00:04:38
¿no? te paso un objeto 00:04:40
con esos datos, búscame el que 00:04:42
sea igual, ¿vale? 00:04:44
entonces vamos a probarlo 00:04:46
vale 00:04:47
y efectivamente yo le he pasado 00:04:55
que borre al pp este 00:04:57
y no ha borrado a nadie 00:04:59
¿vale? no ha borrado a nadie 00:05:03
luego la pregunta sería 00:05:05
¿entonces este remove por objeto 00:05:07
para qué vale? ¿cómo lo puede usar? 00:05:08
¿para qué sirve? 00:05:12
vale, pues remove ¿qué es lo que hace? 00:05:15
A remove tú le pasas un objeto, eso está claro, un objeto, y él empieza a recorrer la colección hasta que encuentra uno que es igual a ese, y en cuanto encuentra un objeto que es igual a ese, ese objeto lo elimina, y ya está. 00:05:17
Vale, ¿qué he dicho yo en esta frase? Que está abierto, un objeto que sea igual a ese, eso está abierto, e igual, ¿qué significa que sea igual? 00:05:34
que significa que sea igual 00:05:44
pues en términos de java 00:05:46
ser igual significa que el método 00:05:49
equals para esos dos objetos 00:05:50
me ha devuelto true 00:05:53
y el método equals de la clase 00:05:54
alumno, cual es 00:05:57
el de object porque no lo he sobrescrito 00:05:59
luego 00:06:00
remove que ha hecho 00:06:03
cuando yo he hecho esto de aquí 00:06:04
aquí ha pasado 00:06:06
esto, vamos a 00:06:09
abrir 00:06:11
Nuestro paint magnífico 00:06:13
Vale 00:06:15
Yo tengo 00:06:19
Ah que susto 00:06:20
Vale yo tengo aquí mi lista 00:06:23
Imaginamos que esta es mi lista 00:06:27
Vale 00:06:30
Entonces tengo aquí 00:06:30
Mi lista 00:06:32
Le voy a poner 00:06:36
Dos propiedades solo 00:06:38
Aquí está Pepe 00:06:39
Que tiene 00:06:41
20 años 00:06:43
Vale 00:06:48
Aquí está cualquier otro 00:06:49
Voy a hacer dos solamente 00:07:05
Vale 00:07:07
Y esta es mi lista 00:07:14
Bueno, y aquí está este otro 00:07:17
Vale, pues esta es mi lista 00:07:19
Con estos objetos 00:07:29
PP20, Juan27 00:07:30
Ana12 00:07:33
Ahora yo quiero borrar a Juan27 00:07:33
Entonces estoy creando un nuevo objeto 00:07:36
Juan 27 00:07:38
Esto de aquí, estoy creando un nuevo objeto 00:07:39
Este 00:07:42
Es lo que estoy haciendo 00:07:43
Vale, pues estoy creándome aquí un nuevo objeto 00:07:45
Este de aquí 00:07:48
Que tiene también 00:07:49
Juan 00:07:55
Y 27 00:07:57
Vale 00:08:00
Bueno, pues le estoy pasando a remove 00:08:01
Le estoy pasando esto de aquí 00:08:04
Este le estoy pasando 00:08:06
A remove 00:08:08
Y mi lista es esta 00:08:08
esta es mi lista 00:08:10
¿vale? esta es la lista 00:08:12
¿qué hace Remus? 00:08:15
pues empieza a comparar uno con uno 00:08:17
primero 00:08:19
compara Juan con Pepe 00:08:21
este objeto con este otro 00:08:23
si son iguales 00:08:25
elimina a este de la lista 00:08:27
que no son iguales 00:08:30
pasa al siguiente 00:08:31
compara este con este 00:08:32
que son iguales 00:08:34
elimina a este de la lista 00:08:36
que no lo son 00:08:38
pasa a comparar este con este 00:08:39
luego el remove hace muchas cosas por dentro 00:08:41
y tera por toda la lista 00:08:43
hasta que encuentra uno que es igual 00:08:44
que este de aquí, hasta que lo encuentra 00:08:47
cuando ha encontrado uno que es igual que este 00:08:49
de aquí, coge ese y lo saca de la lista 00:08:51
pero claro, el tema es 00:08:53
para remove, ¿qué significa que 00:08:54
un objeto alumno sea igual a otro 00:08:57
objeto alumno? ¿qué criterio usa? 00:08:59
pues llamar al equals, llamar al 00:09:01
equals de este con este 00:09:03
y si el equals da true, asume que 00:09:04
son iguales y si da false, asume que no 00:09:07
bueno, pues tiene que llamar al equals de alumno 00:09:09
y el equals de alumno, ¿cuál es? 00:09:12
como el alumno no está 00:09:14
el equals de alumno es el de object 00:09:15
y el equals de object 00:09:17
ya sabemos, porque ya lo vimos 00:09:20
que solo te dice que dos objetos son iguales 00:09:21
si son directamente 00:09:24
el mismo 00:09:26
el mismo, directamente 00:09:27
o sea, uno encima de otro 00:09:29
la misma referencia de memoria 00:09:30
no que los datos sean iguales 00:09:32
sino que sean directamente el mismo 00:09:34
entonces este y este 00:09:37
no son el mismo, son dos objetos 00:09:40
distintos teniendo los datos 00:09:42
iguales, entonces remove 00:09:44
jamás le va a salir un equals ni con este 00:09:46
ni con este, ni con este, es imposible 00:09:48
porque este es otro objeto 00:09:50
entonces ¿para qué sirve este 00:09:51
método? si yo le tengo que pasar un 00:09:54
objeto que voy a crear 00:09:56
y nunca va a ser igual a los demás 00:09:57
¿para qué sirve ese método? claro 00:10:00
es que lo que hay que hacer es en la clase 00:10:02
alumno cambiar el equals 00:10:04
y poner el equals que nos interesa a nosotros. 00:10:05
Y decir, a ver, para mí, ¿cuál es la característica 00:10:08
que me caracteriza de forma única a un alumno? 00:10:10
Cuando a mí me llega un alumno que me doy de baja, 00:10:13
¿qué dato le voy a pedir? 00:10:15
El número de matrícula. 00:10:16
Eso es lo que le voy a pedir. 00:10:18
Bueno, pues entonces mi equals, 00:10:19
lo que me marca la igualdad entre alumnos, 00:10:21
es el número de matrícula. 00:10:23
Pues entonces me hago un equals en alumno 00:10:25
que si dos objetos tienen mismo número de matrícula, 00:10:28
asume que son iguales. 00:10:32
¿Vale? 00:10:35
Entonces, todo esto son decisiones que se tienen que decidir en función del uso que se le da a la aplicación. 00:10:35
Entonces, tu aplicación es, hombre, tienes alumnos con número de matrícula. 00:10:42
Cuando te llegue uno con un número de matrícula tal, pues le borras. 00:10:45
Ah, vale, entonces el número de matrícula los identifica de forma única. 00:10:48
A igualdad número de matrícula, igualdad de alumnos. 00:10:52
A diferente número de matrícula, diferentes alumnos. 00:10:55
Esto es una decisión que se toma estudiando la aplicación, claro, no es que sea así, así. 00:10:59
bueno, pues cuando ya se ha visto que eso es así 00:11:03
te vas a la clase alumno 00:11:06
y haces el equals 00:11:08
para que ya no use el de object 00:11:10
y haces el equals 00:11:12
nos vamos a la clase 00:11:14
alumno y decimos, oye, vamos a hacer el método 00:11:16
equals 00:11:18
pues venga 00:11:19
vamos a generar 00:11:21
el equals 00:11:24
que no estamos haciendo nada malo porque somos 00:11:25
unos vagos 00:11:29
y, ah, lo he 00:11:30
espera, que lo he hecho 00:11:32
con todos los 00:11:34
los 00:11:36
campos, solo quiero con el 00:11:38
num matricula 00:11:41
vale, queremos que tengan 00:11:41
en cuenta solo el número de matricula 00:11:48
ala 00:11:50
y el hash este no lo quiero para nada 00:11:52
no, este no era, este 00:11:54
ya tengo un método equals que 00:11:55
sobrescribe el de object, sobrescribe el de 00:12:00
arriba, sobrescribe el de object 00:12:02
ya lo tengo ahí 00:12:04
y ahora este me va a devolver true 00:12:06
si el número de matrícula 00:12:08
del objeto que llama al método 00:12:10
es igual que el otro, y si no, no 00:12:13
luego ahora ya le he dado un criterio 00:12:14
de igualdad a alumno 00:12:17
luego ahora ya perfectamente 00:12:18
cuando se lo pase al remove, el remove que hará 00:12:20
¿este es igual a este? 00:12:23
no, porque los números de matrícula 00:12:25
son distintos, vale 00:12:27
¿este es igual a este? 00:12:28
sí, porque los números de matrícula 00:12:30
son el mismo, luego este 00:12:33
es igual a este, luego entonces ya 00:12:34
eliminará este porque es igual 00:12:37
que este que le he pasado 00:12:39
y así se usa el remove 00:12:40
el remove no tiene sentido si no hay un equals 00:12:42
no tiene ningún sentido 00:12:45
si no hay un equals 00:12:46
el remove tiene que 00:12:47
tener un equals en la clase 00:12:50
para poder saber 00:12:53
cuál tiene que borrar 00:12:54
cuál tiene que borrar 00:12:57
y es el que sea igual según ese criterio 00:12:59
a ese que yo le estoy pasando 00:13:01
entonces con el equals que hemos puesto ahora en alumno 00:13:02
con el equals que hemos puesto 00:13:06
ahora ya 00:13:08
al de matrícula 3 00:13:10
sí que nos lo va a eliminar 00:13:12
al de matrícula 3 00:13:14
entonces, si volvemos a ejecutar 00:13:15
esto, pues efectivamente 00:13:18
a este 00:13:23
lo ha quitado 00:13:24
ya no está 00:13:26
al de matrícula 3 lo ha quitado 00:13:27
bueno, en este caso 00:13:31
sí lo habíamos ordenado 00:13:39
después de, estaba aquí 00:13:40
00:13:42
Sí, con lo cual los que están detrás 00:13:44
Ganan una, suben para arriba 00:13:49
Claro, claro, claro, sí, sí, sí 00:13:50
Si tú eliminas uno, el que estaba en la 2 pasa a la 1 00:13:52
El que estaba en la 3 pasa a la 2 00:13:55
Todo eso es automático 00:13:56
Vale 00:13:57
Entonces, tanto es así en el remove 00:13:59
Que es que 00:14:03
A mí esto ya me da igual 00:14:04
Ahí no tengo ni que pasarle nada 00:14:06
Porque de hecho esto simula 00:14:07
Yo le puedo pasar ahí null 00:14:10
Y cualquier otra cosa 00:14:12
Lo que a mí me dé la gana 00:14:15
y va a funcionar igual 00:14:16
porque de hecho 00:14:18
la funcionalidad será así 00:14:19
cuando tú eres el mostrador con la aplicación 00:14:21
y te llega un tío para eliminar matrícula 00:14:23
te va a decir su número de matrícula 00:14:26
y solo con su número de matrícula 00:14:27
tienes que ser capaz de borrarle 00:14:29
solo con su número de matrícula 00:14:31
claro, pues a remove le pasamos un alumno 00:14:32
con ese número de matrícula, lo demás nos da igual 00:14:35
porque como remove va a usar el equals 00:14:37
y el equals solo mira esto 00:14:40
me da igual lo que haya aquí 00:14:42
me da igual, lo que importa es 00:14:43
lo que yo pongo aquí, porque 00:14:45
solo este campo 00:14:47
es tenido en cuenta para Liquas 00:14:49
que hace remove para ver si no es igual a otro 00:14:51
luego si yo esto lo dejo así 00:14:53
me va a funcionar exactamente igual 00:14:55
me va a borrar el de 3 00:14:57
me lo ha borrado igualmente 00:14:58
me ha borrado el de matrícula 3 00:15:08
aunque yo le pase ahí cualquier otra cosa 00:15:10
cualquier dato, como si le paso ahí 00:15:14
Anita, Pepito, me da igual 00:15:16
él solamente mira esto 00:15:17
solamente mira eso 00:15:19
me lo ha borrado igualmente 00:15:22
el de matrícula 3 00:15:24
que mi criterio 00:15:25
de distinción de alumnos es el nombre 00:15:28
bueno, pues entonces te voy a cambiar 00:15:30
el equals, claro, te voy a cambiar el equals 00:15:32
para que 00:15:35
se adapte 00:15:36
vale, bueno, pues a ver 00:15:38
entonces 00:15:43
haced unas funcionalidades aquí en el main este 00:15:44
para que 00:15:48
todo esto quede claro 00:15:50
entonces 00:15:54
Ahora ya sí que hacer 00:15:55
La aplicación de gestión de estos alumnos 00:15:59
Con esto, que sería 00:16:01
¿Qué se puede hacer con alumnos? 00:16:02
Pues esta es la aplicación de secretaría 00:16:05
La aplicación de secretaría, pues ¿qué tiene que hacer? 00:16:06
Pues nada, insertar 00:16:09
Un alumno 00:16:11
Tendrá que pedir los datos e insertar el alumno 00:16:13
Vale 00:16:15
Mostrar datos de alumno 00:16:16
Dado su número de matrícula 00:16:24
¿Vale? 00:16:36
y vamos a 00:16:37
incorporarle aquí, ahora que ya hacemos el ArrayList 00:16:42
para poder hacer esta aplicación 00:16:45
con más cosas, a partir de nombre y edad 00:16:47
vamos a incorporarle las asignaturas 00:16:49
de las que se matricula 00:16:51
ahora nuestro alumno se va a caracterizar por su 00:16:52
número de matrícula, su nombre 00:16:55
y asignaturas de las que se matricula 00:16:57
vale, pues ahora ya 00:16:59
asignaturas de las que se matricula 00:17:01
lo tenemos mucho más fácil que antes 00:17:02
porque antes teníamos que poner ahí un Array de asignaturas 00:17:05
que da un rollo, pues ahora no tenemos 00:17:07
por qué poner ahí un array de asignatura 00:17:09
vamos a hacer 00:17:10
que las asignaturas 00:17:13
de las que se matricule 00:17:15
mates, lengua, lo que sea 00:17:16
sea una lista 00:17:18
de asignaturas y ya está 00:17:21
¡hala! 00:17:23
mucho más fácil que un array 00:17:30
y cuando queramos meter una asignatura nueva al alumno 00:17:31
habrá que hacerle add a esta lista 00:17:33
entonces 00:17:36
primero 00:17:38
modificamos alumno para que se caracterice 00:17:39
además por la lista de asignaturas 00:17:42
de las que se matricula 00:17:44
el constructor de alumno lo dejamos igual 00:17:46
porque cuando construimos un alumno 00:17:48
vamos a construirlo por ahora 00:17:50
con número de matrícula, nombre y edad 00:17:52
y sin asignaturas 00:17:53
pero el get y el set 00:17:55
sí que vamos a ponerlo 00:17:56
el get y el set sí 00:17:58
el get y el set sí que vamos a ponerlo 00:17:59
porque si no, no podemos acceder a esa lista 00:18:03
get y set de asignaturas 00:18:05
vale, pues entonces 00:18:07
hemos ampliado nuestro objeto alumno 00:18:09
Lo hemos ampliado. 00:18:11
Y ahora ya ampliado nuestro objeto alumno, 00:18:12
podemos hacer un primer main, un primer menú que haga más cosas. 00:18:15
Insertar un alumno. 00:18:19
Por ahora sin asignaturas, porque habrá otra opción para 00:18:21
matricularle de una asignatura. 00:18:24
Habrá que solicitar los datos y todo eso, 00:18:28
pero serán solo tres datos. 00:18:29
Vale, mostrar datos de alumno dado su número de matrícula. 00:18:32
Vale, ¿qué más cosas podemos querer hacer con un alumno? 00:18:35
Matricular a un alumno de una asignatura, 00:18:38
dado que 00:18:41
dado el número de matrícula 00:18:45
del alumno y el nombre de la asignatura 00:18:47
de la que se quiere matricular 00:18:50
y el nombre, las asignaturas las hemos hecho como 00:18:50
string, para no liarlo, el nombre de la asignatura 00:19:09
ya está 00:19:12
y el nombre de asignatura 00:19:12
a la que más cosas le puede interesar hacer 00:19:16
a la aplicación de secretaría 00:19:19
meter un alumno 00:19:21
los datos del alumno 00:19:23
al que tú le metes un número de matrícula 00:19:25
te da los datos que tiene 00:19:27
matricularle de una asignatura 00:19:28
y vamos a ponerle alguna otra 00:19:31
cosilla que implique 00:19:33
desmatricularle 00:19:35
de una asignatura 00:19:39
dado el número de matrícula también 00:19:40
y el nombre de la asignatura 00:19:49
y ahora vamos a poner alguna funcionalidad 00:19:50
que 00:20:05
para operar un poco, para no olvidarnos 00:20:06
de programar, hay algo que hay que programar 00:20:09
luego hay que operar 00:20:11
pues vamos a mostrar 00:20:12
el alumno 00:20:15
que está matriculado en más asignaturas 00:20:16
mostrar el nombre de alumno 00:20:19
que está 00:20:22
matriculado 00:20:29
de más 00:20:31
asignaturas. 00:20:32
Venga, vamos a dejar por ahora 00:20:38
estas cinco opciones. 00:20:39
Vale, pues vuestra 00:20:42
tarea es repasarlo todo, 00:20:43
estudiarlo todo, mirarlo todo. 00:20:45
Y ahora ya hacer 00:20:49
con esta clase alumno 00:20:50
que hemos puesto aquí, 00:20:51
con esta clase alumno, 00:20:53
un programa principal, un mail 00:20:54
que haga esto 00:20:58
si queréis hacer métodos auxiliares 00:20:59
lo que sea, pues ya está 00:21:03
¿vale? 00:21:05
pues podéis 00:21:11
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
7
Fecha:
27 de febrero de 2024 - 18:32
Visibilidad:
Público
Centro:
IES ROSA CHACEL
Duración:
21′ 13″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
103.42 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid