Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 27-02-24 - 3 - 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, 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
uy
00:13:30
bueno, en este caso
00:13:31
sí lo habíamos ordenado
00:13:39
después de, estaba aquí
00:13:40
sí
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
eh
00:15:44
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