Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 29-01-24 - 2 - 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:
Bueno, pues ahora este objeto puede llamar a todos los métodos que hemos hecho,
00:00:00
vamos a probar si los métodos que hemos hecho están bien,
00:00:09
vamos a probarlos, ¿no?
00:00:11
Este objeto está ya inicializado con unas cuantas aplicaciones,
00:00:12
tiene ya unas cuantas ahí, estas de aquí.
00:00:16
Vamos a probar alguno de los métodos que hemos hecho, ¿vale?
00:00:20
Entonces, el método de listar, por ejemplo,
00:00:25
vamos a listar las aplicaciones.
00:00:31
A ver si es verdad que este método de listar lo hace bien.
00:00:34
Vale.
00:00:37
Vale, este es el primer método que mostraríamos, ¿verdad?
00:00:51
Perdón, este es el método que vamos a probar.
00:00:55
Este que lista las aplicaciones que tiene el objeto.
00:00:58
Yo he creado este objeto, me tendrá que listar, pues,
00:01:02
Minecraft y su tamaño, que es 10.
00:01:05
Lost of Legends y su tamaño, que es 33.
00:01:06
Vale, todos sabéis lo que significa, yo ni idea.
00:01:09
Esto como, este en particular, este enunciado como lo ha
00:01:11
escrito Estefano, por eso veis que está medio en italiano,
00:01:14
medio raro.
00:01:17
Vale, a ver, ahora hago yo la pregunta.
00:01:21
Voy a ejecutar este mail.
00:01:24
¿Qué me va a salir en pantalla?
00:01:28
Qué sudores, estás menopáusito.
00:01:30
Sí, algo así.
00:01:32
Bueno.
00:01:33
¿Qué me va a salir por pantalla cuando ejecute yo este mail?
00:01:39
No ejecutéis este mail.
00:01:48
Si yo ejecuto este mail, ¿qué me va a salir por pantalla y
00:01:50
por qué?
00:01:56
Nada ya, porque ya lo habéis probado.
00:01:57
Eso sí, eso sí, parece evidente.
00:02:01
Vamos a ver, ese método me devuelve una cadena.
00:02:04
Eso no significa que sea obligatorio que yo asigne el
00:02:08
resultado del método a ningún sitio.
00:02:12
En realidad no es obligatorio.
00:02:13
¿Vale?
00:02:17
No hace falta que yo en realidad lo asigne a ningún sitio.
00:02:18
En realidad no se lo tengo por qué asignar a ningún lado.
00:02:27
Yo lo puedo llamar, pero claro, si no se lo asigno a ningún
00:02:30
sitio, el valor de retorno se va a la basura.
00:02:33
Es un poco estúpido, ¿no?
00:02:38
Un poco estúpido llamar a un método para que me devuelva
00:02:40
algo o valor de retorno y no usar ese valor de retorno.
00:02:43
Es un poco estúpido.
00:02:46
Bueno, pues vamos a usar ese valor de retorno, claro.
00:02:47
Vamos a usarlo en particular para mandárselo a un sistema o
00:02:50
para que lo muestre, para mandárselo.
00:02:54
¿Vale?
00:02:58
Esto ya sí, en el caso de que el método esté bien hecho,
00:03:00
que no lo sabemos, esto ya sí, el valor de retorno del método
00:03:03
me mostrará lo que sea.
00:03:09
Vamos a ejecutarlo a ver si es verdad que está bien hecho.
00:03:11
Pues sí, me está mostrando el nombre de la aplicación,
00:03:17
el tamaño, guión, nombre de la aplicación y tamaño, guión,
00:03:26
nombre de la aplicación y tamaño.
00:03:30
Y así con todas.
00:03:32
Acaba con el guión, claro, acaba con un guión, pues,
00:03:35
porque me va concatenando el nombre de la aplicación,
00:03:38
tamaño y guión.
00:03:40
Bueno, ese es el aspecto que hemos decidido,
00:03:44
pero vamos a edicionar otra cosa.
00:03:45
¿Vale?
00:03:48
Silencio.
00:03:50
Vale, por ejemplo, pues, lo que ha hecho él.
00:03:54
Hombre, ¿y si te las muestra una detrás de otra con un salto de
00:03:57
línea?
00:04:02
Vale, o sea, no os olvidéis de los caracteres de escape que
00:04:03
existen.
00:04:05
No tengo el roto.
00:04:06
No os olvidéis.
00:04:09
¿Vale?
00:04:11
A ver.
00:04:11
Los char, los caracteres son los que conocemos de toda la vida,
00:04:16
¿no?
00:04:24
Esto es un carácter, esto es otro, esto es otro,
00:04:26
esto es otro, ¿vale?
00:04:29
Y esos caracteres me forman las cadenas.
00:04:31
Pero en la tabla ASCII, que es la que recoge,
00:04:33
la tabla ASCII, que es la que recoge todos los caracteres
00:04:37
codificables, todos los caracteres,
00:04:41
también hay caracteres como saltos de línea, tabuladores,
00:04:44
etcétera, que también son codificables y también son
00:04:48
escribibles.
00:04:52
Entonces, esos son los caracteres de escape.
00:04:53
Entonces, un salto de línea.
00:04:55
¿Cómo se escribe un salto de línea?
00:04:56
Así.
00:04:59
Eso es un salto de línea.
00:05:00
¿Cómo se escribe un tabulador?
00:05:01
Así, ¿vale?
00:05:03
Esta es la barrita de escape que se llama.
00:05:05
Entonces, cuando nos encontramos esta barrita,
00:05:07
significa, oye, que lo que viene después no es la T.
00:05:13
Lo que viene después no es la T.
00:05:16
Lo que viene después, interprétalo como carácter de
00:05:18
escape, ¿vale?
00:05:20
Pues la T es el carácter tabulador.
00:05:21
Cuando nos encontramos la barra, oye,
00:05:24
que lo que viene detrás no es el carácter N,
00:05:26
lo que viene detrás es un carácter especial,
00:05:28
el salto de línea, ¿vale?
00:05:30
Familiarizaros con esos.
00:05:32
Con los caracteres que son también imprimibles,
00:05:34
el salto de línea es imprimible, el tabulador es imprimible,
00:05:38
pero que a la hora de escribirlos,
00:05:40
se escriben de esta manera.
00:05:43
Y están en la tabla ASCII todos.
00:05:45
Entonces, ¿que queremos separar en lugar de por guiones,
00:05:47
por saltos de línea, porque lo vamos a ver y nos queda más
00:05:51
bonito?
00:05:53
Bueno, pues cuando hacemos en el método de lista apps la
00:05:54
concatenación, en lugar de concatenar con el guión,
00:05:58
vamos a concatenarlo con este carácter,
00:06:01
que es un carácter de la tabla ASCII, ¿vale?
00:06:03
Aquí podemos poner cualquier cosa de la tabla ASCII,
00:06:07
cualquiera, los caracteres que conocemos y los otros.
00:06:10
Bueno, pues venga, vamos a probar esta versión.
00:06:15
Pues, hala, hombre, así se ve más bonito, ¿vale?
00:06:24
Bueno, esto es para recordar que en la tabla ASCII hay un montón
00:06:29
de caracteres, hay muchísimos y muchos de ellos son
00:06:32
interesantes ahora de formatear salidas.
00:06:35
Entonces, no nos olvidemos de que existen a la hora de darle
00:06:37
formato a las salidas por consola para que queden más
00:06:41
bonitas.
00:06:43
Bueno, pues nuestro método de lista apps,
00:06:47
pues parece que funciona.
00:06:49
Nos da el nombre y el tamaño.
00:06:51
Vale, ¿algún otro método por ahí que probar?
00:06:53
Bueno, podemos probar el de cambiar versión, ¿vale?
00:06:58
A ver, callaos.
00:07:02
Ya venís hablados del recreo.
00:07:05
Vale, venga, pues vamos a probar a cambiar la versión de una y
00:07:08
volver a mostrarlas.
00:07:11
A ver si la, ah, no, es que el de mostrar no muestra la
00:07:13
versión, entonces no vamos a verlo.
00:07:15
Vamos a hacer una versión de lista apps 2 que nos muestra
00:07:18
también la versión para ver si nos cambia,
00:07:26
si el método cambiar versión funciona.
00:07:28
Vamos a copiar y pegar este y vamos a hacer una versión 2 de
00:07:32
lista apps.
00:07:39
Los guiones es que son tan feos en Java,
00:07:43
se usan tan poco que lo quito.
00:07:47
Lista apps 2.
00:07:48
Y vamos a concatenar con el lugar, con el tamaño y con la
00:07:50
versión, ¿vale?
00:07:55
O sea, me he limitado a hacer otra versión del listado de
00:07:59
aplicaciones, otra versión que me muestra nombre y versión,
00:08:02
en lugar de nombre y tamaño.
00:08:06
Nombre y versión.
00:08:08
Vale, lo vamos a hacer para ver si funciona el método de
00:08:10
cambiar versión.
00:08:13
Vamos a probarlo.
00:08:14
Vamos a la aplicación que se llama Minecraft, esta de aquí,
00:08:16
a esta, a esta.
00:08:24
Vamos a cambiar la versión.
00:08:33
Tenía la 1, tenía la 1.
00:08:35
Vamos a ponerle la versión 2.
00:08:37
Y ahora vamos a volver a listarlas.
00:08:40
Vamos a volver a listarlas, pero con la versión 2 del método
00:08:45
para que me liste las versiones, a ver si es verdad que ha
00:08:49
cambiado.
00:08:51
Pues, venga.
00:08:54
Estamos usando el main, ups, estamos usando el main para
00:08:56
hacer pruebas.
00:08:59
Este no es el main de nuestra aplicación.
00:09:00
Es un main para hacer pruebas de los métodos que estamos
00:09:02
haciendo.
00:09:04
Pues, venga, vamos a ver si el método cambiar versión lo hemos
00:09:05
hecho bien o no.
00:09:09
Entonces, volvemos a ejecutar esto.
00:09:12
Y inicialmente el Minecraft tenía la 1.
00:09:16
Y después de llamar a versión, efectivamente,
00:09:21
al cambiar versión, lo ha cambiado a la 2.
00:09:23
Entonces, parece que ese método también está funcionando,
00:09:26
el de cambiar versión.
00:09:28
Una única prueba, no es que sea un conjunto de pruebas muy
00:09:30
grande, pero, bueno, son métodos pequeñitos.
00:09:33
De la fase de pruebas, ¿habéis visto ya cosas en entornos de
00:09:40
desarrollo?
00:09:42
No.
00:09:45
Creación de casos de prueba, métodos de caja blanca,
00:09:47
caja negra y Java Unit.
00:09:50
¿No suenan las palabras que os digo?
00:09:52
PÚBLICO 1. Sí, sí, pero las ha mencionado ya.
00:09:53
PÚBLICO 2. Vale.
00:09:56
Bueno, que con 2 horas tampoco necesito tiempo, mucho más.
00:09:58
Vale.
00:10:03
A ver, pues, ya está, ¿qué más métodos podemos probar?
00:10:05
Ya que tenemos aquí el main, ¿algún otro método?
00:10:08
Cambiar versión, incorporar aplicación.
00:10:12
Vamos a incorporarle una aplicación y luego la listamos
00:10:15
otra vez.
00:10:18
A ver si incorporar aplicación está bien hecho.
00:10:19
Pues, venga, vámonos al main.
00:10:21
Vamos a incorporar al almacén una aplicación que voy a crear
00:10:23
aquí mismo.
00:10:31
Una aplicación que se llame otra, que sea la versión 4 y que
00:10:33
ocupe 80 gigas.
00:10:40
¿Vale?
00:10:43
Porque al método incorporar aplicación,
00:10:45
hay que pasarle un objeto aplicación.
00:10:48
Eso es lo que hay que pasar en un objeto aplicación.
00:10:50
Vale, pues, nada, ahí lo creo.
00:10:52
Lo creo y en el momento de crearlo, pa, se lo paso.
00:10:55
Lo creo y se lo paso.
00:10:59
Y ahora voy a volver a listar a ver si está,
00:11:01
a ver si lo ha incorporado.
00:11:02
Pues, venga, vamos a listar las aplicaciones,
00:11:06
a ver si lo ha incorporado.
00:11:11
A ver si aquí no peta o qué ocurre.
00:11:14
Pues, venga, petar no ha petado y no la ha incorporado, ¿verdad?
00:11:19
La nueva aplicación, incorporar a App Store.
00:11:29
Ah, no, soy idiota, que no le metí en un, ahí, vale.
00:11:31
No lo he mostrado.
00:11:37
No sé si lo ha incorporado o no, porque no lo he mostrado.
00:11:38
Vamos a ver ahora si lo ha incorporado.
00:11:41
Sí, parece que sí.
00:11:45
Este es el primer listado.
00:11:47
Este es el segundo después de cambiar la versión.
00:11:52
Y este es el tercero después de incorporar la nueva
00:11:55
aplicación.
00:11:58
Luego, vale, lo que hemos hecho hasta ahora de esta clase,
00:12:02
los métodos que hemos hecho, parece que están bien hechos,
00:12:06
parece que están bien hechos.
00:12:09
Ala, venga, pues, vamos a seguir con más métodos.
00:12:12
Tenemos ya cambiar versión, listar aplicaciones y este.
00:12:17
Dime.
00:12:22
El que has llamado es el de añadir o el de instalar.
00:12:23
No, incorporar, este.
00:12:28
Sí, pero incorporar era el de.
00:12:30
Incorporar era el que metía una nueva aplicación al almacén.
00:12:32
Incorporar era este.
00:12:36
Este, ay.
00:12:39
Incorporar una aplicación nueva, la metí en el almacén extendiendo
00:12:41
la RAI y todo eso.
00:12:45
Es que instar, este no lo tiene, ¿no?
00:12:52
Instar lo tenía.
00:12:53
Ah, sí, perdón.
00:12:54
Sí, instar, lo que hacía era devolver una copia.
00:12:56
Este no lo he probado porque devolver esa copia ahora mismo
00:13:00
no tenemos como.
00:13:02
O sea, este método, cuando lo has llamado, te da.
00:13:11
No me lo deja, no me deja.
00:13:13
Que no te deja llamar a este método.
00:13:21
Porque estás en un main de otra clase.
00:13:24
Claro, es que entonces, si quieres llamarlo desde un main
00:13:26
de otra clase, tienes que ponerle público.
00:13:30
Claro.
00:13:34
Claro.
00:13:36
Este es que, este lo habíamos puesto aquí.
00:13:37
Lo habíamos puesto aquí porque lo habíamos puesto solo como
00:13:39
método auxiliar para usarlo desde el constructor, ¿verdad?
00:13:41
Para usarlo desde el constructor e incorporar la aplicación.
00:13:50
Pero luego dijimos, a ver, el constructor parte directamente
00:13:54
de una RAI vacío.
00:13:59
Entonces, ¿para qué vamos a usar el método de incorporar sobre
00:13:59
lo que hay si ya sabemos que la RAI está vacío?
00:14:02
Entonces, aquí ya hicimos una versión ya no usando ese método.
00:14:05
Por eso tú lo tenías comentado, ¿vale?
00:14:10
Pero era privado por eso, porque la idea no era usarlo desde
00:14:12
fuera, no era usarlo desde fuera,
00:14:16
sino usarlo desde este constructor simplemente, ¿vale?
00:14:17
Pero, bueno, lo hemos probado ahí.
00:14:21
Vale, pues, a ver, ya está, más métodos.
00:14:24
Ya solo nos falta uno de esta clase.
00:14:28
Que este es un poco más raro.
00:14:31
Vale, le pasamos una aplicación.
00:14:36
Un objeto aplicación, le pasamos un objeto aplicación.
00:14:39
Y te tiene que devolver otro objeto, otro objeto.
00:14:42
Vale, el objeto puede ser o null, ¿en qué caso?
00:14:48
Te devolverá un objeto null si el objeto aplicación que le hemos
00:14:51
pasado es de la misma versión que el que hay en el almacén para
00:14:55
ese mismo nombre.
00:14:59
Es decir, le pasamos la aplicación WhatsApp versión 3,
00:15:01
el objeto que tiene WhatsApp versión 3.
00:15:05
Él mira en el almacén y te dice, a ver,
00:15:07
en el almacén, ¿la aplicación WhatsApp tiene también la
00:15:10
versión 3 o tiene otra superior?
00:15:13
Tiene otra actualizada, tiene otra superior.
00:15:17
Si tiene también la versión 3, entonces se supone que no hay
00:15:19
nada que devolver y te devuelve null.
00:15:22
Pero si la que hay en el almacén con ese mismo nombre tiene una
00:15:25
versión superior a la que le hemos pasado,
00:15:28
entonces te devuelve una nueva copia,
00:15:31
una nueva copia de esa versión del almacén que es más null.
00:15:33
Te devuelve una nueva copia.
00:15:37
Entonces, esto en realidad no está muy bien expresado.
00:15:41
Esto se entendería mejor este método o una copia del objeto
00:15:50
del almacén, que si no, no se entiende bien.
00:15:54
Entonces, la idea es esa.
00:16:05
La idea es, tú tienes tu almacén con las aplicaciones ahí
00:16:06
estáticas.
00:16:09
A este método le pasas un objeto aplicación.
00:16:11
Tienes que buscar cuál del almacén se llama igual,
00:16:13
cuál se llama igual, cuál se llama igual.
00:16:16
Si encuentras uno del almacén que se llama igual,
00:16:19
pero la versión es la misma, se sobreentiende que el método en
00:16:21
ese caso no tiene que hacer nada y te devuelve null.
00:16:24
Es su forma de expresarlo, no tiene que hacer nada.
00:16:26
Pero si encuentras uno del almacén que se llama igual que
00:16:28
la que le has pasado, pero su versión es más actual,
00:16:31
pues, entonces, te devuelve una nueva copia,
00:16:33
otra copia de la que hay en el almacén,
00:16:36
que tiene esa versión más o menos.
00:16:39
Eso es lo que se supone que hace este método.
00:16:41
Pues, bueno, ya que he entendido, ahora vamos a hacerlo.
00:16:44
Vamos a hacerlo de siempre.
00:16:49
Venga, trata de hacerlo.
00:16:51
Vamos a poner la cabecera para que.
00:16:55
Para ver si podías ponerlo de importar,
00:16:58
porque no sé si lo tengo completo.
00:17:00
Bueno, este era simplemente lo de siempre.
00:17:04
El array store, ampliarlo en una posición, copiar y pegar.
00:17:07
Para meter una aplicación más, si es que hace falta usar ese
00:17:10
método, si es que hace falta.
00:17:13
Para tenerlo ahí, por si hace falta meter una aplicación
00:17:16
nueva en el almacén.
00:17:18
Aunque se supone el funcionamiento global de esta
00:17:19
aplicación es que tú creas el almacén con el constructor y ya
00:17:21
no lo vuelves a tocar.
00:17:24
Se supone que es el uso, no lo vuelves a tocar.
00:17:25
Entonces, este método no se usaría.
00:17:27
Ahora, de todas formas, si te sigue no funcionando lo que
00:17:31
sea, ahora lo.
00:17:34
Vale, pues, el método que nos falta, que es el de checkUpdate,
00:17:37
será, ¿no?
00:17:43
Sí.
00:17:44
Pues, este.
00:17:45
Si es un método para usar desde fuera.
00:17:48
A este se le pasa, a este se le pasa un objeto de tipo
00:17:56
aplicación que, por tanto, tendrá su nombre, su versión y
00:18:14
su tamaño.
00:18:18
Porque eso es lo que se le pasa, un objeto de tipo aplicación,
00:18:18
con su nombre, su versión y su tamaño.
00:18:20
¿Qué hace?
00:18:23
Busca en el almacén uno que se llame igual.
00:18:24
Mira a ver si la versión del que ha encontrado que se llama
00:18:28
igual es la misma o es superior.
00:18:30
Asumimos que el caso de que sea inferior no se va a dar.
00:18:34
Que el almacén siempre tiene versiones superiores.
00:18:37
Si encuentra una y la versión es la misma,
00:18:40
como el objeto tiene que volver igual,
00:18:44
porque desde el momento en que ponemos ahí que hay que
00:18:46
devolver una, hay que devolver un objeto, pues,
00:18:48
en ese caso no tendría nada que devolver porque no hay nada que
00:18:50
actualizar.
00:18:52
Devolvería null, que null es un objeto.
00:18:53
Luego es válido como valor de retorno porque es null.
00:18:55
Que la aplicación del almacén es más reciente,
00:18:58
pues, devuelve una copia de esa.
00:19:00
Devuelve una copia de la más reciente.
00:19:02
Y ya está, es lo que va a hacer ese método.
00:19:06
Pues, venga, ¿qué habéis hecho aquí?
00:19:09
Bueno, pues, otra vez lo de siempre.
00:19:17
Parámetro de búsqueda, una aplicación.
00:19:18
Tenemos que encontrar en el array algo.
00:19:21
Pues, de nuevo, recorrer el array.
00:19:24
En este caso, el criterio de búsqueda, ¿cuál va a ser?
00:19:27
Un nombre igual que el nombre de esta.
00:19:31
Pues, tenemos el array a recorrer,
00:19:35
el criterio de búsqueda, que es que el nombre en el array sea
00:19:38
igual que el nombre de aquí.
00:19:42
Y una vez que hemos encontrado ya,
00:19:43
se decide qué se hace, lo de siempre.
00:19:46
Que recorro, ¿cuál es mi criterio de búsqueda?
00:19:48
Y cuando he encontrado, ¿qué hago?
00:19:51
Son las 3 preguntas, ¿no?
00:19:53
Las 3 preguntas de la vida.
00:19:56
¿Qué recorremos?
00:19:58
El array de aplicaciones.
00:19:59
Vale.
00:20:11
¿Y para qué lo recorremos?
00:20:12
Para encontrar una que cumpla una condición.
00:20:14
¿Qué condición?
00:20:19
Pues, la condición es que su nombre,
00:20:22
y su nombre accedo con getNombre,
00:20:26
sea igual que el nombre de la aplicación que me han pasado.
00:20:28
¿Vale?
00:20:34
Segunda pregunta resuelta.
00:20:35
Primera, recorremos el array.
00:20:37
¿Para qué?
00:20:39
Para encontrar una cuyo nombre sea igual que el nombre de la
00:20:39
que me han pasado.
00:20:42
Segunda pregunta resuelta.
00:20:43
Tercera pregunta.
00:20:45
¿Ahora qué hago con ese store de ahí que ya la he encontrado?
00:20:46
¿Qué hago con ese store de ahí?
00:20:49
Pues, mirar a ver si su versión es superior a la del app.
00:20:50
Y si lo es, devuelvo una copia de store de ahí.
00:20:56
¿Vale?
00:20:59
Devuelvo una copia de store de ahí.
00:21:00
Pues, venga, vamos a ver.
00:21:02
Ya la hemos encontrado.
00:21:03
Y ahora, como ya la hemos encontrado, ¿qué hacemos?
00:21:04
Voy a poner esto en una llave, aunque no haría falta,
00:21:08
porque va en un if, porque, bueno,
00:21:11
para que quede como más claro.
00:21:13
Ya la hemos encontrado.
00:21:17
¿Qué hacemos con ella?
00:21:18
Pues, vamos a ver si la versión de la que está en el almacén y
00:21:20
su versión la sacamos con el método get correspondiente,
00:21:25
si su versión es mayor que la versión de la que me acaban de
00:21:32
pasar.
00:21:36
Porque si es mayor que la que me acaban de pasar,
00:21:40
entonces tengo que hacer una copia de esta y devolverla.
00:21:43
Eso es lo que tenemos que hacer.
00:21:49
Si se cumple esta condición, tenemos que hacer una copia de
00:21:51
esta y devolverla.
00:21:53
Bien ahí o bien usando, efectivamente,
00:21:55
ya que lo tenemos que hacer varias veces,
00:21:57
podemos hacer un método auxiliar que lo haga.
00:21:59
Voy a hacerlo ahí para que quede bien claro lo que es hacer una
00:22:01
copia, etcétera.
00:22:05
Vale.
00:22:07
Como es superior la versión de esta que la versión de la que
00:22:09
me han pasado, lo que hay que hacer es esto de aquí.
00:22:13
Hacer copia de esta y devolverla.
00:22:18
Y que nadie me diga returnearla o le parto la cabeza.
00:22:28
Devolverla.
00:22:31
Vale.
00:22:32
Pues, venga, vamos a hacer una copia, ala, pasito a paso,
00:22:38
para tenerlo y tenerlo muy claro.
00:22:42
Pues, es un objeto aplicación.
00:22:44
Vamos a instanciar uno nuevo.
00:22:46
Venga, vamos a instanciar un objeto aplicación.
00:22:48
New aplicación.
00:22:51
Yo la otra vez hice la versión más extendida del mundo,
00:22:52
que es, me hago un objeto aplicación enterito.
00:22:55
Le fijo los valores.
00:22:59
Se los fijo setTamaño, getTamaño,
00:23:13
y ahora e.setVersión, getVersión y la devuelvo.
00:23:29
O sea, me lo he hecho todo.
00:23:41
Entonces, esto sería todo igual que lo hice la otra vez,
00:23:49
paso a paso.
00:23:53
Me hice un objeto nuevo, un new, lo cual significa otro espacio
00:23:55
en memoria, copia, otro espacio.
00:23:59
Porque me hice un new, apuntado por la dirección a.
00:24:00
Le fijo como valores los mismos que tiene el otro,
00:24:03
para que sea una copia.
00:24:08
Y ahora lo devuelvo.
00:24:10
Es lo mismo que hice.
00:24:11
Entonces, hombre, como este ejercicio parece que va de
00:24:13
hacer copias, porque ya es la segunda vez que hacemos lo
00:24:16
mismo, pues, podemos efectivamente plantearnos
00:24:18
empezar a compactar, ¿vale?
00:24:22
Pues, como lo que me habéis enseñado vosotros, por ejemplo.
00:24:23
Entonces, ¿vale?
00:24:29
Podemos plantearnos empezar a compactar.
00:24:31
A ver, uno podría decirme, hombre,
00:24:34
ya que tienes un constructor con parámetros,
00:24:36
pues, en lugar de crear el objeto sin valores y luego setearlo,
00:24:39
perdón, fijarlos o como queráis, pues,
00:24:44
hombre, llama al constructor con parámetros y se los pasas.
00:24:48
Mira, ya con eso parece que estamos acortando un poco.
00:24:51
Pero a ver, es que esta clase la hemos hecho nosotros, ojo.
00:24:55
Pero muchísimas veces las clases que usamos no las hemos hecho
00:24:58
nosotros y tendremos que adaptarnos a los constructores
00:25:00
que hayan.
00:25:05
Y esta modalidad, crear el objeto sin parámetros y luego tener
00:25:06
que llamar al set a 1x1, es un patrón de hacer las cosas muy
00:25:11
habitual, ¿vale?
00:25:17
Es un patrón de hacerlas muy habitual.
00:25:18
Digo, para que os vayan sonando las estructuras básicas que
00:25:19
vais a ir encontrando.
00:25:22
Pero, bueno, como nosotros aquí hemos hecho la clase app y
00:25:23
hemos creado el constructor con 3 parámetros y no solo lo hemos
00:25:27
creado, sino que lo tenemos público,
00:25:31
es decir, lo hemos ofrecido al exterior, pues, venga,
00:25:32
vamos a usarlo.
00:25:35
Uh, no quería abrir esto.
00:25:36
Vamos a usarlo, por ejemplo, y nos hacemos una versión más
00:25:37
comprimida de esta manera, ¿verdad?
00:25:40
Hacemos esto.
00:25:45
Pongo el, no sé cuál iba antes, si tamaño o versión.
00:25:48
Va primero versión y luego tamaño.
00:25:52
Va primero versión y luego tamaño.
00:25:54
¿Vale?
00:26:05
Uy, perdón, que me he pasado con el copia.
00:26:13
Así, vale.
00:26:17
Con lo cual esto ya me lo he quitado de en medio, ¿vale?
00:26:19
Ya un poquito he simplificado la parte de hacer copia y
00:26:25
devolverla.
00:26:28
Un poquito la he simplificado gracias a que tengo el
00:26:29
constructor con parámetros.
00:26:31
Lo he llamado dándole directamente los 3 parámetros
00:26:33
que quiero.
00:26:36
Vale.
00:26:37
De nuevo, hombre, ya que estoy, voy a seguir compactando.
00:26:39
Crea el objeto y devolverlo, pues, ya de paso,
00:26:42
vamos a mandárselo al propio retún.
00:26:45
Al propio retún vamos a mandarle directamente ya el new.
00:26:47
En lugar de esta variable intermedia,
00:26:50
esta variable intermedia que no me vale para nada,
00:26:52
esta variable intermedia, vamos directamente a hacer retún
00:26:54
todo el new.
00:27:00
Pues, otra forma de dejarlo más bonito, ¿no?
00:27:01
Así.
00:27:09
¿Vale?
00:27:15
Vale, pues, hombre, eso que he hecho paso a paso, pues,
00:27:18
directamente ya lo meto en el retún.
00:27:23
Devuélveme un nuevo objeto aplicación cuyos valores sean
00:27:24
los mismos que el del almacén que acabas de encontrar,
00:27:29
que su versión es mayor.
00:27:32
Ya está.
00:27:33
Que, además, ¿uno quiere meter esto en otro método y llamarlo?
00:27:34
Como he dicho vosotros, bueno, pues, ya está.
00:27:38
Lo que pasa es que en este caso ya hay un método que lo hace,
00:27:40
lo que pasa es que hay que implementar una interfaz y por
00:27:42
eso no lo vamos a usar ahora porque no entendemos la
00:27:44
interfaz.
00:27:46
¿Vale?
00:27:50
Lo que nos importa ahora sobre todo es que el new te habilita
00:27:51
un espacio nuevo.
00:27:56
Entonces, es otro objeto distinto.
00:27:58
Que luego yo quiero que los valores sean iguales.
00:28:00
Bueno, pues, voy copiando uno y otro.
00:28:02
Pero serán 2 objetos distintos.
00:28:04
Vale, entonces, los pasos que me he ido cepillando para
00:28:05
compactar con esa línea está claro, ¿no?
00:28:10
¿Está claro?
00:28:14
¿A nadie le angustia?
00:28:15
Bueno.
00:28:21
¿Vale?
00:28:28
Pues, entonces, este método, no miréis, no pongáis la manita
00:28:29
ahí.
00:28:38
Decidme sin poner la manita.
00:28:39
¿Por qué me sigue apareciendo roja la línea de arriba?
00:28:42
¿Por qué me sigue apareciendo rojo ahí?
00:28:46
Porque el compilador le dice, sí, muy bonito,
00:28:48
muy estupendo, pero sigue sin gustarme.
00:28:51
Le falta un valor de 8.
00:28:53
No es de 8.
00:28:55
Le falta.
00:28:57
Este no es suficiente.
00:28:58
No.
00:28:59
No.
00:28:59
No, porque este es de 8.
00:29:00
Sí.
00:29:02
Y no puede mirar fuera del compu.
00:29:03
Efectivamente.
00:29:05
O sea, este método va a funcionar perfectamente si
00:29:06
encuentra la aplicación y si la versión es mayor.
00:29:09
Pero si no se dan ambas cosas, no devuelve nada.
00:29:13
Y el método tiene que devolver algo siempre, sí o sí.
00:29:18
Pase lo que pase.
00:29:21
Encuentre la aplicación o la encuentre.
00:29:22
Sea mayor la versión o no lo sea.
00:29:24
Entonces, este método solo me hace el retún en un caso muy
00:29:26
concreto.
00:29:29
Y es en el caso de que esto sea true y esto sea true.
00:29:30
Pero si algo de esto no es true, entonces,
00:29:33
yo siempre tengo que salir de este método.
00:29:37
Bueno, pues, entonces, aquí, ¿veis por qué no me gusta a mí
00:29:39
poner las llaves y cuando hay solo una línea no pongo llaves?
00:29:42
Porque al final aparece aquí un chorizo muy feo.
00:29:44
¿Vale?
00:29:49
Entonces, cuando aparece un chorizo muy feo,
00:29:50
lo ideal es irlas marcando.
00:29:51
Esta es la llave de lib de no sé qué.
00:29:53
Esta es la llave de lib de no sé cuántos.
00:29:56
Esta es la del for.
00:30:01
Oye, un momento, ya se pierde el formato.
00:30:04
Vale, pues, entonces, cuando el for ha terminado,
00:30:07
si nosotros hemos llegado a este punto, si hemos llegado ahí,
00:30:10
es porque nunca ha salido por aquí.
00:30:13
¿Y eso por qué es?
00:30:16
Porque no encontró la aplicación o en caso de encontrarla,
00:30:17
su versión no era superior.
00:30:20
Entonces, en ambos casos queremos que devuelva null.
00:30:23
Es lo que nos dicen los requisitos.
00:30:25
Pues, aquí es el momento de decirlo.
00:30:27
Aquí es el momento de decirlo.
00:30:30
Y decir, oye, si me has salido del for,
00:30:33
es que por aquí no entraste.
00:30:36
Porque si no habrías terminado el método, obviamente,
00:30:37
lo habrías terminado y no habría más que hacer.
00:30:39
Entonces, en este caso, returno.
00:30:41
Y ahora ya sí que se calla.
00:30:45
¿Vale?
00:30:47
Bueno, pues, ya tenemos, creo, la clase almacén de aplicaciones
00:30:51
con todas las cosas que se pueden hacer con él.
00:30:59
La tenemos, creo, que completa.
00:31:02
Vale, la tenemos creo que completa.
00:31:05
Hay una tercera entidad en mi aplicación, el teléfono.
00:31:08
Tenemos la entidad la aplicación,
00:31:12
la entidad almacén de aplicaciones y la entidad
00:31:14
teléfono.
00:31:17
El que fuera que hizo esto decidió con esas 3,
00:31:18
tenía suficiente.
00:31:20
Y luego ya la clase main que ya hace que exista un teléfono,
00:31:21
que existan aplicaciones, que exista lo que sea.
00:31:25
Eso ya lo hace la clase main.
00:31:28
Vale, pues, nos falta hacer la clase teléfono,
00:31:29
ver qué puede hacer un teléfono con las aplicaciones,
00:31:33
qué puede hacer, meterlo en métodos.
00:31:36
Y luego ya hacer la propia aplicación de gestión.
00:31:39
La aplicación que ya sí que estará instalada y que será la
00:31:42
que se lance, la que haga cosas con el teléfono,
00:31:46
le ponga aplicaciones, se las quite, etcétera.
00:31:48
Venga, vamos a parar unos minutejos.
00:31:51
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 9
- Fecha:
- 29 de enero de 2024 - 17:54
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 31′ 57″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 141.49 MBytes