Examen Feb23 - 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:
segunda parte de la corrección del examen de febrero vale si habláis me
00:00:00
estáis autorizando a que yo grabé esta cosa vale entonces vamos a crear archivo
00:00:06
de documento todo el resto ya lo hemos creado anteriormente archivo de
00:00:12
documento y tiene un main no esto también es un
00:00:19
objeto es un archivo de documento luego podré hacer varios archivos de documentos
00:00:25
si yo quiero, ¿vale?
00:00:29
No, porque hemos dicho que hacemos
00:00:31
estático, por lo tanto existe un solo
00:00:33
archivo de documento general, ¿vale?
00:00:35
Entonces,
00:00:38
vale.
00:00:39
Dice, tendrá una única
00:00:41
propiedad static para guardar los documentos,
00:00:43
¿vale? Entonces, static
00:00:45
documento
00:00:48
array
00:00:52
.com
00:00:54
Se tendrá que llamar de alguna forma,
00:00:56
se llama docs.
00:01:01
Vale, esto será donde pongo todos los documentos que yo creo
00:01:03
Es estático, entonces no habrá objetos archivo de documentos
00:01:07
Utilizaré directamente archivo de documentos
00:01:11
Nunca haré new
00:01:14
Archivo de documentos x es igual a new archivo de documentos
00:01:17
Eso no se hace
00:01:21
Vale
00:01:21
Porque es estático, me pide que sea estático
00:01:23
Entonces, a partir de aquí
00:01:27
Pues vamos a rellenar documentos
00:01:29
¿Vale?
00:01:32
Esto lo pongo privado
00:01:33
Así, desde fuera
00:01:35
No acceden a mis documentos
00:01:40
Solo puedes acceder
00:01:41
Con métodos controlados
00:01:43
Y que he hecho yo de esta clase
00:01:45
¿Sí?
00:01:46
Primer método
00:01:48
Rellenamos algo
00:01:49
¿Vale?
00:01:50
Entonces, public
00:01:51
Void
00:01:52
Rellena
00:01:55
Para rellenar
00:01:57
¿Qué necesito?
00:01:59
Ah, no, nada
00:02:01
No necesito nada
00:02:02
Porque rellena lo que me habíamos dicho
00:02:03
Que hace dos cosas
00:02:05
Me pide los datos para un audio
00:02:06
Los datos para un texto
00:02:09
Y añade un audio a un texto
00:02:13
Siempre que se añade un audio
00:02:14
Se añade un texto
00:02:16
Claramente se añade un audio
00:02:16
Es la
00:02:18
¿Cómo se dice?
00:02:19
Es la transcripción
00:02:22
Muy bien
00:02:24
Y si se añade un texto es leído
00:02:25
Para los no vivientes
00:02:27
¿Vale?
00:02:29
Vamos a ver
00:02:30
Que hacemos
00:02:33
Entonces
00:02:34
Necesito dos espacios en Docks
00:02:35
Entonces aquí hay dos opciones
00:02:39
O Docks está vacío
00:02:41
O Docks no está vacío
00:02:43
Si Docks está vacío
00:02:45
Lo creo
00:02:48
Si Docks no está vacío
00:02:49
Tendré que pillar Docks
00:02:51
Añadirle dos espacios
00:02:53
Y añadirle las dos cosas
00:02:54
Si lo habéis hecho que al principio
00:02:56
Docs tiene 25 posiciones
00:02:58
Vacías
00:03:00
O sea, null
00:03:02
Y que una vez deberíais haber
00:03:03
Gestionado algo, aparte de gestionar
00:03:06
Todas las null que pueden aparecer
00:03:08
Y luego el concepto es que
00:03:10
Cuando haya metido al menos 25
00:03:12
O 50
00:03:14
O lo que habéis puesto
00:03:16
Documentos, debería haber hecho algo
00:03:17
Para añadir más documentos
00:03:20
Como doblar o hacer algo
00:03:21
Habría que gestionar algo sobre este
00:03:23
Array
00:03:26
¿Vale?
00:03:28
Si
00:03:30
Dox
00:03:30
Es igual a 0
00:03:32
Si quiero ser específico
00:03:34
Esto
00:03:43
Nunca
00:03:45
Nunca, nunca
00:03:49
Esto
00:03:50
Mientras estáis trabajando en esta clase
00:03:52
Si, evitamos problemas
00:04:01
De hecho, el hecho de que me lo haya puesto en azulito
00:04:03
Y que esto sea azulito, me está diciendo que me está refiriendo a eso
00:04:05
¿Vale?
00:04:08
Mientras que no creé aquí dentro
00:04:08
Otro string
00:04:10
Docs
00:04:12
Y entonces ahora me está pillando
00:04:14
Este de aquí
00:04:17
Entonces si este es null
00:04:17
Entonces lo tengo que crear
00:04:22
Y como cada vez que llamo rellena
00:04:24
Pongo dos
00:04:26
Pues es fácil
00:04:27
Docs es igual a
00:04:28
New documentos
00:04:32
De dos
00:04:34
De esta forma he creado un espacio
00:04:36
De dos posiciones
00:04:45
Vale, si no
00:04:46
Pues ahora tengo
00:04:49
Un problemilla, tengo un array
00:04:54
Que técnicamente está lleno
00:04:56
Y necesito dos posiciones más
00:04:58
Entonces, ¿qué hago?
00:05:00
Documento
00:05:05
Aux
00:05:06
Es igual a new
00:05:13
Documento
00:05:14
¿De cuántas posiciones?
00:05:16
Docs
00:05:20
Punto length
00:05:21
Más 2
00:05:23
2
00:05:25
Pillo lo que tenía antes
00:05:32
Y le añado 2
00:05:35
¿Vale?
00:05:36
Fenomenal
00:05:39
¿Y luego qué hago?
00:05:39
Por
00:05:44
Intis igual a 0
00:05:45
Y más más
00:05:48
Y menor
00:05:49
Que
00:05:52
A
00:05:53
Docs
00:05:54
Punto leng
00:05:57
Y más más
00:05:59
Copio
00:06:02
Aux
00:06:05
De i
00:06:07
Es igual a dox
00:06:08
De i
00:06:11
Es copiado casi todo en dox
00:06:13
Si
00:06:23
Entonces ahora
00:06:25
Que he hecho la copia
00:06:28
Le digo que dox
00:06:31
Es aux
00:06:33
No, pero no aquí
00:06:35
Y ya está
00:06:38
Ahora tengo el mismo que tenía antes
00:06:46
Con dos espacios vacíos al final
00:06:49
¿Eh?
00:06:51
Miles
00:06:58
No todas
00:06:59
Aceptables
00:07:03
Pero la mayoría
00:07:05
Muchas sí, ¿vale?
00:07:06
Hay objetos para...
00:07:08
Hay funciones de arrays, por ejemplo, para clonar un...
00:07:10
No sé si lo podéis utilizar
00:07:13
No lo sé
00:07:17
Si tenéis otras dudas
00:07:17
Yo lo he hecho de otra forma
00:07:20
Pues me lo preguntáis
00:07:21
¿Cómo lo has hecho?
00:07:23
Que podía crearme un método
00:07:40
Añadir
00:07:42
Fuera que hiciera eso
00:07:43
Lo hemos hecho en ejercicios de añadir un elemento
00:07:45
Y luego aquí crearme un audio
00:07:48
Añadir el audio, crearme un texto
00:07:50
Añadir el texto
00:07:52
Pero a lo mejor copiaba dos veces
00:07:52
Todo el array cada vez que llamaba rellena
00:07:57
Pues no lo sé, ¿vale?
00:08:00
Como también, ¿tiene sentido que me copie todo el archivo
00:08:02
Cada vez que añado algo?
00:08:05
Pues a lo mejor no
00:08:07
A lo mejor sería mejor decir
00:08:08
Pongo 20 posiciones y cada vez que relleno
00:08:09
Pues duplico, no lo sé
00:08:12
¿Vale?
00:08:14
En mi caso, la ventaja que tengo es que no hay elementos null
00:08:15
Porque
00:08:18
Y añado solo lo que me interesa
00:08:20
Claramente pierdo en performance
00:08:22
Es decir, que cuando haya un millón de documentos
00:08:23
He añadido dos más
00:08:26
Tengo que copiar un millón de documentos
00:08:27
Y lo que hay que añadir es más
00:08:30
En realidad no se copia el objeto, se copia la referencia
00:08:31
Entonces no debería ser tan lento
00:08:34
Tal, tal, tal
00:08:36
¿Vale?
00:08:36
Ok, cuando llego aquí
00:08:38
Tengo que crear los nuevos
00:08:41
Documentos y ponerlos
00:08:43
¿Vale?
00:08:46
Pero cuidado que si estoy aquí
00:08:46
Lo tengo que poner en 0 y 1
00:08:48
Si estoy aquí, o sea, si he pasado por aquí
00:08:51
No lo tengo que poner en 0 y 1
00:08:54
lo tendré que poner en no lo sé casi siempre esto podría solucionar son las
00:08:55
últimas dos posiciones entonces dos puntos lentes de menos 12 puntos
00:09:01
lentes menos dos otra opción es que yo y me lo presten a
00:09:07
aquí
00:09:15
true, me da razón
00:09:16
int i
00:09:22
me lo gestione
00:09:25
desde fuera, vale
00:09:26
si entro aquí, no lo toco
00:09:28
entonces empezaré en 0 y 1
00:09:30
si entro aquí, este
00:09:32
i
00:09:36
lo gestiono
00:09:37
directamente, vale
00:09:41
de esta forma, cuando salgo aquí
00:09:43
i
00:09:45
valdrá la siguiente
00:09:46
posición libre
00:09:49
Si he pasado por aquí, es 0
00:09:50
Si he pasado por aquí
00:09:53
Me habrá llegado hasta docs.length
00:09:55
Docs viejo
00:09:57
¿Vale? El que tenía menos posiciones
00:09:58
Por lo tanto, docs.length es la nueva
00:10:01
Posición libre
00:10:03
¿Sí?
00:10:05
Entonces puedo simplemente aquí decir
00:10:09
Vale, ahora me creo un audio
00:10:11
No, ya se lo he sumado aquí
00:10:13
Ha venido aquí
00:10:16
Esto es falso y por lo tanto ha salido
00:10:19
Ya estoy listo
00:10:21
Creo
00:10:22
¿Qué queréis crear antes? ¿Un audio?
00:10:29
Audio
00:10:33
Entonces
00:10:33
Ahora aquí hablo con el
00:10:34
Usuario
00:10:38
Que me tiene que dar los datos
00:10:40
Por lo tanto necesito unos scanners
00:10:41
Scanner es igual a
00:10:43
New scanner
00:10:45
De systeming
00:10:46
Y me importo este señor
00:10:48
Y ahora le digo
00:10:55
Vale, si esto
00:10:57
Creo un audio
00:10:59
Y le digo
00:11:07
Nivel
00:11:15
De confidencialidad
00:11:21
Y leo su nivel
00:11:24
De confidencialidad
00:11:26
Int, nivel de confidencialidad
00:11:27
Es igual a
00:11:30
Scan.nextint
00:11:32
Si
00:11:34
Luego digo
00:11:36
Dame el contenido
00:11:38
Contenido
00:11:42
Y me leo
00:11:44
Que leo
00:11:48
A ver, aquí es el clásico
00:11:49
Problema de scanner
00:11:54
¿Vale?
00:11:56
Que
00:11:58
En algunos
00:11:58
En algunos
00:12:01
Ejercicios que hemos hecho
00:12:05
Que leemos estas cosas, a lo mejor lo habéis tirado fuera
00:12:10
¿Vale? De los viejos
00:12:12
de cuando utilizamos carnet que luego un rato que no lo utilizamos pero sabéis que si leo un
00:12:14
número y luego hago una scan next line no me funciona porque el intro que he dado aquí me
00:12:19
lo pilla aquí entonces hay dos opciones para esto o me gestionó esto haciendo un next line a vacío
00:12:29
Sabiendo que antes
00:12:38
He hecho un
00:12:40
Un nextint
00:12:43
Esto no hace nada
00:12:44
Y luego leo
00:12:46
La siguiente frase
00:12:47
Y esto me permite describir lo que me da la gana
00:12:49
O lo simplifico y digo
00:12:52
Oye mira, que me quito de líos
00:12:53
Leo solo una palabra
00:12:56
El contenido será una palabra sola
00:12:57
¿Vale?
00:13:00
Esto me da igual, no es parte de este examen
00:13:01
Concretamente
00:13:04
Con que hayáis encontrado una forma de hacerlo
00:13:05
fenomenal, dejámoslo
00:13:08
y finalmente
00:13:10
es un audio
00:13:15
por lo tanto la longitud
00:13:18
o duración
00:13:20
mejor duración
00:13:23
que es también un intro
00:13:27
L
00:13:28
porque en realidad para nosotros es longitud
00:13:34
¿vale?
00:13:37
con esta información ya puedo crear el audio
00:13:38
oye, cuidado, me falta algo, ¿qué me falta?
00:13:41
¿qué me falta
00:13:50
para lanzar
00:13:51
Este señor audio
00:13:53
Un ID
00:13:54
Pregunta de un millón de dólares
00:13:56
Se lo pregunto al usuario
00:14:00
El ID
00:14:02
Podrías no hacerlo, podrías preguntárselo
00:14:03
¿Qué implicaciones tienes
00:14:10
Preguntarla al usuario?
00:14:12
¿Qué sentido tiene
00:14:17
Un identificador que se puede repetir?
00:14:19
Ninguno
00:14:22
Entonces cuidado con lo que hacéis
00:14:22
Si la habéis puesto aquí
00:14:25
Que pedís al usuario
00:14:28
el nombre del fichero
00:14:29
luego tenéis que haber recorrido
00:14:31
todo docs a la búsqueda
00:14:33
de si ese nombre existe ya
00:14:35
y si existe ya decirle
00:14:37
este nombre no es válido
00:14:39
es a largo plazo
00:14:41
la otra opción cual es
00:14:46
que implícitamente con vuestro
00:14:48
poder deductivo
00:14:51
podíais deducir desde
00:14:52
el ejemplo que os he pasado yo
00:14:54
pregunta
00:14:56
Sherlock Holmes
00:15:03
número 1. No está en verde. Esto quiere decir que no lo ha escrito el usuario. Y fijaos,
00:15:05
audio 1, texto 2, audio 3, texto 4. ¿Qué os hace pensar esto? Que hay un numerito que
00:15:16
no va por audio o por texto, sino que va por documento, que me añade detrás un número
00:15:30
único. Y ese número único lo hago con static. ¿Es la única forma de hacerlo? No. Es una
00:15:38
forma de hacerlo. De hecho, porque soy magnánimo, en aquí, Sara, si no me equivoco, va a intentar
00:15:46
leer audio 2. Y no le dice, no tienes acceso a audio 2. Te dice, no existe este documento.
00:15:56
Cosa que es muy fea para un archivo de documentos secretos
00:16:09
Porque cuantas menos informaciones das
00:16:13
Mejor, mírame audio 2
00:16:15
No tienes acceso, no existe
00:16:17
Porque me estás diciendo que no existe este documento
00:16:20
De esa forma, si no me estás contestando eso, sé que existe
00:16:22
Muy malo
00:16:25
Pero independientemente de nuestras tramas conspiratorias
00:16:27
El concepto es que
00:16:30
La idea es que si es un identificador
00:16:32
Tiene que ser un identificador
00:16:38
Entonces lo deberíais
00:16:40
Haber hecho como identificador
00:16:42
Si habéis hecho
00:16:44
Que yo puedo poner tres
00:16:46
Cosas con el mismo nombre
00:16:47
Tenemos un pequeño problema
00:16:49
Vamos a ver
00:16:50
Como lo hacemos
00:16:54
Aquí entonces
00:16:56
Lo que voy a hacer
00:16:57
Yo es como lo había pensado
00:17:00
Acá
00:17:02
Que es
00:17:02
Static
00:17:04
private static
00:17:05
numdoc
00:17:08
igual a cero
00:17:10
tiene un valor numdoc
00:17:13
que es estático, vale por toda la clase
00:17:22
y cada vez que crearé un documento
00:17:25
se lo pego como
00:17:27
nombre
00:17:29
y además
00:17:31
lo sumo uno
00:17:32
vale, entonces cuando he llegado aquí
00:17:35
que tengo toda la información para este audio
00:17:36
me creo un nuevo audio
00:17:38
Entonces audio
00:17:40
Aud es igual a
00:17:42
New audio de
00:17:44
Nombre
00:17:45
Nombre lo llamo audio
00:17:47
Mas
00:17:50
Num, como lo he llamado
00:17:52
Un doc
00:17:54
Un doc
00:17:55
Si
00:17:57
Coma, me lo debería dar ahora
00:18:03
Probablemente al punto de coma final me lo dirá
00:18:06
Luego le tengo que
00:18:11
dar, el siguiente es el nivel
00:18:13
de confidencialidad, NC, lo he leído
00:18:15
luego después el contenido
00:18:17
cont, lo he leído
00:18:19
y luego la longitud, L
00:18:20
punto y coma, y ya está
00:18:22
si no me gusta que ponga
00:18:24
audio 1, texto 2
00:18:29
pues lo que puede hacer
00:18:30
siempre aquí es llamarlo doc
00:18:32
entonces saldrá doc1, doc2, doc3
00:18:33
doc4, son documentos
00:18:36
os acordaos también que el
00:18:38
identificador no necesariamente es una palabra como se llama
00:18:40
Es un identificador interno
00:18:42
Podría ser AXFNP
00:18:44
Lo dejo como out
00:18:47
Porque así cuando me lo escribe
00:18:50
Si puedo le digo
00:18:52
Cuando es un audio me tendrá que escribir
00:18:54
Que lo escucha
00:18:57
Y cuando es un texto
00:18:59
Para ayudarme a mí en el debug
00:19:00
Y luego vuelvo a rehacer todo
00:19:01
Pero para el texto
00:19:06
Pero ahora en vez de crear un audio
00:19:09
Creo un texto
00:19:34
Podría haber sacado esto en un fichero externo
00:19:36
Y haber hecho algo para que me creara esta cosa
00:19:39
Probablemente toda la parte hasta la duración
00:19:44
O hasta el número de páginas es la misma
00:19:47
Entonces podría haber al menos parte de esto sacado
00:19:49
Creo un texto
00:19:53
Nivel de confianza lo pongo en cct
00:19:55
Lo pongo en cct
00:19:58
Lo pongo en
00:20:00
Np
00:20:02
Y luego
00:20:03
Cuando lo creo no es un audio
00:20:07
Si no es un texto
00:20:09
Texto
00:20:10
Tx
00:20:13
Es un nuevo
00:20:14
Texto
00:20:17
Que ponga dentro texto
00:20:18
Que tenga dentro
00:20:20
Más este no
00:20:22
Esto es
00:20:23
Np
00:20:26
Esto es nft
00:20:29
Y esto es content
00:20:31
Lo que he utilizado aquí
00:20:32
No he reutilizado las variables
00:20:33
Porque me daba gana
00:20:38
Lo podría haber reutilizado tranquilamente
00:20:40
Lo que pasa es que
00:20:42
Acordaos que este numdoc tiene que crecer
00:20:44
Numdoc
00:20:46
Más más
00:20:48
Ahora tengo
00:20:49
Perdón
00:21:01
Tengo
00:21:02
He hecho los dos objetos
00:21:04
Y ahora los dos objetos los tengo que poner
00:21:07
En docs
00:21:10
¿Vale?
00:21:12
Entonces en docs
00:21:13
De i
00:21:15
Pondré out
00:21:16
I++
00:21:19
Docs
00:21:21
De i
00:21:23
Pondré xt
00:21:24
No hace falta hacer i++
00:21:26
Porque ya i no la uso más
00:21:33
Porque
00:21:39
¿Te acuerdas que ahí la había
00:21:39
Metida de tal forma
00:21:41
Que cuando salía del primer punto
00:21:44
Y me apuntaba a la siguiente
00:21:45
Posición libre
00:21:48
Por tanto lo uso
00:21:49
Lo he hecho por esa razón
00:21:50
Para que ahora no tenga que ir a buscarme
00:21:53
¿Cuál es la primera libre?
00:21:55
No, sé que la primera es ahí
00:21:56
Y en realidad
00:21:57
Voy a hacer así
00:21:59
No, peligro
00:22:00
Porque Nundog crecerá
00:22:04
Crecerá Nundog
00:22:05
Bueno, entonces dices cuando hay...
00:22:08
Oye, pero estás mezclando ya muchas cosas.
00:22:10
Sí, pero considera que cuando llega aquí, NumDoc ya ha aumentado de dos.
00:22:19
O sea, lo deberías haber hecho esto aquí.
00:22:25
Sí, y cosa por eso.
00:22:29
Pero estás mezclando dos conceptos.
00:22:31
Uno es el identificador de cuántos documentos has creado por ahora
00:22:33
y otro es la posición en libre.
00:22:36
Yo lo dejaría separado.
00:22:40
Tanto, o sea, no lo ganas
00:22:41
Al nivel de, que aquí luego lo tienes que copiar
00:22:44
Igualmente, lo tienes que hacer, por lo tanto
00:22:46
Estás ganando una favor nada
00:22:47
No que esto sea un maravilloso sistema
00:22:49
Para hacer esto, eh
00:22:52
En nuestro examen
00:22:53
Vale, esto era rellena
00:22:55
Cada vez que llamo rellena
00:22:57
Me añade un documento, me pide la información
00:23:01
De un texto, eh, pues sostancialmente
00:23:04
Esto, vale, cuando yo llamo rellena
00:23:06
Aquí se está llamando rellena
00:23:08
Lo que me está haciendo es
00:23:11
Creo dos documentos
00:23:15
Audio 1 y me pide
00:23:17
Las varias cosas, texto 2
00:23:19
Y me pide las varias cosas y aquí ya la he creado
00:23:21
Y la he metido en el documento
00:23:23
Es la primera parte
00:23:24
Podría ya empezar con un
00:23:26
Main para probar rellena
00:23:29
Que sería esta parte aquí del main
00:23:31
¿Vale?
00:23:33
Esto, archivo de documentos punto rellena
00:23:34
Archivo de documentos punto rellena
00:23:36
Cuidado, no estoy haciendo ningún new
00:23:37
Porque es todo staff
00:23:40
Preguntas hasta aquí
00:23:42
Vale
00:23:44
Entonces paso al siguiente
00:23:50
Leer documentos
00:23:56
Lo que me hace es
00:23:57
Recibe un operador y un parámetro
00:23:59
El parámetro es un id
00:24:01
Perdón, recibe dos parámetros
00:24:02
Que son
00:24:05
Operador e id
00:24:07
Entonces leer
00:24:09
Public
00:24:11
Void
00:24:13
leer documento
00:24:15
es void
00:24:18
lo escribe, ¿no?
00:24:19
si es correcto
00:24:23
lo muestra, ¿vale?
00:24:25
leer documento
00:24:27
de
00:24:29
operador
00:24:29
o
00:24:33
string id
00:24:33
¿qué tiene que hacer este método?
00:24:39
pues sustancialmente
00:24:45
buscar un objeto
00:24:47
Vale, un documento
00:24:48
Una vez que haya encontrado este documento
00:24:51
Sobre este documento tengo que hacer
00:24:53
Llamar, su método mostrar
00:24:55
Al que le pasaré
00:24:59
Este señor de aquí
00:25:00
Y que sea él que haga las cosas que quiera
00:25:02
Entonces
00:25:04
Vamos a intentarlo
00:25:08
Busco el documento
00:25:10
Para el documento tengo que buscar la id
00:25:13
Por lo tanto
00:25:14
For
00:25:16
Documento
00:25:19
De
00:25:22
Dos puntos docs
00:25:22
Si
00:25:24
De
00:25:29
Punto
00:25:32
Ide
00:25:33
Punto equals
00:25:35
Ide
00:25:38
Si os confunden
00:25:40
Los ides
00:25:45
Esto lo llamáis
00:25:46
Buscado
00:25:47
Buscado
00:25:49
Me estoy yendo a mirar
00:25:53
Todos los documentos en D
00:25:57
Si encuentro un documento
00:25:58
Cuyo ID
00:26:00
Sea buscado
00:26:01
Sean iguales
00:26:04
Entonces este documento D
00:26:05
Es el que quiero utilizar
00:26:07
Para hacer algo
00:26:10
¿Y qué hago?
00:26:12
D.mostrar
00:26:19
¿De qué?
00:26:21
No
00:26:24
¿Se acuerdan?
00:26:25
Hay que mostrar
00:26:27
Recibía un objeto
00:26:28
Que era
00:26:29
Solo puedo usar la O
00:26:31
No
00:26:37
Fijaos que luego
00:26:37
Él no me mirará si esto es un operador
00:26:41
Si es un operador
00:26:43
Autorizado
00:26:44
Me mirará si este objeto que te ha pasado
00:26:46
Esta instancia que te ha pasado
00:26:49
Implementa
00:26:51
Autorizado
00:26:53
Si implementa autorizado le puedo pedir la autorización
00:26:54
Y puedo ver si lo puedes leer o no
00:26:57
Entonces aquí yo le he puesto operador
00:26:59
En realidad le podría poner
00:27:01
Object y pasar lo que me da la gana
00:27:03
Porque luego aquí
00:27:05
Lo que necesita él es un objeto
00:27:06
¿Sí?
00:27:08
Podría ir aquí a puesto
00:27:13
Object, oper
00:27:14
Y esto me lo, me sigue funcionando
00:27:16
Porque mostrar recibe un objeto
00:27:19
Aquí, objeto cualquiera
00:27:21
¿Sí?
00:27:23
Y aquí, que no sé a quién
00:27:24
En la, no sé si está aquí
00:27:27
Me ha dicho, ah, ma aquí
00:27:28
Tengo que hacer lo que pone
00:27:31
Que dice
00:27:33
Se tratará de
00:27:34
No me acuerdo
00:27:35
Me pregunto, ¿tengo que comprobar
00:27:38
Si este operador lo puede leer?
00:27:41
No
00:27:43
Porque ya lo haces aquí
00:27:44
Ya lo has hecho eso
00:27:47
Si aquí te pones otra vez
00:27:49
A mirar si OPR es
00:27:51
Un autorizado
00:27:53
Y si su autorización
00:27:54
Es igual a la cosa
00:27:57
Estás volviendo a rehacer, mostrar
00:27:58
Que ya existe
00:28:00
Estás duplicando código para nada
00:28:01
¿Me entendéis?
00:28:04
UDAS
00:28:10
Pues si le contestas
00:28:10
Sí, pero no
00:28:13
Sí, lo tienes que hacer
00:28:15
Pero no aquí porque ya lo has hecho
00:28:20
Sí, pero no
00:28:22
Clarísimo
00:28:23
Implementa la interfaz
00:28:24
Clarable
00:28:28
Entonces
00:28:29
¿Qué más?
00:28:32
Y ya está
00:28:33
Se acabó
00:28:35
Vale, esto es feucho
00:28:38
Porque, eh
00:28:41
No te gusta
00:28:42
¿Cómo lo quieres?
00:28:46
Es foricho, para ir por colecciones
00:28:51
Es muy interesante
00:28:53
Ahora, el problema de este foricho
00:28:54
Es que
00:28:56
Cuando yo ya lo he encontrado
00:28:57
Sigo mirando todos los demás
00:29:00
Se utiliza un break
00:29:02
¿Vale? Aquí
00:29:11
Break
00:29:11
Probablemente
00:29:12
No lo hemos visto
00:29:14
¿Vale?
00:29:18
Pero el concepto es que hasta con el boolean no salgo
00:29:19
Porque aquí no hay una condición booleana que estamos comprobando
00:29:22
Entonces me queda aquí dentro
00:29:25
Con un boolean que dice
00:29:26
Cuando lo he encontrado le pongo el boolean a true
00:29:30
Eh, pero el if está dentro del for
00:29:32
A mí no me interesa
00:29:38
Pero entonces ya que tiene que hacer una comparación
00:29:39
Que me la haga
00:29:45
Porque técnicamente entrará en uno solo
00:29:46
Porque si yo he hecho que los IDs son únicos
00:29:49
Si no lo he hecho
00:29:51
Pues tenéis un problema
00:29:55
Desde esto
00:29:55
No
00:29:59
Pero sí
00:30:01
Yo creo que con esto
00:30:03
Funcionaría, vale
00:30:11
Aún así, lo habéis puesto así, vale
00:30:12
Perto un poco de tiempo
00:30:15
Miro más, no
00:30:16
La eficiencia es una tarea
00:30:17
Más bien de segundo
00:30:20
Este año aprendamos a hacer las cosas
00:30:21
Y hacerlas aceptablemente bien
00:30:24
Luego si lo sabéis también optimizar
00:30:27
Era pues mucho mejor
00:30:29
Y lo que me interesa es que lo tengáis en cuenta
00:30:30
Que os deis cuenta
00:30:33
Que esto está, si hay un millón de documentos
00:30:34
Y este es el primero
00:30:37
Al primero ya habría podido dejar
00:30:38
Y en vez hace un millón de if más
00:30:41
Esto a nivel de eficiencia es feo
00:30:43
¿Vale?
00:30:45
¿Cómo lo soluciono?
00:30:47
Pues o no hago el for each
00:30:48
Hago un for normal
00:30:50
Entonces allí sí que tengo la condición
00:30:52
Y puedo utilizar el que cuando he encontrado
00:30:53
Entonces sal
00:30:56
O si no, uso el break aquí
00:30:57
Vale
00:31:00
Esto debería estar suficiente
00:31:04
Listo, vale
00:31:07
Tened en cuenta que esto ya me escribe en pantalla
00:31:09
Entonces si lo he encontrado
00:31:11
Esto ya me escribirá en pantalla
00:31:12
No tienes acceso o si tienes acceso
00:31:14
¿Vale?
00:31:17
Problemillas aquí que puede haber
00:31:18
Esto
00:31:20
Pues es null
00:31:21
Es null explota
00:31:22
Técnicamente si habéis
00:31:26
Puesto private aquí
00:31:36
Entonces nadie puede acceder
00:31:38
Aquí dentro y modificar
00:31:40
Os docs directamente
00:31:42
La única forma actual para
00:31:43
Toquetear docs es
00:31:46
Con el rellena
00:31:48
Y el rellena lo habéis hecho vosotros
00:31:49
Y habéis puesto que no puede ser null
00:31:51
Porque no habéis dejado espacios libres
00:31:54
Pues entonces aquí os podéis
00:31:56
olvidar tranquilamente de nul
00:31:58
ahora si no habéis hecho estas dos
00:32:00
cosas, pues aquí teníais que comprobar
00:32:02
que era nul
00:32:04
¿pasaría algo si hay nul en el propio for?
00:32:05
no, porque tú pides
00:32:09
el nul, lo pones en D
00:32:10
y es una referencia a nul, tranquilamente
00:32:11
y cuando lo usas, que pum, nul pointer exception
00:32:14
vale, en el if, pues se pone antes de
00:32:16
y ya está
00:32:18
vale, aquí alguien me ha preguntado
00:32:19
más si yo he gestionado
00:32:24
todo
00:32:26
Sabiendo perfectamente
00:32:27
Que no hay null
00:32:30
¿Puedo evitar de poner el not null?
00:32:31
El if not null
00:32:34
Si
00:32:35
Pero si lo has hecho bien
00:32:37
Si yo he hecho todo esto bien
00:32:38
Y mira sin ningún null
00:32:41
Y luego aquí no le he puesto private
00:32:42
Pues no lo has gestionado
00:32:44
Yo puedo acceder al doc
00:32:45
Acceder al docs de posición 3
00:32:48
Igual a null
00:32:50
Ya me he cargado
00:32:51
No puede haber null en doc
00:32:53
dudas
00:32:56
vale
00:32:59
no he sido yo
00:33:01
vamos a seguir adelante
00:33:06
tercero
00:33:11
obtener documentos
00:33:14
esto creo que son los de emergencia que hacen práctica con
00:33:15
obtener documentos
00:33:18
entonces los documentos
00:33:24
es decir a un nivel de
00:33:25
confidencialidad y devolverá como valor
00:33:28
de retorno un array con todos los
00:33:30
documentos con nivel de confidencialidad
00:33:32
inferior o igual a este parámetro
00:33:34
Parecido al que hemos visto ahora
00:33:36
Public
00:33:37
Void
00:33:39
Obtener
00:33:41
Documentos
00:33:46
Ah, y pilla
00:33:48
Nivel
00:33:52
Int nivel de confidencialidad
00:33:52
¿Qué tengo que hacer? A ver, no es void
00:33:58
Es documento
00:34:05
Allí
00:34:07
Vale, esta era la parte un poquito compleja de esto
00:34:09
Tengo que devolver una red de documentos
00:34:12
La pregunta es
00:34:15
¿Cómo lo devuelvo esta red de documentos?
00:34:16
Es decir, ¿cuántas posiciones
00:34:18
Tiene que tener este señor?
00:34:21
El número de
00:34:23
El número de documentos
00:34:24
Que tengan NC
00:34:26
Para NC o un menor
00:34:28
Lo sé
00:34:30
No
00:34:32
Entonces aquí tengo dos opciones
00:34:33
O voy buscando de un en uno
00:34:35
Y cada vez que encuentro uno
00:34:38
Lo añado a mi array
00:34:39
Y si mi array está lleno, aumento
00:34:41
Lo copio en uno más grande y aumento uno
00:34:44
Lo copio en uno más grande y aumento uno
00:34:48
O la segunda opción es
00:34:50
Recorro todo docs
00:34:52
Contando cuántos documentos me interesa
00:34:54
Allí me da el número de posiciones
00:34:58
Creo el array con ese número de posiciones
00:35:01
Y vuelvo a recorrerme todo docs
00:35:05
Pillándolos y poniéndolos así
00:35:07
hay una
00:35:10
que igual es peor, la peor de todas
00:35:12
es el mismo tamaño
00:35:14
que la red que vas a recorrer y luego lo acortas
00:35:16
pero claro, igual
00:35:18
si es un millón
00:35:20
no, no, es que
00:35:26
es
00:35:28
un gasto de hoy igual demasiado
00:35:29
no, no
00:35:33
yo creo que es simplemente más
00:35:34
retorcido para tu mente para entender
00:35:36
y de todas formas
00:35:39
por eso digo
00:35:41
gastas, o sea, no le veo una
00:35:43
ventaja directa
00:35:45
a hacerlo, entonces que lo vas añadiendo
00:35:47
de un mismo
00:35:49
no, no, si ventaja no hay, pero es la que se me ocurrió primero
00:35:49
acordaos también
00:35:52
la gestión de null, vale, si vosotros
00:35:56
lo hacéis de tal forma que no puede haber null
00:35:59
en lo que devolvéis fenomenal, si no
00:36:01
cuidado con lo que hacéis, vale
00:36:03
yo lo haré de la forma de leerlo dos veces
00:36:04
¿por qué? porque soy vago
00:36:07
entonces
00:36:09
copio esto
00:36:11
int num es igual a cero
00:36:15
voy a buscar
00:36:22
los documentos y si
00:36:23
el documento actual
00:36:26
punto
00:36:27
nivel
00:36:29
confidencialidad
00:36:32
es menor o igual
00:36:33
a nc
00:36:36
entonces lo junto
00:36:37
num++
00:36:40
Cuando acabo este for
00:36:42
Aquí dentro
00:36:47
En num
00:36:49
Tengo cuantos documentos
00:36:50
Cumplen con esta condición
00:36:53
Por lo tanto me creo
00:36:55
Un documento
00:36:57
Subo
00:36:59
Documento
00:36:59
No se que
00:37:02
Res es igual a
00:37:04
New documento
00:37:06
De num
00:37:08
De ese número de posiciones
00:37:10
Y me vuelvo a hacer
00:37:12
Esta cosa de aquí
00:37:16
Los
00:37:17
Me da igual, mayor o menor
00:37:34
Pero el concepto es
00:37:36
No, a mi me interesa saber
00:37:37
Si te doy nivel 3 y tu me das los documentos
00:37:39
De nivel 3 o menor
00:37:41
3, 2, 1
00:37:43
No
00:37:45
Porque
00:37:47
Por eso me da igual que tu
00:37:50
Lo hayas interpretado de una forma o de otra
00:37:53
Si esto lo has hecho bien, lo que cambia
00:37:54
es que en vez que mayor o igual, has puesto menor o igual
00:37:57
o al revés
00:37:59
no es eso
00:38:00
que te hace perder
00:38:03
ni siquiera 0,5
00:38:04
oye, mira, que esto yo lo había
00:38:07
entendido otra vez, o si tú me dices
00:38:11
no, mira, que yo lo he interpretado de otra forma
00:38:13
y lo he interpretado así
00:38:15
no, no voy a mirar
00:38:16
esto, ¿vale? a lo mejor el concepto
00:38:20
es que como yo lo he interpretado así, aquí
00:38:23
me hace una cosa, que luego a ti te hace otra
00:38:24
¿no? si
00:38:26
El hecho es que yo te he dado un ejemplo
00:38:28
Entonces tú podrías ir a mirar mi ejemplo
00:38:30
Y ver que te estoy poniendo
00:38:33
Nivel 2, 1, 4 y 1
00:38:34
A nivel de confidencialidad
00:38:36
Y que cuando te pido el nivel 3
00:38:38
Te está devolviendo 3
00:38:39
Según el tuyo debería haber devuelto uno solo
00:38:41
El de nivel 4
00:38:44
Según tu definición
00:38:46
Si yo te pido nivel 3
00:38:51
Me das todos los documentos
00:38:52
De nivel 3, 4, 5, 6
00:38:53
Entonces eso
00:38:55
Ah, tú dices que esto no
00:38:59
No
00:39:02
Imagínate que tú has puesto 3
00:39:05
¿Vale?
00:39:08
Si mi documento de concluida ya vale 1
00:39:09
1 es menor o igual que 3
00:39:12
Por lo tanto me lo das
00:39:13
Vale, puedo seguir
00:39:14
Ok
00:39:22
Y ahora que hago
00:39:24
Vuelvo a rehacer esto
00:39:28
Num
00:39:30
Lo devuelvo a 0
00:39:35
Antes de empezar
00:39:37
Y cada vez que encuentro uno
00:39:38
Lo que le digo ahora es
00:39:40
Que en do
00:39:43
No, esto me vale
00:39:44
Que en dox
00:39:45
No, en res
00:39:47
De num
00:39:49
Me pones de
00:39:51
Fijaos que he vuelto
00:39:53
A reacerar cero
00:40:00
Es en num
00:40:02
Por lo tanto la primera vez que pongo aquí
00:40:03
En res de cero ponme el documento que has encontrado
00:40:05
Esto me encontrará
00:40:08
Me entrará aquí exactamente el mismo número de veces
00:40:09
que me ha entrado antes
00:40:12
por lo tanto tengo suficientes
00:40:13
y al final tengo un array
00:40:15
con exactamente esas posiciones
00:40:20
con dentro todos los documentos
00:40:22
que cumplen con esta característica
00:40:24
fijaos
00:40:26
que estos ejercicios de aquí
00:40:33
tampoco son una cosa terrible
00:40:35
este de aquí
00:40:38
tampoco mucho
00:40:43
al fin y al cabo es
00:40:45
pero este muro de texto
00:40:47
es para pedir
00:40:52
de código, ¿no?
00:40:53
esto dices, todo esto
00:40:58
sí, pero es mucho
00:40:59
porque tienes que hablar
00:41:02
con el usuario
00:41:04
eso sí, pero también
00:41:05
a ver, si tú has puesto audio
00:41:18
y texto y te has cargado
00:41:20
que no es un identificador
00:41:22
es un error, sí, porque es parte
00:41:23
del ejercicio, pero
00:41:26
tampoco es un error de, oye, mira
00:41:28
Con eso no pruebas en la vida
00:41:30
O sea, en una empresa sería un error grave
00:41:31
Aquí el examen es sobre otra cosa
00:41:34
¿Vale?
00:41:36
Sí, yo
00:41:41
Falta el último, ¿no?
00:41:41
Documentos, debería funcionar
00:41:51
Eh, nota también
00:41:53
Y yo estoy haciendo todo de...
00:41:55
Porque estoy grabando también
00:41:56
Pero técnicamente vosotros hacéis rellenar
00:41:57
Y probáis 20 veces rellenar
00:42:00
No se hace
00:42:02
Hago todo el examen en los últimos 5 minutos
00:42:04
Intento ver si lo he hecho bien
00:42:07
Porque allí es cuando sacáis un cero
00:42:08
Que no funciona nada
00:42:11
¿Sí?
00:42:13
O sea, esto se os da cuatro métodos
00:42:16
Independientes uno de otro
00:42:19
Además, el primero es para rellenar
00:42:21
Y los otros dependen de rellenar
00:42:23
Porque si no has rellenado, no puedes ni buscar, ni obtener, ni vaciar
00:42:25
Pues entonces, me hago rellenar
00:42:28
Y pruebo rellenar
00:42:30
¿Cómo lo pruebo? Pues lo llamo dos veces
00:42:31
Archivo documentos.rellena
00:42:33
Archivo documentos.rellena
00:42:36
Y luego me hago que me escriba
00:42:37
Lo que hay allí
00:42:39
Cuando he hecho esto allí
00:42:39
Pues me hago leer documento
00:42:44
Y pruebo leer documento
00:42:46
Si
00:42:49
Vale
00:42:49
Ah, tengo que devolverle esta cosa
00:42:52
Horrible que he creado
00:42:57
Return res
00:42:59
Vale
00:43:02
Aquí hay problemas de null
00:43:05
No debería, vale
00:43:08
Pero si lo he hecho bien
00:43:09
L'ultimo
00:43:11
Que es el vaciar documento segreto
00:43:13
Vale, vaciar documento segreto
00:43:18
Public
00:43:22
Voy
00:43:28
Vaciar
00:43:29
Que es un método inútil
00:43:34
Solo para que vosotros lo practiquéis
00:43:37
Pero es
00:43:39
Búscame
00:43:40
El nivel
00:43:41
Los documentos con nivel más alto posible
00:43:42
Con nivel de confidencialidad más alto
00:43:46
¿Vale?
00:43:48
Entonces supongo que sean los que tienen cero
00:43:49
O uno
00:43:52
¿Sí?
00:43:53
De ellos
00:43:54
El primero me lo va a decir
00:43:57
El primero que has encontrado
00:43:59
¿Vale?
00:44:00
Ah, es eso
00:44:01
El primero que
00:44:01
El primer documento con nivel de confidencialidad más alto
00:44:02
Y luego está el ejemplo
00:44:07
Entonces si no lo entendíais
00:44:09
Podíais mirar el ejemplo de que hace
00:44:11
¿Vale?
00:44:12
La idea es que entonces
00:44:13
Esto también está en dos pasos
00:44:14
Primero tengo que saber cuál es el nivel de confidencialidad más alto que tengo
00:44:17
Que no necesariamente es uno
00:44:21
Podría tener solo documentos de nivel 20, 25 y 37
00:44:23
Por lo tanto me tendré que hacer un recorrido de todos los documentos
00:44:28
De todos los archivos buscando cuál es el nivel de documento más alto
00:44:35
El nivel de confidencialidad más bajo, más alto
00:44:41
más el número menor que representa el mayor nivel de confidencialidad.
00:44:44
Cuando tengo eso, vuelvo a empezar desde el principio,
00:44:50
pillo el primero que encuentre con ese nivel y este lo vacío.
00:44:54
Yo hice eso, pero yo había entendido que es el más alto,
00:44:59
si hay más iguales, pues borras todos, pero que te quites el que sea más,
00:45:20
pero como si hubiese varios.
00:45:24
Que podía haber uno o varios, no el primero que te encuentra,
00:45:26
si hay dos unos que todos los de nivel más alto si yo entendí eso pero ordenando lo que traemos
00:45:28
lo me gusta vale como idea como lo ordenamos vale me gusta es una buena solución porque también te
00:45:39
usar el comparto donde hay puesto el comparto donde lo habéis implementado el compare tú
00:45:54
documento vale implements mostrable como comparable vale entonces implementó aquí
00:46:01
Y public int compareto object o.
00:46:13
Justo.
00:46:27
¿No has usado comparable o no sabes que es comparable?
00:46:35
Sí, sí.
00:46:39
Lo puedes ordenar tú por tu cuenta.
00:46:40
Lo ordenas y ya está.
00:46:42
Como sabemos que existe una forma de ordenarlos fácil utilizando una interfaz, es un examen sobre interfaz.
00:46:44
si implementó el compare tú lo que tengo que hacer es devolver a menos 101 dependiendo de
00:46:51
cómo están que nunca me acuerdo como no me acuerdo o tenga acceso al api y lo miro o
00:47:00
si no lo hago de una forma y si luego veo que todo sale al revés por eso lo hago
00:47:10
si lo que tú tienes es menor
00:47:15
si dis es menor
00:47:23
es positivo
00:47:27
es lo raro, es como que es al revés
00:47:28
ahora me lo dices otra vez cuando llegamos
00:47:30
porque tanto se me olvida de aquí
00:47:32
esto tiene también
00:47:33
un pequeño
00:47:37
problemilla
00:47:38
tú los ordenas
00:47:40
vacías el primero
00:47:50
cuidado, vaciar el primero
00:47:52
quiere decir que no lo estás destruyendo
00:47:53
lo estás vaciando
00:47:55
entonces se te queda allí
00:47:56
Y luego lo tienes que volver a ordenar
00:47:58
Porque si no, si llamas otra vez vaciar
00:48:02
Te vuelve a vaciar eso si es el primero
00:48:04
Pero sobre qué lo ordenas
00:48:06
O sea, qué haces tú
00:48:14
Cuando vacías
00:48:16
Para que ese no se te quede primero
00:48:17
Estoy pensando
00:48:20
Porque si era ponerlo nulo era fácil
00:48:37
Pero si no pone nulo
00:48:40
Tienes que tener en cuenta eso
00:48:41
Una opción podría ser
00:48:43
Que tú te quites del medio
00:48:45
O sea, que le des un nivel de confidencialidad
00:48:47
Imposible de dar
00:48:50
Menos uno
00:48:52
Entonces, si es menos uno
00:48:53
Es lo mismo que tu concepto de
00:48:55
Esta vacía
00:48:58
Sí, pero luego lo puedes ignorar
00:49:00
Diciendo si es negativo o cero
00:49:07
Serán los primeros
00:49:10
Que a lo mejor no me gusta mucho
00:49:11
Pero lo que puedes hacer es luego siempre
00:49:13
Ordenar
00:49:16
Porque luego se te quedan allí
00:49:17
molestan y estarán siempre los primeros que vas a mirar lo pensaremos vamos a hacerlas
00:49:20
y simplemente por la curiosidad de utilizar convertir no por otra cuestión a lo mejor
00:49:33
otros métodos serían mejores qué más y dice punto nivel coincidencialidad no estamos comparando esto
00:49:38
Documento lo que estás comparando
00:50:03
Sí
00:50:05
O
00:50:05
Instance
00:50:07
Of
00:50:09
Eh
00:50:09
¿Por qué O?
00:50:17
No sé qué objeto es
00:50:20
Tiene que ser
00:50:21
De mi mismo tipo
00:50:24
Para poderlo comparar
00:50:25
Documento
00:50:26
Documento
00:50:27
Entonces
00:50:28
Return
00:50:34
Is
00:50:42
Punto
00:50:45
Nivel
00:50:46
Confidencial
00:50:47
Menos
00:50:48
Documento
00:50:49
De O
00:50:54
Punto nivel
00:50:55
Confidencialidad
00:50:59
¡Basta!
00:51:00
Eso es lo que me preocupa
00:51:07
Pero
00:51:09
Al ser el número menor es mayor
00:51:09
En confidencialidad
00:51:12
Tiene más confidencialidad
00:51:15
Si lo estás ordenando de mayor confidencialidad
00:51:16
Esa es
00:51:19
Eso es lo que tiene que dar
00:51:22
Menos uno más uno
00:51:24
Si esto tiene nivel uno
00:51:25
Y esto tiene nivel dos
00:51:27
Esto daría positivo
00:51:29
No, daría negativo
00:51:33
Que está mal
00:51:35
Según la definición
00:51:37
Por tanto, aparecería antes
00:51:38
Y está apareciendo antes el 84
00:51:40
Ponemos esto detrás
00:51:42
Ese era el tema que yo me quedé aquí
00:51:44
De rato
00:51:47
De todas formas, esto se hace fácil
00:51:48
Lo ponéis al azar
00:51:50
Miráis como os lo ha ordenado
00:51:52
Y luego cambiáis el orden
00:51:54
Fijaos, esto de los tres if
00:51:55
Si esto, si esto, si esto puede estar bien
00:51:59
Pero
00:52:01
Si tenéis números
00:52:01
Si ordenáis sobre la base de un número
00:52:04
¿Vale? Normalmente
00:52:07
Os compensa hacer
00:52:09
Algún tipo de operación
00:52:11
¿Vale?
00:52:13
Si son string no lo puede hacer
00:52:14
Pero si es un número probablemente
00:52:16
Lo puede hacer ¿Vale? Ya veremos si esto funciona
00:52:19
Tened en cuenta que
00:52:21
También este señor de aquí explota
00:52:22
Porque dice oye mira
00:52:25
Me tienes que dar un return
00:52:26
Y si esto no es verdad
00:52:28
No me estás dando nada
00:52:30
¿Vale?
00:52:31
Entonces
00:52:35
Esto sería un else
00:52:35
Explota
00:52:40
Pero todavía no sabemos explotar
00:52:44
¿Vale?
00:52:49
Sería un throw
00:52:51
Throw
00:52:53
A new
00:52:54
Exception
00:52:56
Algo
00:52:58
El próximo, por eso lo pongo
00:53:04
Algo parecido a esto
00:53:06
Vale, creo una nueva excepción
00:53:07
Lo lanzo
00:53:10
Y entonces explota
00:53:11
¿Vale? Pero bueno
00:53:12
Aquí hagamos
00:53:14
No lo sé
00:53:17
Si no, return 0
00:53:18
Tanto
00:53:22
En mi
00:53:25
En mi contexto
00:53:26
No debería dar problemas
00:53:29
Porque siempre son documentos los que comparo
00:53:30
¿Vale? Pero
00:53:32
Entonces, si yo consigo hacer el compare to
00:53:33
fenomenal me voy a vaciar vale y ahora puedo ordenar mi documento vale como lo
00:53:36
documento como lo rea como lo ordenó a raíz punto sorte de dos balas ordenado
00:53:46
una cosa probablemente porque intentará hacer un acceso a el comparable que hemos
00:53:55
se ha implementado ahora, accede
00:54:09
a algo, si este es null
00:54:11
explota
00:54:13
considera que para ordenarlo
00:54:13
lo que está haciendo es un compare to
00:54:17
entre los varios objetos de la red
00:54:18
por lo tanto, con que uno sea null, explota
00:54:20
claro, esto lo debería poner aquí
00:54:22
si, es not null
00:54:24
no, no, incluso poniéndolo
00:54:26
eso ya no lo sé, depende de que
00:54:29
llama, vale, pero bueno
00:54:32
con esto está ordenado
00:54:33
el array, vale, entonces
00:54:36
Si he ordenado la array
00:54:38
Ahora en primera posición
00:54:39
Encontraré el documento que yo quiero
00:54:41
¿Si?
00:54:44
Entonces
00:54:46
Podría hacer una cosa
00:54:47
Como esta
00:54:50
For int is igual a
00:54:51
0 y menor de
00:54:54
Docs.languette
00:54:55
Punto coma y
00:54:57
Más más
00:54:59
Lo que hago es
00:55:01
Si
00:55:06
Docs
00:55:07
de i.contenido
00:55:09
.equals
00:55:13
Si ya has sido vaciado anteriormente
00:55:15
Siga adelante
00:55:18
Entonces, si not
00:55:21
Si esto no es verdad
00:55:28
Entonces lo vacío
00:55:30
Y si no, lo intento otra vez
00:55:31
Otra vez, otra vez
00:55:37
Además me meto una forma
00:55:38
De salir antes
00:55:41
bolean vaciado
00:55:43
igual a false
00:55:46
mientras que esto sea verdad
00:55:47
y
00:55:50
not vaciado
00:55:51
sigue haciendo
00:55:53
lo que tiene que hacer
00:55:58
cuando lo encuentres
00:55:59
el primero que encuentres puesto que son ordenados
00:56:01
entonces el primero será el primero más
00:56:04
de confidencialidad
00:56:06
más alta y el primero no vacío
00:56:08
que has encontrado
00:56:10
pues entonces vaciado
00:56:11
Saratrue
00:56:13
Así luego salgo
00:56:14
Y también vacío este documento
00:56:16
Entonces
00:56:20
Docs.di
00:56:20
Punto
00:56:22
Contenido
00:56:24
Es igual a nada
00:56:28
Si quiero le quito
00:56:32
El nivel de confidencialidad
00:56:35
Docs.
00:56:37
Punto
00:56:42
Que no puedo
00:56:42
Porque lo he puesto privado
00:56:45
Si no, para leer un documento
00:56:48
Lo acedo, le cambio el nivel de confianza
00:56:50
Y hago lo que me da la gana
00:56:51
¿Vale? No puedo
00:56:53
Sí
00:56:54
No
00:56:58
Probablemente con el break
00:56:59
Podrías utilizarlo también, ¿eh?
00:57:02
Pero
00:57:03
Contenido
00:57:03
Esto me puede servir
00:57:08
De cara a que cuando salgo del for
00:57:12
Sé si se ha hecho el vaciado o no
00:57:14
¿Vale?
00:57:16
Si esto sigue falso
00:57:17
Cuando salgo de aquí
00:57:18
Es que no me lo ha hecho
00:57:19
A lo mejor había un array
00:57:21
De documentos que ya han sido vaciados todos
00:57:24
Y entonces no me pilla ninguno
00:57:28
Y cuando sale aquí
00:57:30
Imaginaos que yo luego quiero hacer un programa
00:57:31
Que dice vacíame el archivo
00:57:33
Y me llame muchas veces vaciado, vaciado, vaciado
00:57:34
Hasta que esto
00:57:37
No se atreve
00:57:38
Por ejemplo
00:57:40
Contenido
00:57:42
Ahora tengo que borrar la longitud
00:57:46
O el
00:57:49
¿Cómo se llama?
00:57:51
El número de páginas dependiendo de que es
00:57:53
Entonces ¿Cómo lo hago eso?
00:57:55
Si
00:58:01
Docs
00:58:02
D
00:58:05
D
00:58:06
Docs D
00:58:07
Instance
00:58:10
Of
00:58:13
Texto
00:58:15
Entonces, esta cosa de aquí, de texto del punto numPag es igual a cero.
00:58:18
Si en vez es un audio, no, porque si luego después creo también vídeo, a ver si no me va.
00:58:42
pero crear un método en documento abstracto
00:58:57
vamos a hacerlo
00:59:20
si esto no me gusta
00:59:34
lo que puedo hacer es
00:59:36
ir al documento y crearme un método
00:59:39
public
00:59:42
y void vaciar
00:59:44
Que lo que hace es vaciarme
00:59:48
La parte que puedo vaciar
00:59:51
Cuidado que ahora estoy en documento
00:59:52
Puedo hasta borrarme el nivel de confidencialidad si quiero
00:59:53
¿Vale?
00:59:56
Entonces
00:59:58
Int
00:59:59
Is.contenido
00:59:59
Es igual a nada
01:00:05
Dis.
01:00:07
Dis.
01:00:08
Nivel de confidencialidad
01:00:12
Hagámoslo
01:00:14
Es igual a
01:00:19
No es verdad
01:00:21
Podría tener cosas más
01:00:29
Que está aquí, pero bueno, lo asumimos
01:00:31
Para hacerlo seguro
01:00:33
Podría ponerle menos uno
01:00:36
Porque lo dice por algún lado
01:00:37
Que el nivel más bajo es uno
01:00:40
Entonces
01:00:42
Hasta cero podría poner aquí
01:00:44
Solo que el problema es que luego cuando los ordeno
01:00:49
Me los pone todos delante
01:00:52
Y entonces cuando hago cualquier cosa sobre esta array
01:00:53
Antes me hace los vacíos
01:00:55
Que no me interesa
01:00:57
Lo hacemos así
01:00:58
Ahora, esta de aquí vacía un documento
01:01:02
Luego, en texto, por ejemplo
01:01:04
Lo que hago es implementar
01:01:07
Un public
01:01:09
Void
01:01:11
Vaciar, es lo que he llamado
01:01:13
Que lo que hace es
01:01:15
Super
01:01:18
Punto vaciar
01:01:19
Llámame
01:01:21
El vaciar de mi padre
01:01:28
Y luego vacía
01:01:30
Lo que yo quiero
01:01:32
O sea, this.numpatch es igual a 0
01:01:33
Este mismo lo hago en audio
01:01:39
Este es más elegante
01:01:44
¿Veis que es más elegante?
01:01:45
Y aquí en vez de longitud le pongo longitud
01:01:49
¿Por qué es más elegante?
01:01:57
Porque ahora desde aquí
01:02:01
En vez de hacer todas estas cosas de aquí
01:02:02
lo único que tengo que hacer es
01:02:05
docs.dei.vaciar
01:02:07
y por polimorfismo me llamará
01:02:12
el vaciar de audio o el vaciar de texto
01:02:19
correctamente
01:02:24
entonces esto de vaciar se vuelve
01:02:28
con estas dos aportaciones de ordenar los arrays
01:02:33
y luego después borrar el primero
01:02:36
Está claro que
01:02:40
Eso habría que verlo
01:02:42
Porque su documento
01:02:44
Es un archivo de un millón de documentos
01:02:47
No es lo mismo
01:02:49
Reordenar el millón
01:02:51
De cosas que
01:02:53
Pasar dos veces por ahí
01:02:55
Ordenar costa mucho más
01:02:57
Que simplemente hacer una palabra
01:03:01
Si ya está ordenado, tarda más que realmente reconocer
01:03:03
Tú no sabes si está ya ordenado
01:03:05
Está ordenado desde la última vez
01:03:07
que has vaciado. Otra cosa es que tú cada vez que hagas un rellenar, llames un ordenar
01:03:09
al final. Entonces, hasta no te serviría esto, porque cada vez que añades algo lo
01:03:18
ordenas. Pero es el mismo problema, cada vez que añades algo se te complica mucho la fase
01:03:24
de, en vez de añadirlo al final y ya está, pues, si queréis, esto. Probablemente, puesto
01:03:30
que lo tienes que hacer, no estaría
01:03:38
mal ponerlo aquí
01:03:40
después de haber añadido
01:03:40
en rellenar, lo ordeno
01:03:46
y así mi archivo está siempre ordenado
01:03:49
ahora
01:03:51
como estoy gastando
01:03:52
cosas en ordenarlo
01:03:54
a lo mejor leer documentos
01:03:56
estos de aquí que buscan un montón
01:03:58
que me han dado
01:04:00
un nivel de
01:04:01
no, esto no, aquí esto
01:04:03
sobre todo
01:04:06
este de aquí que se basa sobre el nivel
01:04:07
de confidencialidad en un array
01:04:10
ordenado, pues esto se puede
01:04:12
hacer mucho más eficiente, ahora que es
01:04:14
mi array ordenado. Voy
01:04:16
leyendo y el primero que encuentro
01:04:18
que está por encima de este de aquí
01:04:20
ya he acabado mi método, puedo salir.
01:04:22
No tengo que leerme el array
01:04:25
entero. No tengo ni siquiera que leer
01:04:26
sí, tengo que leer dos veces.
01:04:28
Pero no lo tengo que leer dos veces entero
01:04:30
sino que lo tengo que leer dos veces
01:04:32
solo la parte que me interesa.
01:04:34
¿Puedes empezar por la mitad y así batiendo?
01:04:36
Cuando estás buscando ese número, ¿no?
01:04:38
No, porque necesito, como estoy buscando todos los menores que esto, pues seguramente los menores que esto están al principio.
01:04:40
Ah, bueno, al principio sí, claro.
01:04:46
Sería, le échelo a todos hasta que llegue al primero que sea superior a este de aquí.
01:04:50
Claro, claro.
01:04:54
Y allí me paro, hasta aquí hemos llegado. Vale, este es el trozo que tengo que copiar.
01:04:55
O sea que invertir en ordenar, pues me puede mejorar algunos de los métodos que ya tenía.
01:05:02
Cuando he hecho este método aquí no era ordenado, por lo tanto he tenido que devolver los dos.
01:05:08
Lo que he hecho es que
01:05:13
Como la única forma
01:05:20
Para que estén desordenados es cuando se añaden
01:05:22
Cuando yo lo añado, añado cosas desordenadas
01:05:24
Al final, si los ordeno
01:05:26
Si me aseguro que cada vez
01:05:28
Que añado algo, lo estoy ordenando bien
01:05:30
Ya está
01:05:32
Mento
01:05:33
Lo debería hacer también abajo
01:05:35
Porque cuando le estoy poniendo
01:05:38
Que su nivel
01:05:42
Se vuelve 9999
01:05:44
9 y por lo tanto lo estoy desordenando.
01:05:46
Suponiendo que usted es eso,
01:05:49
a lo mejor hay otro método para...
01:05:50
Porque casi todos estos de aquí,
01:05:51
sobre todo, hay este de aquí,
01:06:01
esto,
01:06:04
esto,
01:06:05
lo está buscando.
01:06:07
Entonces, si tú estás acumulando
01:06:09
todos los vacíos
01:06:11
al principio de mi array,
01:06:13
cada vez que haces
01:06:16
esto, estás pasando por un montón
01:06:18
de documentos vacíos
01:06:19
que no te sirven de nada.
01:06:21
A ver, todo este sistema está mal hecho, ¿vale?
01:06:23
Es para que vosotros hagáis un examen, no para que efectivamente me llame la CIA
01:06:28
y me diga, no obstante, hay policía aquí, que me diga, oye, mira, qué bien,
01:06:33
qué trabajo maravilloso habéis hecho con vuestros, os queremos todos allí.
01:06:38
Bueno, no, eso todavía faltará un par de años.
01:06:43
Para esto...
01:06:46
- Autor/es:
- Stefano Cihiesa
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial
- Visualizaciones:
- 13
- Fecha:
- 14 de febrero de 2023 - 14:07
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 1h′ 06′ 50″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 559.02 MBytes