Solución simulacro 230113 parte1 - Contenido educativo - 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:
voy a grabar la clase de corrección del simulacro todo lo que vais a decir será
00:00:01
grabado y por lo tanto me dais consentimiento para que sea grabado vale entonces el enunciado
00:00:07
es sustancialmente hacer un sistema que simula unos móviles empezamos con la aplicación vale
00:00:14
esta parte de aquí entonces una aplicación a ver si puedo ver las dos cosas a la vez
00:00:21
tiene que tener
00:00:33
vamos a ver, un nombre
00:00:36
esto es una aplicación, por lo tanto tendrá un nombre
00:00:38
lo pongo aquí, string
00:00:40
nombre
00:00:42
tendrá
00:00:45
una versión, por ejemplo
00:00:48
un entero
00:00:50
sí, pero asumiendo
00:00:51
que luego después le tendré que sumar
00:00:56
uno o cosas así, a lo mejor le tengo que hacer
00:00:59
operaciones, por lo tanto
00:01:01
a lo mejor me viene bien que sea uno
00:01:03
Si tengo que pillar una versión
00:01:04
Y dar la siguiente
00:01:07
Y es una string, la tengo que pillar
00:01:08
Y transformarla en un entero
00:01:10
Sumarle uno y volver a ponerla como string
00:01:13
Entonces a lo mejor me compensa
00:01:15
Que sea un número, ¿vale?
00:01:17
Pero, lo que sea
00:01:18
No es que no se pueda hacer
00:01:19
Con
00:01:22
Si, si sea un string
00:01:22
Y un tamaño
00:01:26
Tamaño, int, size
00:01:27
¿Vale?
00:01:30
hago en inglés
00:01:34
así me quito problemas de acentos
00:01:38
y cosas por el estilo
00:01:41
vale, además
00:01:42
tiene un método ejecutar
00:01:43
vale, antes voy a hacer
00:01:47
un constructor, vale
00:01:48
public
00:01:50
app de
00:01:51
string
00:01:54
name
00:01:55
int version
00:01:57
int
00:02:00
size
00:02:02
this.name
00:02:03
es igual a name
00:02:10
this.version
00:02:11
es igual a version
00:02:14
this.size
00:02:16
es igual a size
00:02:19
vale
00:02:21
otra cosa es que
00:02:24
no quiero que desde fuera
00:02:26
mi aplicación sea modificable
00:02:28
al menos no
00:02:30
no el nombre
00:02:32
versión de tamaño
00:02:35
podría ser
00:02:38
Asumiendo que nosotros modificaremos en el futuro solo la versión
00:02:39
Pues casi esto lo podría dejar private también
00:02:45
Pero lo dejo así por posibles cambios
00:02:50
Podría ponerlos privados y luego ponerle aquí un setting get
00:02:53
Pero por ahora lo dejo lo más sencillo posible
00:02:58
Seguramente no quiero que la gente me cambie el nombre
00:03:01
Si cambia el nombre cambia la aplicación
00:03:04
Que es una aplicación nueva
00:03:06
Y ahora hay un método para ejecutarlo, entonces hay el public void execute, aquí sería ejecutar, no se ve nada, y lo único que tiene que hacer, cuidado aquí no devuelve una string sino escribe por pantalla, por lo tanto si eso,
00:03:07
Y aquí escribo la aplicación
00:03:36
Más this.name
00:03:42
Más se está ejecutando
00:03:47
Esto son lo que hacía falta de la clase app
00:03:55
La clase app es sencilla, es básica
00:04:04
Con esto me permitirá crear aplicaciones en el futuro
00:04:07
Voy, si quiero probarla, la puedo probar
00:04:11
Me puedo hacer aquí un public static void main string args
00:04:15
Y aquí lo que hago es me creo una aplicación
00:04:25
AppX es igual a newApp de aplicación, versión 1, 10 de tamaño
00:04:30
Y luego lo que hago es x.ejecutarch
00:04:43
Entonces lo que me espero lanzando esta clase de aquí
00:04:48
Es que la aplicación, aplicación porque se llama así, se está ejecutando
00:04:54
con eso ya veo que la he podido crear
00:04:59
y que se puede ejecutar
00:05:03
ya está, esto es un
00:05:05
este método
00:05:07
no lo usaré en la vida
00:05:11
es solo un método para ejecutar
00:05:13
para probar esta clase aquí
00:05:16
lo puedo poner hasta en
00:05:18
si quiero lo dejo así
00:05:19
así que tengo
00:05:21
una prueba
00:05:23
un comentario
00:05:24
en cualquier momento si quiero probar
00:05:30
Esta clase concreta, pero una clase tan sencilla
00:05:32
Que tampoco tiene mucho sentido de probar
00:05:34
¿Vale? Vamos a la segunda
00:05:35
Que tiene un poquito más de complejidad
00:05:37
Vamos a
00:05:39
Crear
00:05:41
Esto lo quito
00:05:42
Vamos a crear una nueva clase
00:05:44
Que es la clase App Store
00:05:47
Podría poner un main para probarla
00:05:50
¿Vale? Por ahora no se lo pongo, ya veamos como vamos
00:05:58
¿Vale? Entonces
00:06:00
¿Qué tiene App Store? ¿Vale?
00:06:01
Un array de apps, por lo tanto
00:06:03
app array
00:06:06
de
00:06:10
apps
00:06:12
que ahora tendréis que crear
00:06:14
de alguna forma
00:06:19
y poco más
00:06:20
lo que pone que ahora tengo
00:06:23
que hacer un constructor
00:06:25
esto será privado
00:06:26
hago un constructor
00:06:29
public
00:06:31
app store
00:06:33
lo que debería hacer
00:06:35
este app store es recibir un string
00:06:40
string
00:06:42
code
00:06:43
un código que me crea
00:06:45
las aplicaciones, ¿vale?
00:06:48
por ahora no lo voy a hacer, voy a saltarme
00:06:49
esta cosa de aquí
00:06:52
¿vale? para hacer una versión
00:06:53
más sencilla, también porque
00:06:56
esta cosa de aquí, luego simplemente
00:06:57
la sustituiré aquí y me funcionará
00:07:00
¿vale? pero como ahora quiero
00:07:02
ir a hacer cosas un poquito más complejas
00:07:04
o no sé hacerlo esto
00:07:06
pues entonces la única cosa que hago es
00:07:07
me creo un array de
00:07:09
tres
00:07:11
stores
00:07:13
de tres aplicaciones, no lo sé
00:07:16
algo así, vamos a verlo
00:07:17
como me lo hago
00:07:20
por ejemplo digo que apps
00:07:21
es igual a new app
00:07:24
de tres posiciones
00:07:28
por ejemplo
00:07:30
y ahora pongo que apps
00:07:32
de cero es igual
00:07:36
a new app
00:07:38
De
00:07:40
App 1
00:07:41
Coma
00:07:44
1,5
00:07:48
Esto lo copio
00:07:50
Tres veces
00:07:59
Apps 1, apps 2
00:08:00
Esto es app 2, app 3
00:08:05
Versión 4
00:08:08
Versión 7, números a caso
00:08:10
Esto es de 10
00:08:12
Esto es de 3
00:08:14
¿Vale?
00:08:15
Con esto, por ejemplo, ya tengo
00:08:17
un array de tres
00:08:20
en mi App Store hay tres aplicaciones
00:08:23
distintas, ¿vale? que se llaman
00:08:25
App1, App2, App3
00:08:26
con estos números de aquí no conseguiría
00:08:27
rellenar
00:08:31
un móvil
00:08:32
¿vale? entonces no podría hacer
00:08:35
la prueba de si cabe
00:08:37
¿qué pasa si
00:08:39
una cosa llena
00:08:40
intento meter algo más
00:08:42
por lo tanto aumento un poco el tamaño
00:08:44
estas son 15, estas son
00:08:46
14
00:08:48
Así que si intento poner las 3
00:08:51
No debería haber
00:08:55
¿Vale? Porque mi móvil era de 30
00:08:56
Cuando haré la prueba
00:08:58
¿Vale?
00:08:59
Esto es una forma de decir
00:09:02
Oye, mira, necesito un App Store
00:09:04
Para poder trabajar y seguir adelante
00:09:06
Pues lo hago así
00:09:09
Lo hago sin
00:09:10
La parte compleja de
00:09:11
Sacarlo desde un código que me han dado
00:09:14
¿Vale? Ahora después
00:09:16
si queréis lo cambiamos y lo hacemos con el código vale por ahora como tengo prisa y si
00:09:18
si no hago esta parte de aquí no puedo seguir adelante y no quiero liar me con una parte que
00:09:24
es reciente opcional porque si lo hago así ya la tengo pues entonces prefiero hacerlas y fijaos que
00:09:30
aquí pide un cole que luego no usa pasada la mejor pongo aquí un un comentario de el enunciado dice
00:09:36
que pilla un string pero por falta de tiempo no lo estoy haciendo de esta forma no lo sé
00:09:44
voy a la implementación de los métodos que son las cosas un poquito interesante lo tengo
00:09:53
que implementar de cara a no tengo que pensar que esto sea de tres vale pensar que esto esté
00:09:58
llenado mi ejemplo tiene tres aplicaciones cuando luego me mandaran este de aquí tendrá
00:10:04
5, cuando me darán otro tendrá 27
00:10:10
¿Vale? Entonces yo sé simplemente que
00:10:13
Una vez que se ha creado
00:10:15
Esto está rellenado con aplicaciones
00:10:16
¿Cuántas? No lo sé, ¿cuántas aplicaciones
00:10:19
Habrá?
00:10:21
Apps.length
00:10:24
¿Vale?
00:10:25
Por lo tanto voy a utilizar apps.length
00:10:27
Tened en cuenta que también este es un app store
00:10:29
Por como está
00:10:30
Planteado aquí
00:10:32
No
00:10:34
Ni se añaden
00:10:36
ni se quitan aplicaciones en el app store donde se aplica donde se añaden donde se quitan es en
00:10:38
el móvil vale por lo tanto esto es bastante estático es esto es lo cuanto la unión se
00:10:44
cambiará del app store es la versión en un futuro por ahora se queda más sencillo que
00:10:49
un app store real el app store real debería tener también la posibilidad de poder quitar
00:10:58
o meter una nueva aplicación
00:11:02
vale
00:11:03
vamos a ver que me dice
00:11:04
de todos los métodos aquí está
00:11:07
install change version list apps
00:11:09
empiezo por lo fácil
00:11:12
list apps, vale
00:11:13
public
00:11:15
list apps me devuelve un string
00:11:16
string list apps
00:11:20
list apps
00:11:22
sí, sí, ahora supo
00:11:26
lo que tiene que hacer
00:11:27
es crearme un string
00:11:32
Que contenga dentro
00:11:35
Toda la información que está aquí
00:11:36
Versión
00:11:39
Lazy
00:11:40
Que no tengo tiempo
00:11:41
Quiero hacer algo
00:11:45
¿Vale?
00:11:46
Return
00:11:47
Apps
00:11:48
No, arrays
00:11:50
Punto to string
00:11:52
De apps
00:11:56
Ya está
00:11:58
Feo
00:12:01
¿Vale?
00:12:03
Pero funciona
00:12:04
public static void main me voy a crear un objeto app store es igual a new app store de inutil
00:12:04
y luego appStore tengo que dar un nombre, miAppStore, y luego lo que hago, recordadmelo
00:12:41
que miAppStore.listApps.b, vale, como esto debe haber un string, hago un system.out.println
00:12:50
esta cosa que me crea un app store tanto está necesita un string más de string no sirve de
00:13:07
nada puede escribir cualquier cosa aquí dentro hasta dejarlo vacío porque no se usa en el
00:13:23
constructor se usará y es sólo para ver que me crea un objeto que me lo imprime o como me lo
00:13:27
imprime vale aquí lanzó aquí cosas rarísimas esto porque claro él me escribe el contenido y los
00:13:33
contenidos son app y los contenidos de app no me lo está escribiendo bien vale entonces lo
00:13:45
que estoy haciendo aquí no me funciona a menos que no sepa un truquillo que es si me voy a public
00:13:51
string
00:14:01
to string
00:14:03
y le escribo aquí
00:14:05
como se escribe
00:14:09
como se representa
00:14:11
un objeto
00:14:14
mío
00:14:16
esto se enfada porque
00:14:17
entonces string res
00:14:18
es igual a nada
00:14:25
y luego pongo que
00:14:27
el resultado
00:14:29
es el nombre
00:14:31
pongamos entonces this.name
00:14:33
Más
00:14:35
Paréntesis
00:14:38
Más
00:14:39
10.6
00:14:41
Más
00:14:44
Paréntesis
00:14:48
Gigabyte
00:14:52
Paréntesis
00:14:54
Y luego devuelvo esto
00:14:55
Return res
00:15:00
Si me sé esta cosa de aquí
00:15:03
Que es el método toString
00:15:06
El método toString sirve para decir
00:15:07
Si alguien quiere imprimir en pantalla
00:15:10
Una app
00:15:12
¿Cómo se representa una app en formato de string?
00:15:13
Y se lo estoy diciendo aquí
00:15:17
Entonces ahora como magia
00:15:18
Esto funciona
00:15:22
No lo hemos visto este año todavía
00:15:24
Del año pasado a lo mejor se lo sabe
00:15:30
¿Vale?
00:15:33
Que no me sé este truquillo
00:15:34
Pues nada, pasa nada
00:15:37
Esto lo puedo dejar, pero no lo uso
00:15:39
¿Vale? O lo uso directamente
00:15:41
Con tu string, ¿vale? Este método de aquí
00:15:43
Lo puedo crear
00:15:45
¿Vale? Entonces, ¿cómo hago
00:15:46
Sin utilizar esto
00:15:49
Hacer lo mismo?
00:15:51
Pues haré algo
00:15:54
Como esto
00:15:55
String, resultado
00:15:55
Estoy en App Store, ¿eh?
00:15:58
En ListApp
00:16:00
es igual a nada
00:16:02
y luego for
00:16:06
int es igual a cero
00:16:08
y menor de que
00:16:10
apps.length
00:16:11
y más más
00:16:20
o sea por cada aplicación
00:16:25
dentro de
00:16:27
mi array de aplicaciones
00:16:28
lo que voy a hacer es
00:16:30
res es igual a res
00:16:32
más
00:16:35
apps
00:16:36
de i.toString
00:16:39
más
00:16:42
un espacio
00:16:47
y al final
00:16:49
lo que devuelvo
00:16:54
es este res
00:16:55
entonces ahora
00:16:57
me hace esto
00:17:01
que no he hecho el método
00:17:03
upToString aquí
00:17:14
pues quiere decir que esto
00:17:16
lo tengo que hacer allá
00:17:18
ahora el name es privado
00:17:19
entonces tengo que
00:17:23
no lo puedo acceder directamente
00:17:25
tendré que hacer aquí un
00:17:27
public
00:17:29
string
00:17:31
get name
00:17:33
si no, no lo puedo
00:17:35
pillar, que me hará
00:17:37
return name
00:17:39
y ahora
00:17:41
desde aquí, en vez de
00:17:43
llamar el toString su API
00:17:45
lo tengo que hacer explícitamente
00:17:47
get name
00:17:49
Más
00:17:51
Abierta paréntesis
00:17:56
Más
00:17:58
Apps
00:18:00
TI
00:18:01
.sice
00:18:03
Que si puede acceder porque es público
00:18:05
O sea, no es privado
00:18:08
No es público, pero tampoco es privado
00:18:09
Más
00:18:11
Paréntesis
00:18:12
Paz
00:18:15
O sea, lo que antes hacía
00:18:16
Aquí con un metodito
00:18:20
recogido aquí dentro para escribirlo
00:18:21
pues ahora lo tengo que sacar la información
00:18:24
directamente desde
00:18:26
desde
00:18:28
desde
00:18:29
App Store, donde los encuentro
00:18:32
pues por cada i
00:18:34
que vaya de 1 a 2
00:18:36
en este caso, de 0, 1 y 2
00:18:38
en este caso, pues accederé
00:18:40
a esa aplicación, pillaré su nombre
00:18:42
y luego entre paréntesis pongo su tamaño
00:18:44
la versión no porque me lo decía
00:18:46
el enunciado creo
00:18:48
Un error
00:18:49
Get the name
00:18:53
Me da un error
00:18:54
Porque no he guardado el otro
00:18:55
Ahí, ya está
00:18:57
¿Cómo?
00:18:58
Ejecuto
00:19:02
Y aquí tengo mi listado de aplicación
00:19:03
¿Qué quiero hacerlo un poquito más bonito?
00:19:06
Pues al final aquí le pongo un barra n
00:19:09
Este es un carácter especial que me dice
00:19:12
Vete a una nueva línea
00:19:16
Hemos visto uno o dos veces al principio de Qt
00:19:17
Entonces al final me sale
00:19:20
Que
00:19:22
Fijaos que
00:19:25
Aquí me da solo el listado
00:19:31
No me escribe
00:19:33
Las aplicaciones disponibles son
00:19:34
Porque esto lo escribiré en el main
00:19:36
Y aquí en el main puedo poner
00:19:39
Las aplicaciones disponibles son
00:19:40
Y luego pido el listado
00:19:41
¿Dudas?
00:19:44
Y fijaos que
00:19:50
Este método de aquí que he hecho
00:19:51
¿Vale?
00:19:53
Que no es el más elegante de los tres
00:19:55
quizás el más elegante a lo mejor era el primero
00:19:57
que hemos visto, pero independientemente
00:19:59
este de aquí es independiente de lo que haya puesto
00:20:01
aquí, si ahora de repente
00:20:03
pongo una cuarta
00:20:05
aplicación
00:20:06
aquí
00:20:08
él me instará también la cuarta aplicación
00:20:14
encantado de la vida
00:20:21
¿sí?
00:20:22
que es la clave de la idea
00:20:28
de que cuando luego después implementaré
00:20:30
aquí
00:20:32
lo que tengo que implementar con el code
00:20:32
Pues el resto del programa me tiene que seguir funcionando
00:20:35
No puedo basarme
00:20:38
Sobre este 4
00:20:40
O sobre estas aplicaciones aquí
00:20:41
No sé que va a haber ahí dentro
00:20:43
Tiene que ser todo genérico
00:20:44
Me baso sobre
00:20:46
Los atributos de estas aplicaciones
00:20:47
En posición i
00:20:51
Basta uplength
00:20:52
¿Dudas?
00:20:55
¿Dónde?
00:20:58
Name es un método
00:21:10
Que he hecho aquí
00:21:12
Que me devuelve el name
00:21:13
en app, porque puesto que
00:21:15
app es privada
00:21:18
como app es privada no puede acceder
00:21:19
al name directamente
00:21:22
return name
00:21:23
es el get
00:21:26
hasta te lo crea en automático, si tu le das
00:21:28
botón derecho aquí, vas a
00:21:30
refactor
00:21:32
y le pone
00:21:33
no, no era refactor, donde estaba, surfe
00:21:35
y hay aquí, generate getter
00:21:38
and setter, te lo crea en automático
00:21:40
literalmente
00:21:42
Otra cosa es que luego tú le quedas
00:21:44
Algo más complejo
00:21:46
Pero a este nivel es
00:21:48
Nada más que devolver esto
00:21:50
Esto me sirve porque
00:21:53
Esto lo he puesto privado
00:21:54
Si quito privado ni siquiera me sirve esto
00:21:55
Accedo directamente al name
00:21:58
¿Vale?
00:21:59
¿Cómo hago por otro lado del size?
00:22:02
Como el size no lo he puesto privado
00:22:04
Al size accedo directamente allí
00:22:05
Al size
00:22:08
¿Dudas?
00:22:08
Lo he hecho así también para que veáis
00:22:12
Las dos versiones
00:22:14
¿Dudas? ¿Más dudas?
00:22:16
Vale, entonces listapp
00:22:20
Hecho
00:22:21
Vale
00:22:23
Voy a hacer otra
00:22:29
Por ejemplo
00:22:34
Hagamos install
00:22:36
Venga, que aquí tiene
00:22:38
La cosa compleja
00:22:40
A ver, install de un string
00:22:42
Recibe el nombre de una app
00:22:44
Y devuelve
00:22:48
Una copia del objeto app correspondiente
00:22:48
Vale, entonces
00:22:51
public
00:22:52
devuelve una copia
00:22:57
app
00:23:00
vale
00:23:01
como devuelve una copia del objeto app
00:23:03
devuelve un app
00:23:06
si
00:23:07
install
00:23:08
string
00:23:10
name
00:23:13
recibo el name
00:23:16
tengo que devolver un app
00:23:20
vale, ok, perfecto
00:23:21
como lo hago, pues tendré que
00:23:24
Ir a mirar todos mis
00:23:26
Como se llaman
00:23:28
Las posiciones de mi array
00:23:30
Buscar la aplicación que se llama así
00:23:32
Y devolverla
00:23:35
¿Vale? Atención
00:23:36
Entonces, for
00:23:38
Bueno, app
00:23:40
Resultado es igual a null
00:23:41
Si al final no la encuentro
00:23:44
Cosa por estilo, devolveré un null
00:23:48
¿Si? No es un problema mío
00:23:49
Devolver un null, será un problema
00:23:52
de quien llama install
00:23:54
que tendrá que comprobar que el resultado
00:23:56
no sea null
00:23:58
si es null o he pedido una aplicación que no existe
00:23:59
o ha habido un problema
00:24:02
en encontrarla
00:24:04
for
00:24:05
int is igual a 0
00:24:07
y menor que
00:24:10
como no, apps.lang
00:24:12
y más más
00:24:14
voy recorriendo
00:24:19
mi
00:24:23
array
00:24:24
de aplicaciones preguntándome
00:24:26
que
00:24:28
si
00:24:29
name.equals
00:24:30
a mi me gusta
00:24:43
más poner el sujeto
00:24:57
del otro lado, vale, entonces
00:24:59
si la posición de i
00:25:01
de que
00:25:05
de apps
00:25:06
si voy a apps
00:25:08
en la posición i, la posición actual
00:25:11
pillo que
00:25:13
Ah
00:25:15
Si esto no es null
00:25:18
Pero no puede, por como lo he hecho
00:25:20
No puede ser null
00:25:22
AppStore nunca es null
00:25:23
Porque lo relleno con aplicaciones reales
00:25:26
Vale, entonces
00:25:29
Pero para ser completo no está mal
00:25:30
Y
00:25:33
Apps.di
00:25:33
.name
00:25:39
Si su nombre, pero no puede acceder a name
00:25:42
Por lo tanto
00:25:45
GetName
00:25:45
o getName
00:25:48
.equals
00:25:48
el nombre que me han pasado
00:25:53
este de aquí arriba
00:25:57
si esto es verdad
00:25:59
quiere decir que la aplicación
00:26:02
en posición i
00:26:04
es la aplicación que estamos buscando
00:26:05
entonces vosotros
00:26:08
la primera
00:26:12
¿cómo se dice?
00:26:14
Impulso que tenéis
00:26:18
Es decir que el resultado
00:26:20
Es igual a
00:26:22
Abs de i
00:26:24
Como la he encontrado
00:26:25
Esa es la que te devuelvo
00:26:30
Return
00:26:31
3
00:26:34
Si la encuentro te devolveré la que es
00:26:38
Si no te encuentro es null
00:26:43
Este es un error
00:26:44
¿Vale?
00:26:46
Porque esto no devuelve una copia
00:26:49
Esto
00:26:51
Nosotros tenemos nuestro
00:26:52
App Store
00:26:58
Donde dentro hay
00:27:01
Cuatro apps
00:27:05
App 1
00:27:06
App 2
00:27:09
App 3
00:27:12
Y App 4
00:27:14
Lo que hemos hecho es
00:27:16
Me han dicho busca App 2
00:27:19
Con un nombre
00:27:21
Vale, yo me metí aquí dentro y he dicho
00:27:23
¿El nombre de esta aquí es app2?
00:27:25
No, vale
00:27:27
¿El nombre de esta aquí es app2?
00:27:28
Sí, entonces mi res
00:27:30
Que antes valía nul
00:27:33
Ahora le he dicho
00:27:35
Vale, ahora vales
00:27:39
Un puntero a este señor de aquí
00:27:41
Que es un objeto de tipo app
00:27:43
Que tiene dentro app2
00:27:48
Y los tamaños y lo que sea
00:27:50
No, he hecho una copia
00:27:52
He hecho una referencia aquí, que devolveré, y entonces desde donde se ha llamado, que no sé qué, tendré una referencia a esta cosa aquí.
00:27:53
Si ahora cambio algo en esta aplicación, se cambiará también en el App Store, cosa que yo no quiero.
00:28:04
Yo quiero una copia de esto.
00:28:13
esto me servirá porque cuando el App Store
00:28:14
se actualiza
00:28:17
a la versión 2
00:28:19
yo quiero tener una en mi móvil
00:28:21
que es a versión 1
00:28:24
y en el App Store ha salido
00:28:26
la versión 2 y comparar
00:28:28
si tengo que instalarla o no
00:28:30
si en vez le he dado como referencia
00:28:31
en el momento en que cambio la versión
00:28:34
en el App Store, se ha cambiado
00:28:35
también en mi móvil
00:28:38
porque es el mismo objeto
00:28:38
en vez no, yo te he dicho, dame una copia
00:28:41
De ese objeto
00:28:44
Entonces, ¿cómo hago una copia de un objeto?
00:28:44
Esto es el clásico momento trampa malvado del profesor
00:28:49
Esto no lo hemos hecho nunca
00:28:53
El profesor es malvado
00:28:55
En un examen colapso
00:28:57
¿Vale?
00:28:59
En un examen lo hago así
00:29:00
Y no sacaré 10
00:29:01
¿Vale?
00:29:02
Si en vez quiero sacar 10
00:29:05
Pienso a qué quiere decir hacer una copia de un objeto
00:29:07
Dice que res es igual a un nuevo objeto
00:29:10
Estoy creando un objeto nuevo
00:29:23
¿Vale?
00:29:26
Pero tiene que tener los mismos valores del objeto viejo
00:29:28
Entonces, ¿cómo será su nombre?
00:29:31
Porque soy vago
00:29:34
Acabo de comprobar que son iguales
00:29:47
Entonces me da igual utilizar esto que el otro
00:29:50
¿Quiero ser más puntilloso?
00:29:54
Vale, perfecto
00:29:57
El nombre de la app
00:29:57
Y de versión
00:30:00
¿Qué versión tendrá?
00:30:07
La versión de la app
00:30:10
Estoy copiando el objeto
00:30:12
Y de tamaño
00:30:13
El tamaño de la app
00:30:17
Estoy yendo
00:30:21
Aquí
00:30:26
En vez de decirle
00:30:28
Res apunta aquí
00:30:30
Antes de decir que res apunta allí
00:30:31
Me estoy creando un nuevo objeto app
00:30:33
donde copio
00:30:35
el nombre de esta app
00:30:37
copio
00:30:39
la versión de esta app
00:30:41
el tamaño de esta app
00:30:43
y ahora le digo
00:30:45
a res que apunte aquí
00:30:48
no aquí
00:30:49
entonces estoy creando
00:30:51
una copia y pasándome una copia
00:30:55
ahora
00:30:57
si yo cambio algo en este objeto
00:30:59
no estoy afectando esto
00:31:01
Es una copia de ese objeto
00:31:03
Podría hasta un cierto nivel
00:31:06
Si me gustara y me interesa
00:31:10
Irme a app
00:31:12
Y crear aquí un objeto copy
00:31:13
Un método copy, perdón
00:31:16
Podría hacer
00:31:19
Public
00:31:20
App
00:31:21
Porque devuelve un app
00:31:24
Copy
00:31:25
Que lo que hace es
00:31:27
Return
00:31:32
New
00:31:34
app de
00:31:35
this.name
00:31:38
this.version
00:31:40
this.size
00:31:42
esto crea un nuevo
00:31:46
objeto
00:31:51
igual a mi
00:31:51
pero estoy invocando
00:31:54
un nuevo constructor que crea un nuevo objeto
00:31:57
y esto te lo devuelvo
00:31:59
vale, fenomenal, ¿cómo lo usaría
00:32:01
desde aquí?
00:32:03
aquí haría que
00:32:05
res
00:32:06
es igual a
00:32:08
appc.copy
00:32:10
llamar copy
00:32:12
sobre un objeto de tipo app
00:32:23
lo que me hace es
00:32:25
crearme un nuevo
00:32:27
app con las mismas
00:32:29
características
00:32:32
del viejo, pero es uno nuevo
00:32:33
es un objeto nuevo, son dos instancias
00:32:35
distintas, con los mismos valores
00:32:37
son dos instancias distintas
00:32:39
este es uno de los momentos
00:32:41
complejos de este
00:32:49
examen simulacro, ¿vale? La pregunta es, ¿lo hemos hecho alguna vez? No. Copiar no.
00:32:51
La otra pregunta es, ¿con lo que sabéis o deberíais saber de objetos es implausible
00:33:02
que vosotros podáis pensar esto? Si soy de 10 es sí. ¿Sí? ¿No soy de 10? Pues lo
00:33:09
hago como mensaje. ¿Sí? ¿Dudas? Dílas. Párame. Si hay unas cuantas dudas, paradme.
00:33:20
No, no, faltaría más. Ah, vale. Vamos a... Sí. Aquí. Aquí, aquí, aquí. La estoy
00:33:33
creando en algún lado de la memoria, copiando los... Y luego después tengo una variable
00:33:58
res que ahora apuntará a este nuevo objeto y este nuevo res lo devuelvo otra vez a quien ha llamado
00:34:05
este módulo este esta cosa que estará el móvil ahora el móvil tendrá una propia copia de la
00:34:13
del objeto aplicación en su móvil en su memoria del móvil sí que esa aplicación 1 en el móvil sí
00:34:20
apps.di.copy
00:34:46
no, porque ya la copia la has hecho
00:34:54
es que cuando tú llamaras
00:34:55
install, te llegará una cosa
00:34:58
tú dirás
00:35:00
mi array en el móvil
00:35:00
de posición 0 es igual a
00:35:03
install
00:35:06
lo veremos
00:35:06
el objeto app store que yo
00:35:11
tengo en el móvil, punto
00:35:14
install de la aplicación que yo quiero
00:35:15
Vale
00:35:17
Cuatro minutos
00:35:22
Cuatro minutos me da tiempo de hacer
00:35:25
Change version
00:35:27
Ah, sí
00:35:28
Venga, entonces
00:35:29
Hago otro rápidamente
00:35:31
Public
00:35:33
Void
00:35:34
Change
00:35:36
Se llama change version
00:35:39
Version
00:35:43
De
00:35:45
String name
00:35:45
Int ver
00:35:48
Lo que tiene que hacer es cambiarme la versión de este name
00:35:50
¿Vale? Entonces lo mismo que antes
00:35:57
Voy a buscar en todas
00:35:59
Esto lo puedo reutilizar
00:36:01
Voy a buscar en todo mi array
00:36:03
Hasta que encuentre la aplicación correcta
00:36:08
¿Vale?
00:36:13
Hasta que la aplicación actual que estoy comprobando
00:36:15
Sea igual a la aplicación que me han dado
00:36:18
¿Vale?
00:36:19
Y a este punto ¿Qué hago?
00:36:20
Pues cambio su versión
00:36:21
Apps.di.version
00:36:24
Es igual a ver
00:36:29
Quiero hacerlo un poquito más fino
00:36:31
Si
00:36:40
Versión
00:36:42
Si ver es mayor
00:36:44
Que esta cosa de aquí
00:36:46
Entonces la actualizo
00:36:49
Si no, no
00:36:53
Si me intentas actualizar en el App Store
00:36:54
Con una versión más vieja
00:36:58
No te lo cambio
00:37:00
Acabaría
00:37:00
Check update
00:37:14
Pero lo hacemos en otro momento
00:37:16
Dudas
00:37:19
Esto lo paro
00:37:22
- Autor/es:
- Stefano Chiesa
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial
- Visualizaciones:
- 19
- Fecha:
- 16 de enero de 2023 - 11:13
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 37′ 24″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 446.64 MBytes