Saltar navegación

Clase 12-04-24 - 2 - 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 13 de abril de 2024 por Raquel G.

5 visualizaciones

Descargar la transcripción

Vale, en función de lo que queramos hacer con él, pues interesarán unas propiedades u otras. Pues bueno, vamos a ponerle también el curso en el que está matriculado como un entero, pues curso 1, 2, 3, 4, 5, el curso que sea. 00:00:00
y vamos a ponerle también 00:00:17
una lista de notas 00:00:20
venga, un listado de notas 00:00:28
las notas sin más, sin poner ni la asignatura 00:00:38
a la que están asociadas ni nada 00:00:40
porque estamos haciendo cosas cortitas 00:00:41
que podamos hacer rápidamente 00:00:43
bueno, pues venga, entonces ahora ya este alumno 00:00:46
se pueden hacer un poco más de cosas con él 00:00:55
tiene su nombre, tiene el curso en el que está matriculado 00:00:57
curso 1, 2, 3, 4, 5 00:01:00
y tiene una lista de notas decimales 00:01:02
que se supone que son de sus asignaturas 00:01:05
la lista que sea 00:01:07
y el año en el que ha nacido 00:01:08
entonces bueno, a esta entidad 00:01:10
al menos habría que ponerle 00:01:13
los get y set de las propiedades 00:01:15
que nos faltan 00:01:20
los get y set de las que nos faltan 00:01:21
que son curso y notas 00:01:23
y ahora se ha quedado aquí 00:01:25
el crear alumno 00:01:27
pues este crear alumno 00:01:29
se ha quedado solamente con dos datos 00:01:31
vamos a crear al alumno 00:01:34
poniéndole también el curso 00:01:37
y las notas en principio 00:01:41
se quedan a null y así irían añadiendo 00:01:43
vamos a añadir al método crear alumno 00:01:46
vamos a añadir también el curso 00:01:49
le añadimos el curso 00:01:51
entonces el constructor famoso privado 00:01:55
también le añadimos el curso 00:01:58
le añadimos el curso al constructor privado 00:02:01
entonces 00:02:06
vale, he añadido al constructor el curso 00:02:08
nada más 00:02:15
entonces a crear alumno 00:02:17
le paso ese tercer parámetro 00:02:18
y cuando llamo aquí al constructor 00:02:21
le paso también el curso 00:02:23
vale, es decir, he modificado el alumno 00:02:26
para que refleje dos propiedades más 00:02:29
el curso en el que está 00:02:31
y un listado de notas decimales 00:02:34
vale 00:02:35
entonces, ahora 00:02:37
la aplicación va a trabajar 00:02:39
con alumnos, vale, va a trabajar 00:02:44
con alumnos, entonces el 00:02:46
dato que identifica unívocamente 00:02:48
a los alumnos 00:02:50
y por el que se va 00:02:51
a operar, resulta que es 00:02:54
el NIF 00:02:56
y el NIF 00:02:58
no está aquí dentro 00:03:00
pero vamos a optar 00:03:01
por guardar nuestro listado de alumnos 00:03:04
entonces en una estructura de qué tipo 00:03:08
en una estructura map 00:03:10
que cada par sea nif del alumno 00:03:12
objeto alumno con los datos 00:03:14
nif del alumno, objeto alumno con los datos 00:03:16
entonces vamos a hacernos 00:03:18
una clase 00:03:20
que es la que tenga los datos 00:03:22
y tenga la operativa sobre los datos 00:03:24
entonces por ejemplo 00:03:25
vamos a hacernos aquí un paquete 00:03:28
un paquete de datos, le voy a llamar 00:03:30
bueno, no es un nombre que me guste mucho 00:03:35
porque es muy genérico, pero bueno 00:03:36
datos 00:03:38
y vamos a hacer aquí una clase 00:03:39
datos 00:03:42
que va a tener 00:03:48
los datos con los que trabajamos 00:03:50
que en nuestro caso es el conjunto de alumnos 00:03:52
y luego los métodos 00:03:55
que vamos a hacer con esos alumnos 00:03:57
vamos a hacer esta estructura 00:03:59
bueno, pues hemos dicho 00:04:00
si la clave primaria de mis alumnos 00:04:02
esa propiedad por la que yo voy a operar 00:04:05
va a ser el NIF 00:04:09
y el NIF no está en objeto alumno 00:04:11
aquí es que no tengo alternativa 00:04:13
la estructura de datos que se adecua 00:04:14
es un map 00:04:19
mis datos van a estar en un map 00:04:20
y este map 00:04:24
¿de qué dos tipos será? 00:04:27
Pues si el nif es string, será string y el valor alumno. 00:04:32
La clave será el nif, que es un string, y el valor será el objeto alumno correspondiente. 00:04:37
Vale, aquí están mis alumnos. 00:04:44
Los puedo ya dejar instanciados. 00:04:47
Sí. 00:04:50
Vale. 00:04:52
Para cambiar, vamos a hacer un trimap. 00:04:53
Vamos a hacer un trimap. 00:04:56
Entonces, este map que sea un trimap. 00:04:58
importamos 00:05:00
map, importamos 00:05:13
alumno 00:05:15
e importamos trimap 00:05:16
vale, desde el momento en que 00:05:19
vemos aquí que instanciamos un trimap 00:05:24
ya se nos enciende la primera alerta 00:05:26
que la primera alerta es 00:05:28
uy, ¿qué significa que eso sea un trimap? 00:05:29
significa que las claves 00:05:32
y solo las claves 00:05:34
porque tenemos 00:05:35
las claves por un lado y los valores 00:05:37
por otro y cada clave asociada a un valor 00:05:40
eso está claro, pero las claves están por un lado 00:05:42
los valores por otro, cada clave asociada a un valor 00:05:44
bueno, pues el conjunto 00:05:46
de las claves 00:05:48
ahora ya sabemos que es un triset 00:05:49
sabemos que es un triset 00:05:51
porque en un trimap las claves 00:05:53
se almacenan en un triset, entonces si las claves 00:05:56
van en un triset 00:05:58
para que ese triset pueda funcionar 00:05:59
correctamente tal y como está programado por dentro 00:06:01
ya sabemos que entonces 00:06:04
el tipo al que pertenecen las claves 00:06:05
tiene que ser ordenable, si lo es 00:06:07
ya por sí mismo fenomenal, si no lo es 00:06:10
le tenemos que dar nosotros 00:06:12
una ordenación por encima 00:06:13
nuestras claves que son 00:06:16
string, los string son 00:06:17
ya ordenables por sí mismos, pues sí 00:06:19
tenemos la suerte de que sí, porque los 00:06:21
string implementan 00:06:23
comparable, tienen un compare 00:06:25
tú, ese compare tú en particular es el orden 00:06:27
alfabético, entonces 00:06:29
ya está, no tenemos nada que hacer, ya está todo 00:06:31
fenomenal 00:06:33
con lo cual a partir de aquí 00:06:34
me da igual un trimap 00:06:37
que un hashmap 00:06:39
que me da lo mismo 00:06:41
el uso es igual 00:06:43
ya es satisfecho 00:06:44
las características necesarias 00:06:46
para instanciarlo, ya las tengo 00:06:49
y es que el tipo de las claves 00:06:50
sea ordenable, ya lo tengo, a partir de ahí el uso es el mismo 00:06:53
si esto fuera un hash map 00:06:55
en vez de 00:06:57
un trimap, habría que 00:06:58
satisfacer otros requisitos, que serían 00:07:01
cuáles, que en el tipo 00:07:03
de las claves, al ser un hash set 00:07:06
estuviera el hash code y el equals 00:07:08
en string también está 00:07:10
el hash code y el equals 00:07:12
con lo cual, de poner un trimap 00:07:13
a poner un hashmap, de aquí hacia abajo 00:07:16
ya a partir de ahí 00:07:18
ya es igual, el uso es lo mismo 00:07:20
el put, el get, todo 00:07:22
es lo mismo, ya va a funcionar 00:07:24
por dentro correctamente 00:07:26
¿cuál va a ser? lo que pasa es que 00:07:27
puedo ver diferencias a ojo 00:07:30
cuando ejecute, la única diferencia 00:07:32
que voy a ver es, si recordáis 00:07:34
que los conjuntos triset 00:07:36
cuando iterábamos por ellos 00:07:38
me aparecía todo ordenado 00:07:39
según el criterio de ordenación 00:07:42
entonces si yo hago el método ese famoso 00:07:43
que me devuelve el conjunto de las claves 00:07:46
que era el keyset 00:07:48
e itero por el keyset 00:07:50
va a dar la casualidad 00:07:52
de que me van a aparecer ordenados 00:07:53
alfabéticamente por DNI 00:07:56
va a ocurrir eso 00:07:58
y si yo tengo aquí un hashMap 00:07:59
e itero por las claves, no van a aparecer 00:08:02
ordenadas por orden alfabético, es la única diferencia 00:08:04
pero nada más, todo lo demás va a ser 00:08:06
igual, entonces bueno 00:08:08
pues si resulta que aquí 00:08:10
en lugar de DNI, pues a lo mejor fueran nombres 00:08:12
o fuera algo, y a mí me viene bien 00:08:14
que a la hora de iterar me aparezcan 00:08:16
ordenados alfabéticamente, si me viene bien eso 00:08:18
porque tengo que sacar listados 00:08:20
y no tengo que ordenar porque ya tengo 00:08:22
el orden hecho, pues si me viene bien 00:08:24
que esté ese orden, pues mira, el trimap 00:08:25
comodísimo, porque es que ya en la iteración 00:08:28
me aparecen ordenados 00:08:30
pues entonces no tengo ni que ordenar luego 00:08:31
en este caso son DNIs 00:08:34
pues entre que aparezca ordenado y no 00:08:35
tampoco, pero bueno 00:08:37
Metemos el trimad y ya está 00:08:39
Vale, mis datos van ahí 00:08:41
Y ahora ya, ¿qué ocurre? 00:08:43
Estos datos van a ser los datos 00:08:46
Con los que trabaje 00:08:47
La aplicación 00:08:49
Datos, una única instancia de estos datos 00:08:51
Solo una 00:08:54
Entonces, hombre 00:08:54
Pongámosle el static 00:08:56
¿Vale? 00:08:59
Uf, que 00:09:03
Ya sé que se puede poner así 00:09:03
Pero es que me hace daño en la vista 00:09:07
Ver ese orden 00:09:08
me gusta mucho más este 00:09:09
el modificador de acceso 00:09:10
siempre el primero 00:09:13
no es que sea estricto 00:09:15
pero hombre es lo que se ha hecho toda la vida 00:09:17
y si lo ves cambiado 00:09:19
te da un poco de angustia 00:09:20
modificador de acceso el primero es más habitual 00:09:22
luego ya el si es estático o no 00:09:25
y luego ya el tipo de dato de retorno 00:09:27
si es final o no 00:09:29
pues también después del estático 00:09:31
pero vamos no es que el orden tenga que ser así 00:09:32
venga pues ya está 00:09:35
Y ahora ya, ¿qué queremos hacer con los alumnos? 00:09:37
¿Qué queremos hacer con los alumnos? 00:09:41
Pues uno ya lo decide, pues entonces 00:09:42
Vamos a hacer estos 00:09:44
Métodos de aquí 00:09:46
¿Vale? 00:09:48
Los dejo en blanco para que los hagáis ahora 00:10:04
Rápidamente 00:10:06
Vale, hago insertar para que luego 00:10:07
En el main cuando lo podáis probar 00:10:10
Pues 00:10:12
Entonces este también ya podemos avanzar 00:10:12
Que será estático, claro, y si lo quiero llamar desde fuera 00:10:16
Pues lo hago public 00:10:18
porque si no lo hago public lo voy a poder llamar desde fuera 00:10:20
venga, insertar un objeto 00:10:21
alumno en el map 00:10:24
vale, ahora 00:10:26
¿qué vamos a hacer también? 00:10:28
pues vamos a 00:10:30
ponerle, añadirle 00:10:31
una nota más, por ejemplo 00:10:34
podemos hacer esta 00:10:36
funcionalidad, add nota 00:10:38
entonces al alumno 00:10:47
con el nif correspondiente 00:10:49
que yo le de como 00:10:51
valor de para, le vamos 00:10:53
a añadir esta nota 00:10:55
Esta nota le vamos a añadir 00:10:56
Para que tenga una nota más 00:10:58
Es otra funcionalidad que podemos hacer con los datos 00:11:00
A un alumno con un NIF le añado una nota más a su listado de notas 00:11:03
¿Qué otra funcionalidad puede ser interesante para esta aplicación? 00:11:07
Pues por ejemplo, calcular nota media de un alumno 00:11:13
Está claro 00:11:16
La nota media que la devuelva como valor de retorno 00:11:17
Yo le doy un alumno 00:11:23
Y de ese alumno me devuelve 00:11:27
La nota media que tiene 00:11:35
¿Vale? 00:11:36
Para que no me salga error de compilación 00:11:38
Le voy a poner aquí retuncero 00:11:40
Pero luego ya habrá que poner lo que sea, claro 00:11:41
Y ahora, ¿qué otra cosa 00:11:43
Tenía yo en mente? 00:11:46
Vale 00:11:48
Pues dado un curso 00:11:48
Dado un curso académico 00:12:01
Dado un curso, el 1, el 2, el 3, el 4 00:12:04
Pues la nota media 00:12:06
De ese curso 00:12:08
O sea, de todos los alumnos, de todas sus notas 00:12:09
Nota media del curso 00:12:13
Dando ahora el qué 00:12:27
Dando un curso 00:12:29
Yo doy un curso y la nota media del curso 00:12:29
Y le voy a poner aquí también 00:12:32
Reto un cero 00:12:37
Bueno, pues entonces 00:12:38
Los datos están aquí 00:12:43
Hay una razón por la que hemos elegido que estén aquí los datos 00:12:45
Y esa razón 00:12:48
Nos ha hecho decidir un map 00:12:50
Un trimap, porque nos gustaba el orden de las claves 00:12:52
Y ya está, los datos están ahí 00:12:55
Esos son los datos 00:12:56
y ahora, ¿qué queremos hacer con esos datos? 00:12:57
esto 00:13:00
quiero poder insertar un alumno nuevo 00:13:00
quiero poder añadirle nota a un alumno 00:13:03
y quiero poder sacar las medias 00:13:06
tanto de un alumno como de un curso 00:13:08
eso es lo que por ahora 00:13:10
quiero hacer 00:13:12
¿vale? pues venga 00:13:12
eh, haced estos cuatro métodos 00:13:15
entonces, luego ya habrá un main 00:13:18
que ya llame a esto 00:13:19
¿no? la idea es que luego ya 00:13:21
uno 00:13:23
pues podría probar esto 00:13:24
en un main, llamémosle 2 00:13:28
por ejemplo 00:13:31
en un main 2, pues uno ya 00:13:32
podría probar estos métodos 00:13:35
aquí hombre, lo ideal sería hacer un menú 00:13:37
¿qué desea hacer? insertar alumno, no sé cuándo 00:13:39
no sé qué, pero vamos, dentro de ese menú 00:13:41
pues lo que al final va a acabar haciendo es esto 00:13:43
insertar alumno 00:13:45
añadir nota 00:13:47
al alumno 00:13:53
ahora ya desde el main 00:13:54
uno puede hacer las pruebas de estos métodos 00:13:57
que ha hecho, que son métodos estáticos 00:13:59
puedo hacer las pruebas, o ya hacer 00:14:01
la propia aplicación, con un 00:14:03
menú, etcétera, pero bueno, ahora mismo 00:14:05
nuestro trabajo, ahora mismo 00:14:06
que hagáis 00:14:09
estos cuatro métodos de aquí 00:14:12
el primero es 00:14:15
inmediato, vale 00:14:16
pues venga, esos cuatro 00:14:18
y vamos a completar lo de los turnos 00:14:27
entonces, vale 00:14:31
¿Quién más de los que no están aquí tiene 00:14:53
FOL? Claudia tiene FOL, ¿verdad? 00:14:56
Vale 00:15:02
Vale, Claudia 00:15:02
Que se apellida, que estoy hoy 00:15:05
¿Cómo se apellida Claudia? 00:15:08
Claudia Guerrero, eso 00:15:13
Vale, ¿quién más hemos 00:15:14
Dicho que tenía FOL? 00:15:19
Alejandro García tiene FOL 00:15:20
Claudia Guerrero, vale, Alejandro García 00:15:22
¿Quién más? 00:15:31
David Jiménez también, ¿no? 00:15:35
David Jiménez también 00:15:38
¿De los tuyos esto de atrás? 00:15:39
Edison 00:15:50
Vale, Edison 00:15:50
Claro, como tiene un segundo nombre 00:16:04
que es Edison Patricio, el apellido se me olvida 00:16:06
¿Cuál es el apellido de Edison? 00:16:09
Ya, a ver, esperamos a 00:16:13
Edison 00:16:15
y luego teníamos 00:16:17
A Daniel Gallego, hemos dicho, ¿no? 00:16:19
Porque a Andoni Ferrero no 00:16:20
Ah, también 00:16:21
Bueno, nos hemos pasado casi 00:16:23
Yo creo que Edison es García 00:16:26
Edison García, creo, era lo mismo 00:16:30
Daniel Gallego, Andoni 00:16:32
Pues sí que tenéis fall en este curso 00:16:34
Un montón de gente 00:16:38
Uno, dos, tres, cuatro 00:16:39
Cinco, seis, siete 00:16:42
Ocho, nueve, diez, once 00:16:44
Vale, bueno 00:16:46
Edison 00:16:47
vale, y alumnos entonces que me faltan 00:16:49
son de esta primera fila, estáis todos 00:16:54
colocados 00:16:56
de aquí también 00:16:56
de ahí 00:16:59
voy a pasar lista 00:17:01
y así 00:17:08
ah, perdón, tienes toda la razón 00:17:09
claro, se me ha olvidado 00:17:18
Sí, sí, sí, sí, claro. Insertar alumno, hay que darle el NIF, claro. Sí, sí. Falta un dato, claro. Efectivamente. El NIF y el objeto alumno con los datos. Claro, a ver, es que aquí lo natural sería insertar alumno. Y aquí realmente en un, ah. 00:17:19
Bueno, es que el map ya tiene acceso a él 00:17:37
Porque es una variable estática de la propia clase 00:17:43
Puedes acceder directamente 00:17:45
No hace falta 00:17:47
Este método puede acceder aquí 00:17:48
Sin problema 00:17:50
Vale, entonces 00:17:51
Sigue estando pausado, ¿no? 00:17:53
Eso 00:17:58
Claro, se me había olvidado 00:17:59
A ver, aquí en realidad 00:18:00
Este método 00:18:01
Como este método se supone que es el método 00:18:03
Que va a usar el usuario directamente 00:18:05
esto verdaderamente en condiciones 00:18:07
normales, lo que aquí se pasaría 00:18:09
serían los datos del alumno. Y ya insertar 00:18:11
al alumno lo crearía dentro. O sea, esto realmente 00:18:13
sería mucho mejor. 00:18:15
Si le ponemos string alumno, 00:18:17
el resto de datos del alumno 00:18:20
que son string nombre, 00:18:21
el curso 00:18:26
y el año. Porque las notas 00:18:27
hemos dicho que se le crea como nombre. O sea, 00:18:31
este método estaría mejor. 00:18:33
Y ahora aquí este 00:18:36
que haga lo que sea. Porque 00:18:37
Que el que llama a este método igual no tiene acceso a la clase alumno. 00:18:39
El que llama a este método puede ser una interfaz gráfica que recoge los datos 00:18:43
y llama al método para pasárselos, pero puede no tener ni acceso a la clase alumno. 00:18:46
Entonces, este método está mejor así. 00:18:52
Pasas los datos y este hace dentro. 00:18:55
Entonces, para las cabeceras, para las APIs que hemos llamado, 00:19:04
la clase alumno debería ser transparente. 00:19:07
Es dentro donde ya sí que se usa. 00:19:09
No, porque inicialmente se crean con notas vacías. 00:19:17
Luego ya hay un método de añadir nota para añadirla 00:19:19
Uy, yo no he parado esto 00:19:22
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
5
Fecha:
13 de abril de 2024 - 13:53
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
19′ 25″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
93.14 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid