Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 23-01-24 - 1 - 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 este método, efectivamente, es hacer un poquito lo de siempre,
00:00:00
pero ahora ya dentro de un método de una clase.
00:00:07
Nosotros tenemos un array y queremos ver si alguno de los elementos del array
00:00:09
cumple una condición, en particular la de que su código sea este,
00:00:17
pero podría ser cualquier otra, cumple.
00:00:21
Pues eso es lo mismo, es saber si algo pasa o no pasa, es lo de siempre.
00:00:23
De partida, asumimos que no pasa.
00:00:26
Y ahora me pongo a recorrerlos todos.
00:00:29
Con que encuentre uno que cumple la condición,
00:00:31
cambio el resultado final y se acabó.
00:00:34
Es lo de siempre.
00:00:37
Pues aquí yo tendré que recorrer el array,
00:00:38
el array está aquí en las propiedades de la clase.
00:00:40
Luego puede acceder directamente, no tenemos ni que pedirlo ni que nada, lógicamente.
00:00:43
Entonces ahora ya recorremos el array,
00:00:48
y en este caso como es para consultar, un for each o un for de índice,
00:00:51
da igual, si uno no es vago escribiendo, siempre va a ser muchísimo mejor
00:00:56
un for de índice porque no hace copias internas de variables,
00:01:01
no hace copias internas, eso que se ahorra,
00:01:05
y no tiene problemas de sincronización si hay varios hilos.
00:01:08
Ese no es nuestro problema ahora, pero podría serlo en otro momento.
00:01:10
Pero a ver, en un ejemplito, pues normal, que tampoco tiene mayores complicaciones,
00:01:15
pues si uno es vago con un for each y ya está y no pasa nada,
00:01:19
no tiene mayor valedad.
00:01:21
Mientras sí, sea menor que pedidos.length, incrementando i,
00:01:24
pues la historia de siempre.
00:01:33
Vamos a ver, el pedido de i cumple la condición,
00:01:35
¿qué condición? La de que su código sea como el que me han dado.
00:01:38
Entonces, pedidos de i, su código y su código lo tengo que coger con el get,
00:01:43
porque es una propiedad privada, con lo cual no puedo acceder directamente a ella,
00:01:49
y como es un string, o no es un string, sí es un string,
00:01:53
como es un string lo tengo que comparar con equals,
00:01:57
todas las cosas que ya no me puedo olvidar a estas alturas.
00:02:00
¿Es igual que el que me han dado?
00:02:03
Pues ya está, ya hemos encontrado un pedido que cumple la condición.
00:02:05
Pues result igual a true.
00:02:08
Y ya está, y ahí me he quedado.
00:02:11
Y aquí es donde hay que evitar la tentación terrible que os vence a muchos
00:02:13
de decir plantar aquí este else y si no result false.
00:02:18
¿Eh Miguel?
00:02:24
Cuidado con esa tentación tremendo, porque esto entonces ya perdería todo el sentido.
00:02:27
Entonces, ¿qué ocurre? Si es el primero lo hemos cambiado a true,
00:02:33
pero si luego el cuarto no es, me lo pone a false otra vez.
00:02:36
El cuarto ya ha perdido el sentido.
00:02:40
Cuando ya se ha hecho true, ya se ha hecho true para siempre.
00:02:42
Entonces, esto fuera.
00:02:46
¿Cómo en el bucle?
00:02:56
¿Al lado del?
00:03:06
Sí.
00:03:08
Ah, vale, vale, vale.
00:03:10
Claro, o sea, sí.
00:03:12
A ver.
00:03:15
Claro, ¿pero para qué?
00:03:17
Sí, vamos a ver.
00:03:20
Una vez, efectivamente, esta sería la estructura básica.
00:03:22
Una vez que ya he encontrado un pedido que lo cumple, lo pongo a true.
00:03:26
Y ya lo que pase con el resto de pedidos ya me da igual.
00:03:29
Lo que desde luego no puedo hacer es que luego me lleve un pedido
00:03:33
tres posiciones después y lo vuelvo a cambiar a false.
00:03:36
Eso es lo que no me puede ocurrir. Eso está claro, ¿no?
00:03:38
Que era la base de esto.
00:03:40
Ahora ya uno se puede poner a, efectivamente, retocar esto y decir,
00:03:42
hombre, una vez que ya he encontrado un pedido que es true,
00:03:45
voy a dejar de recorrer a array, porque ya no me aporta nada.
00:03:49
Entonces, hombre, imaginaos que este array fuera de, yo qué sé, 4.000.
00:03:53
Y ya encontró en el primero que es true.
00:03:57
¿Vamos a hacer 3.999 iteraciones?
00:04:00
Pues, hombre, ¿para qué?
00:04:03
Entonces, podemos, efectivamente, hacer que una vez que ha entrado aquí,
00:04:05
ya este for no se ejecute más, ¿no?
00:04:11
Por ejemplo, primera forma que se os ocurriría, ¿vale?
00:04:15
Para evitar esas iteraciones que ya no aportan nada.
00:04:19
¿Qué podríamos hacer?
00:04:22
Pues lo que ha dicho él, ¿no?
00:04:24
No nos olvidemos que esto es una condición en la que puedo poner lo que a mí me dé la gana.
00:04:26
Entonces, en esta condición yo le puedo poner,
00:04:31
oye, tú ve avanzando mientras no hayas llegado a la posición
00:04:34
y no hayas encontrado
00:04:38
y no hayas encontrado un pedido con ese código.
00:04:46
Por ejemplo.
00:04:49
Entonces, simplemente con esa modificación, este bucle va avanzando.
00:04:51
En cuanto encuentra uno que ya lo cumple, se pone a true.
00:04:55
Con lo cual, esto ya se pondría a false.
00:05:01
Luego, en la siguiente iteración, ya no entra.
00:05:04
Y ya está.
00:05:08
Y te ahorras las 20, 30 iteraciones que te faltan, que ya no las necesitas.
00:05:09
Por ejemplo, ¿no?
00:05:14
¿Vale?
00:05:17
Está claro lo que hemos hecho.
00:05:18
Aprovecharnos.
00:05:20
Una vez que esto ya se ha puesto a true,
00:05:21
aprovecharnos para que esta condición ya se convierta en false
00:05:23
y yo ya no entro más.
00:05:27
¿No?
00:05:30
Así una vez que he encontrado el pedido,
00:05:31
lo que pase con los demás es que me da lo mismo.
00:05:34
Lo que pase con los demás ya me da igual.
00:05:37
Esta podría ser una opción.
00:05:39
Claro, otra.
00:05:43
La que pensaba que me ibas a decir la primera,
00:05:44
que es la que me pone muy nerviosa y muy fea.
00:05:48
Plantado un break en el foro.
00:05:51
Claro, pues sí.
00:05:53
Uno planta un break a tomar por culo.
00:05:55
Claro.
00:05:57
Pero los software, los programas que tienen break,
00:05:58
luego son muy confusos.
00:06:02
Aunque ahora no nos hagamos idea.
00:06:05
Porque los códigos que hacemos son cortitos.
00:06:08
Son muy confusos porque el break es párate.
00:06:10
Y a lo mejor el break está en un foro que dentro tiene
00:06:13
un montón de llamadas a métodos y cosas muy largas.
00:06:17
Entonces tú, cuando haces un vistazo al foro,
00:06:20
desde aquí quieres entender lo que pasa.
00:06:23
Y si tú pones en la condición todo lo relacionado
00:06:26
con cuándo entra y cuándo sale,
00:06:30
va a saber rápidamente lo que hace.
00:06:32
Pero si tú en un break que está ahí oculto
00:06:34
lo obligas a salir,
00:06:36
eso tú no lo ves cuando miras aquí arriba.
00:06:38
No te haces a la idea de que puede ocurrir algo
00:06:41
que lo haga salir.
00:06:43
No te haces a la idea.
00:06:44
Tendrías que empezar a ir a todas las llamadas
00:06:45
que hay dentro hasta que llegues al break.
00:06:47
Entonces, hombre, no es un código muy legible.
00:06:49
Lo ideal es que tú, mirando esta línea,
00:06:53
te puedas hacer una idea de cuándo ese bucle
00:06:55
se ejecuta o no se ejecuta.
00:06:57
Entonces, que esta condición se hace más larga.
00:06:59
No pasa nada, se hace más larga.
00:07:01
Pero tú ya más o menos estarás a la idea de lo que hace.
00:07:03
Porque el break ahí escondido
00:07:05
tiene una acción muy radical
00:07:07
que es romper el bucle
00:07:09
y tú aquí arriba no la estás viendo.
00:07:11
No la estás viendo, que puede ocurrir algo
00:07:13
que no está aquí, puede ocurrir algo
00:07:15
y que se por desaparece.
00:07:17
Entonces, salvo en códigos muy manejables y cortitos,
00:07:19
pues por eso los break están tan mal vistos y con razón.
00:07:22
Pero vamos, que si uno está haciendo
00:07:28
sus propios códigos así patateros
00:07:31
y dice, hombre, pues a mí no me importa.
00:07:34
Jolín, yo pongo aquí un break si me da la gana
00:07:36
por lo tal, por la chorrada que estoy haciendo,
00:07:38
pues hombre, pues lo pone y ya está.
00:07:40
Y esto significa, cuando ya he llegado
00:07:43
a que esto sea true, fue razón.
00:07:46
Se acabó.
00:07:48
Y es lo que significa la sentencia break.
00:07:50
Sale del bucle en el que esté.
00:07:52
Ya no se ejecuta más.
00:07:54
Pero esto es muy feo, no me gusta.
00:07:56
Otra cosa que podríamos hacer,
00:07:58
aparte de poner ahí la variable,
00:08:00
que eso estaría mejor, más bonito,
00:08:02
o el break,
00:08:04
para que este bucle saliera
00:08:06
en el momento en el cual
00:08:10
hemos encontrado ya
00:08:12
un pedido que cumple la condición.
00:08:14
Bueno, pues podemos aprovecharnos
00:08:16
de que es un método
00:08:18
y usar el retorno.
00:08:20
Y hacer esto.
00:08:24
Y fijaos, ala, qué bonito y qué fácil.
00:08:26
Ala.
00:08:32
Esto es un poco radical también,
00:08:34
pero bueno, esto sí que...
00:08:36
Cuando encuentro el pedido
00:08:38
cuyo código coincide,
00:08:40
ya salgo del método directamente.
00:08:42
Ya salgo, porque ya no quiero hacer más.
00:08:44
Ya acabo el método.
00:08:46
Entonces, si salgo del método,
00:08:48
lógicamente salgo del for y salgo de todo.
00:08:50
Y además salgo devolviendo true.
00:08:52
Y entonces, aquí abajo,
00:08:54
pondríamos return false.
00:08:56
Porque si yo llego aquí abajo,
00:09:00
es porque no salí por el return true.
00:09:02
Entonces esta línea me sobraría ya.
00:09:04
Esta línea me sobraría.
00:09:06
O sea, si llego a un pedido
00:09:08
cuyo código es igual,
00:09:10
fuera ya método, me voy de ahí,
00:09:12
return true.
00:09:14
Que no he salido por aquí nunca.
00:09:16
Entonces es que el for ha terminado y llego aquí.
00:09:18
Pues en ese caso return false,
00:09:20
porque no he encontrado ningún pedido.
00:09:22
Sería otra forma de plantearlo.
00:09:24
Pero claro, en métodos en los cuales
00:09:26
lo único que queremos hacer es esto.
00:09:28
No queremos que se hagan más cosas.
00:09:30
Porque el return es que ya sale del método
00:09:32
y sale de todo.
00:09:34
Pero bueno, lo más bonito, en realidad,
00:09:38
lo más...
00:09:40
sería
00:09:42
una variable que yo la voy cambiando
00:09:44
de valor
00:09:46
y luego aquí la devuelvo.
00:09:52
Esto sería, de alguna manera,
00:09:56
lo más ortodoxo,
00:09:58
lo más purista.
00:10:00
Porque aquí, cualquier otro
00:10:02
cambio que yo quiera incorporar,
00:10:04
seguramente sea más fácilmente
00:10:06
incorporable.
00:10:08
Si quiero que este método además haga otras cosas,
00:10:10
pues las puedo poner aquí abajo.
00:10:12
Si tengo el return aquí arriba, pues ya tengo que cambiar el return.
00:10:14
Porque si tenía el return aquí arriba ya,
00:10:16
pues he puesto dos puntos y coma.
00:10:18
Esto sería lo más
00:10:20
purista y ortodoxo.
00:10:22
Y a la hora de incorporar cosas nuevas,
00:10:24
menos cambios voy a tener que hacer.
00:10:26
Pero lo que tenemos que entenderlo todo.
00:10:28
Lógicamente.
00:10:30
Y saber la potencialidad
00:10:32
que tiene cualquier sentencia
00:10:34
y entender todas las construcciones posibles.
00:10:36
Entenderlas.
00:10:38
¿Vale?
00:10:40
Bueno, pues este método ya estaría.
00:10:44
Para que se nos vaya...
00:10:46
Bueno.
00:10:48
Vamos a incorporar ahora ya
00:10:50
en el software, pues que la aplicación
00:10:52
haga esta funcionalidad.
00:10:54
Porque esto no deja de ser la clase.
00:10:56
Aquí todavía tenemos que ponernos en el chip
00:10:58
de que no hay nada ejecutándose.
00:11:00
Esto es la clase que te dice
00:11:02
si algún cliente alguna vez
00:11:04
quiere ver si ha pedido un pedido,
00:11:06
llamará a esto. Pero todavía no hay
00:11:08
ningún cliente pidiendo nada,
00:11:10
ni hay ningún pedido, ni hay nada.
00:11:12
Estamos ahora haciendo la clase solo.
00:11:14
Luego ya se hará
00:11:16
el software que es el que llama
00:11:18
a estas clases, llama a los objetos
00:11:20
y ya hace las cosas.
00:11:22
Y ese es el main, en nuestro caso el main famoso.
00:11:24
Podría ser una interfaz gráfica
00:11:26
también, la que llama a estas cosas
00:11:28
pero como no sabemos hacer
00:11:30
interfaces gráficas, pues haremos un main.
00:11:32
Un main con un menú.
00:11:34
Bueno, pues ese software que estábamos haciendo
00:11:36
era algo como esto.
00:11:38
Habíamos hecho estas
00:11:42
funcionalidades.
00:11:44
Yo aquí en mi ejemplito
00:11:46
no las tengo todas incorporadas
00:11:48
todavía porque esta es la versión de aquí,
00:11:50
no es la de mi portátil, que se me había traído.
00:11:52
Pero bueno, estas las teníamos
00:11:54
todas hechas, yo creo.
00:11:58
Nos faltaba eliminar simplemente.
00:12:00
La llamada al método.
00:12:02
Pero vamos.
00:12:04
Teníamos estas funcionalidades hechas.
00:12:06
Vale, pues ahora esta es nuestro software
00:12:08
cuando solamente
00:12:10
trabajaba con pedidos.
00:12:12
Solamente trabajaba con pedidos.
00:12:14
Ahora nuestro software se ha hecho más grande
00:12:16
y ahora puede
00:12:18
trabajar también con clientes.
00:12:20
Bueno, pues entonces.
00:12:24
La primera pregunta
00:12:26
en relación a un
00:12:28
diseño de software siempre es
00:12:30
¿Cómo vas a trabajar con datos?
00:12:32
¿Los datos dónde están?
00:12:34
¿Dónde están los datos? ¿Cuáles son tus datos y dónde están?
00:12:36
Vale, pues ahora tenemos también
00:12:38
un volumen de datos que van a ser los clientes.
00:12:40
Y eso es lo primero
00:12:42
que hay que resolver.
00:12:44
Vale, si vas a trabajar con clientes,
00:12:46
¿esos clientes dónde están?
00:12:48
Para que yo haga cosas con ellos.
00:12:50
Cuando yo inserte uno nuevo, ¿dónde va a ir a parar?
00:12:52
¿Dónde están?
00:12:54
Esa es la primera pregunta.
00:12:56
Hay que empezar a preguntarse
00:12:58
¿Qué vas a hacer con esos clientes?
00:13:00
Hay que preguntarse dónde van a estar.
00:13:02
La respuesta habitual es
00:13:04
obviamente en una base de datos.
00:13:06
Y entonces la aplicación se conectará
00:13:08
con esa base de datos
00:13:10
para bien meter clientes nuevos
00:13:12
o bien para recoger clientes
00:13:14
y trabajar con ellos.
00:13:16
Pero claro, nosotros no sabemos conectarnos
00:13:18
a una base de datos
00:13:20
para meterle un objeto cliente o recuperarlo.
00:13:22
No sabemos hacer eso.
00:13:24
Nuestros clientes tienen que estar en otro sitio.
00:13:26
Pues por eso los metemos directamente
00:13:28
en una variable de la aplicación.
00:13:30
¿Vale?
00:13:32
En condiciones normales, esa variable se habrá
00:13:34
rellenado con lo que hay en una base de datos.
00:13:36
En nuestro caso,
00:13:38
la rellenamos directamente por consola
00:13:40
porque no sabemos rellenarla en una base de datos.
00:13:42
Y esa variable
00:13:44
para guardar muchos clientes,
00:13:46
pues ahora mismo
00:13:48
es un array.
00:13:50
Pero bueno, podría ser un conjunto, una lista,
00:13:52
un mapa, un diccionario, bueno, millones de cosas.
00:13:54
Podría ser.
00:13:56
¿Vale? Pues
00:13:58
en esta aplicación vamos a
00:14:00
poner
00:14:02
nuestro almacén
00:14:08
de clientes.
00:14:10
Nuestro almacén de clientes.
00:14:12
Entonces claro, el array
00:14:14
es tremendamente
00:14:16
eficiente computacionalmente y es una
00:14:18
estructura básica sobre la que se apoya todo.
00:14:20
Pero
00:14:22
ya sabemos,
00:14:24
por enésima vez hemos dicho,
00:14:26
que su única pega
00:14:28
es que es una estructura
00:14:30
estática, o lo que es lo mismo,
00:14:32
cuando se crea,
00:14:34
se crea con un tamaño determinado
00:14:36
y ese no se mueve.
00:14:38
Esa es la única pega que tiene el array.
00:14:40
Y por esa única pega
00:14:42
es por la que se han hecho clases
00:14:44
por encima que usan
00:14:46
los arrays debajo trucándolos.
00:14:48
Trucándolos como los hemos
00:14:50
trucado nosotros, pues haciendo uno nuevo
00:14:52
con una posición más, sustituyéndolo.
00:14:54
Pues son clases que tienen como propiedad
00:14:56
interna un array suyo y lo trucan.
00:14:58
¿Vale? Bueno,
00:15:00
esas son las colecciones.
00:15:02
Hay varias variantes, varios rollos, ¿vale?
00:15:04
Eso pues ya lo veremos, el tema de colecciones que le gustan
00:15:06
tanto a Alejandro. Y ya veremos cuando
00:15:08
las veamos por dentro, las hagamos nosotros y te siguen gustando
00:15:10
tanto. Dios quiera que sí.
00:15:12
¿Vale? Porque...
00:15:14
Claro hombre, porque es la forma fácil
00:15:17
de usarlas, pero todavía no las hemos visto.
00:15:19
Tenéis que aprender a programar primero.
00:15:21
Tenéis que aprender primero a programar
00:15:24
y luego ya...
00:15:26
Puedes decir lo que quieras.
00:15:28
¿Eh?
00:15:30
Eso es lo bueno, luego todo se sepa.
00:15:33
Vale, pues entonces.
00:15:35
Todo este rollo venía a cuento de que
00:15:37
la única pega que tiene el array es que es una estructura estática.
00:15:39
Entonces tenemos que decidir el volumen,
00:15:41
la capacidad
00:15:43
previamente.
00:15:45
Bueno, pues para no complicarnos
00:15:47
en la vida, venga, esta aplicación
00:15:49
como mucho va a tener, como muchísimo
00:15:51
yo voy a poder registrar
00:15:53
100 clientes, pues ala, 100.
00:15:55
¿Vale? Repito,
00:15:57
esto lo solucionaremos
00:15:59
lo solucionaremos
00:16:01
a corto plazo usando colecciones.
00:16:03
¿Vale? Pero las colecciones
00:16:05
hay que entender muy bien cómo está hecha
00:16:07
cada una por dentro, porque cada una tiene su peculiaridad.
00:16:09
Porque de entender eso
00:16:11
se deriva
00:16:13
que luego tú puedas hacer una selección
00:16:15
correcta de la colección que vas a usar.
00:16:17
No te vale cualquiera para cualquier
00:16:19
aplicación, no te vale cualquiera para cualquiera.
00:16:21
Tienes que hacer una selección correcta.
00:16:23
Vale, pues nada.
00:16:25
Cliente, importamos la clase cliente
00:16:27
porque no nos apetece ponerle
00:16:29
todo el rollito de com, dan uno
00:16:31
entidades que es muy largo, no nos apetece
00:16:33
pues le ponemos el import.
00:16:35
Ya tenemos la clase cliente.
00:16:37
Bueno, pues eso nos permitiría
00:16:39
ya hacer
00:16:41
funcionalidades añadidas con este software.
00:16:43
Pues por ejemplo,
00:16:45
vamos a
00:16:47
hacer
00:16:49
la funcionalidad
00:16:51
8, con lo cual
00:16:53
cambia la 9 de salir
00:16:55
y por tanto
00:16:57
que no se me olvide esto,
00:16:59
cambiarlo a 9,
00:17:01
la de salir, cambiarlo a 9,
00:17:03
pues la funcionalidad 8
00:17:05
que sea
00:17:07
incorporar
00:17:09
pedido
00:17:13
a cliente.
00:17:15
Vale,
00:17:21
incorporar pedido a cliente.
00:17:23
Vale.
00:17:25
Y luego podemos
00:17:27
hacer también la...
00:17:29
A ver,
00:17:31
para no tener que estar viendo el numerito este todo el rato,
00:17:33
voy a poner que la de salir sea
00:17:35
muy bien.
00:17:37
Iba a poner yo la 100, pero es absurdo
00:17:39
poner tres números y ponerte poner uno.
00:17:41
Tienes toda razón, la de salir es la 0.
00:17:43
Y así yo no la cambio nunca más.
00:17:45
La de salir es la 0.
00:17:47
Vale, bien pensado.
00:17:51
Vale, pues la otra que vamos a hacer
00:17:55
va a ser incorporar un pedido a cliente.
00:17:57
Mostrar dirección,
00:18:07
por ejemplo,
00:18:09
bueno cliente,
00:18:11
para que hemos hecho los datos, el nombre y la dirección
00:18:13
para poder enviar la cartita, una carta,
00:18:15
se lo mandamos a un paquete.
00:18:17
Mostrar datos del cliente que ha hecho un pedido.
00:18:19
Vale, entonces esta opción 9
00:18:29
es la que daremos cuando nos ha llegado un pedido
00:18:31
y decimos, a ver, ¿este para quién es?
00:18:33
Se lo voy a meter en una caja y voy a poner aquí
00:18:35
la pegatina con su nombre y dirección.
00:18:37
Pues daremos esa opción.
00:18:39
Vale, vamos a hacer primero la 8,
00:18:41
porque para aprobar la 9 los clientes tienen que tener pedidos.
00:18:43
Bueno, claro, tendremos que poder meter clientes.
00:18:45
Si no metemos clientes, pues
00:18:47
chungo.
00:18:49
Vamos a poner la opción 10.
00:18:51
Esto en una consola ya se queda muy largo.
00:18:55
En una aplicación con interfaz gráfica,
00:18:57
pues bueno, uno puede hacer un despliegue
00:18:59
de opciones y es un poquito más
00:19:01
manejable.
00:19:03
La 10 sería
00:19:05
insertar cliente.
00:19:07
Sería, sí, sí, sí.
00:19:11
Lo que pasa es que como la voy poniendo,
00:19:13
vosotros lo queréis dejar más bonito, pues ya lo vais colocando
00:19:15
como queráis.
00:19:17
Yo como voy ahí
00:19:19
sobre la marcha improvisando.
00:19:21
Vale.
00:19:27
Bueno, pues venga.
00:19:29
Vamos a hacer primero lo de insertar
00:19:31
cliente porque
00:19:33
que sería como la de crear pedido.
00:19:37
Pues igual, pero en este caso clientes.
00:19:39
Entonces, en realidad
00:19:41
es como la de pedido,
00:19:43
pero cambiando por cliente
00:19:45
y usando una variable adicional
00:19:47
porque esta pos,
00:19:49
ahora ya esta pos convendría cambiarla
00:19:51
de nombre y llamarla pos de pedidos
00:19:53
porque ahora tendremos una para indicar la
00:19:55
posición de los clientes, son dos arrays en paralelo.
00:19:57
Entonces vamos a aprovecharnos de
00:19:59
ese concepto que os mencioné
00:20:01
de la refactorización
00:20:03
que es, yo quiero cambiar
00:20:05
un elemento de mi
00:20:07
código fuente de nombre,
00:20:09
pues en lugar de hacerlo yo a mano,
00:20:11
que es un rollo, se me puede escapar alguno,
00:20:13
usamos que el entorno de desarrollo
00:20:15
me hace una refactorización, me ayuda a refactorizar.
00:20:17
Recordad que refactorizar
00:20:19
es
00:20:21
cambiar el aspecto de mi código
00:20:23
pero sin cambiar nada de la funcionalidad.
00:20:25
Nada, la funcionalidad es la misma.
00:20:27
A lo mejor yo estoy cambiando nombres
00:20:29
de variables, estoy cambiando,
00:20:31
pero no cambio la funcionalidad. Bueno, en este caso
00:20:33
vamos a cambiar el nombre de la variable pos.
00:20:35
Entonces, botón derecho en la variable
00:20:37
en la que queramos refactorizar, botón derecho
00:20:39
os vais a refactor,
00:20:41
rename, que esta arriba
00:20:43
y ahora queremos
00:20:45
que,
00:20:47
a ver,
00:20:49
porque no me,
00:20:51
vamos a ver,
00:20:53
rename,
00:20:55
vale, y ahora ya escribo aquí
00:20:57
el nuevo nombre, ¿verdad?
00:20:59
Y le doy
00:21:01
al enter y el me lo
00:21:03
actualiza todo.
00:21:05
Pues ala,
00:21:09
refactorizo otra vez.
00:21:11
Si, lo que pasa es que
00:21:13
para no cambiarlo de sitio, como lo tengo aquí en la
00:21:15
funcionalidad de pedidos, tendría que acordarme
00:21:17
de cambiarlo de sitio. Entonces voy a
00:21:19
llamarlo, efectivamente,
00:21:21
eh,
00:21:23
me he perdido,
00:21:25
aquí estoy.
00:21:27
A ver, es que
00:21:29
no estaba,
00:21:31
ahora sí.
00:21:33
Vale, pues
00:21:35
venga, pos
00:21:37
pedidos.
00:21:43
Ala, ya está,
00:21:45
más bonita, esta es la posición de pedidos,
00:21:47
todo lo que tenía que ver con pedidos
00:21:49
ya se ha cambiado de nombre.
00:21:51
Estas yo no las tengo llenas, vos las tendréis llenas
00:21:53
del otro día.
00:21:55
Venga, pues ahora necesitamos otra variable
00:21:57
para como indicadora de las posiciones
00:21:59
de los clientes. Un entero
00:22:01
también,
00:22:03
pos clientes, que empieza valiendo 0.
00:22:05
Vale,
00:22:07
y ahora la funcionalidad
00:22:09
de añadir cliente, que
00:22:11
en mi caso es la 10,
00:22:13
es como la de pedido,
00:22:15
igual, pero pidiendo datos
00:22:17
de cliente y
00:22:19
ya está. Voy a copiar el mismo caso 1
00:22:21
y ahora lo modifico
00:22:25
en el caso 10.
00:22:27
En mi caso en el 10.
00:22:29
A ver.
00:22:31
7, 8, 9 y caso 10.
00:22:49
Vale, pues aquí es
00:23:01
donde lo quería yo hacer
00:23:03
y ahora, ¿qué datos hay que pedir? Los del cliente,
00:23:05
que son 3 strings,
00:23:07
nif, nombre y dirección.
00:23:09
Vale,
00:23:11
pues vosotros que tenéis
00:23:13
ya la clase teclado seguramente lo tenéis muy fácil,
00:23:15
yo lo voy a hacer con el escáner,
00:23:17
porque estoy en la versión antigua de esto.
00:23:19
Entonces,
00:23:21
introduzca
00:23:27
nif.
00:23:29
Pues lo leo.
00:23:31
Introduzca
00:23:33
nombre.
00:23:35
Pues lo leo.
00:23:39
E introduzca
00:23:43
dirección.
00:23:45
Pues la leo.
00:23:53
Y ahora ya, en mi array de clientes,
00:23:57
en la
00:23:59
posición que toque,
00:24:01
en la posición
00:24:03
que toque, dejándola
00:24:05
incrementada, por supuesto,
00:24:07
en la que toque dejándola incrementada,
00:24:09
pues
00:24:11
clientes,
00:24:13
en la que toque, meto
00:24:15
ese nuevo cliente
00:24:17
y
00:24:19
¿qué constructor usamos?
00:24:23
Pues lo ideal sería que en cliente hubiera
00:24:25
un constructor al que yo le doy
00:24:27
los 3 parámetros básicos.
00:24:29
Nombre, dirección y
00:24:31
todavía no lo leo.
00:24:33
Nombre, dirección y nif.
00:24:35
Y el array de clientes, de pedidos,
00:24:37
pasamos de él por ahora porque no hay ningún pedido incorporado.
00:24:39
Entonces,
00:24:41
voy aquí y yo,
00:24:43
que todavía no tengo ni un constructor ni nada,
00:24:45
porque lo acabo de hacer,
00:24:47
pues voy a crear un constructor,
00:24:51
si es que
00:24:53
no lo, igual lo tenéis otros de ayer,
00:24:55
voy a crear un constructor para cliente
00:24:59
con esos 3 datos.
00:25:01
Y entonces cuando cree
00:25:03
mi objeto cliente con este constructor,
00:25:05
pedidos se inicializará a null, que es el valor
00:25:07
por defecto de un array.
00:25:09
Se inicializará a null.
00:25:11
Vale.
00:25:13
Venga, pues nada.
00:25:15
Entonces, llamo yo aquí a cliente
00:25:17
con esos 3 parámetros.
00:25:19
Nif,
00:25:21
nombre
00:25:23
y dirección.
00:25:25
Pues ya está, ya tengo la funcionalidad de
00:25:27
crear, insertar un nuevo cliente
00:25:29
en mi registro de clientes.
00:25:31
Con esos datos básicos y por ahora
00:25:33
sin pedidos.
00:25:35
Bueno,
00:25:39
pues ahora
00:25:45
lo natural sería poder hacerle,
00:25:47
meterle un pedido
00:25:49
a este cliente.
00:25:51
Vale, que sería la funcionalidad
00:25:53
8.
00:25:55
Aquí de nuevo,
00:25:57
como estamos haciendo
00:25:59
el programa escalándolo poco a poco,
00:26:01
primero hicimos la parte de pedidos, luego la de cliente,
00:26:03
se complica un poco
00:26:05
la cosa, claro.
00:26:07
O sea, lo ideal es que cuando uno hace una aplicación,
00:26:09
ya desde el principio,
00:26:11
tenga definidas
00:26:13
todas las necesidades.
00:26:15
Vas a tener clientes, pedidos,
00:26:17
van a tener que hacer esto, para ti, para tal.
00:26:19
Nosotros cuando hicimos esta primera versión de la aplicación,
00:26:21
solamente teníamos definida
00:26:23
la parte de pedidos y le hemos incorporado
00:26:25
ahora después la de clientes.
00:26:27
Vale, pues entonces,
00:26:29
eso ha implicado que tengamos dos arrays.
00:26:31
El array con los pedidos
00:26:33
que van sueltos, los pedidos que se van haciendo.
00:26:35
Y luego,
00:26:37
y luego,
00:26:39
a un cliente,
00:26:41
le tendremos que incorporar
00:26:43
un pedido concreto que ya esté aquí.
00:26:45
Ese es como va a funcionar nuestro software.
00:26:47
Porque ya tenemos previamente
00:26:51
la parte hecha en la cual hacemos un pedido
00:26:53
por libre y lo metemos aquí.
00:26:55
Bueno, pues entonces,
00:26:57
eso significa, vale,
00:26:59
pues entonces, incorporar pedido a cliente,
00:27:01
¿qué tendré yo que pedir?
00:27:03
Pues como siempre, la clave primaria del pedido.
00:27:05
Los pedidos ya están aquí guardados todos.
00:27:07
Los pedidos que se han hecho están ahí.
00:27:09
Se ha hecho un pedido de boli, tenéis aquí.
00:27:11
Pues voy a asociar este pedido al cliente, voy a asociarlo.
00:27:13
Pues entonces, tendremos que pedir,
00:27:15
oye, vale, ¿qué pedido de todos estos
00:27:17
que tienes tú en tu almacén
00:27:19
de pedidos,
00:27:21
¿qué pedido vas a asociar al cliente?
00:27:23
Pues lo que vas a necesitar para identificarlo
00:27:25
será lo que lo identifique de forma única,
00:27:27
que es su clave.
00:27:29
El código, ¿no?
00:27:31
Pues entonces,
00:27:33
en la funcionalidad de incorporar
00:27:35
pedido a cliente, lo primero que habrá
00:27:37
que preguntar es, oye, ¿cuál es el código
00:27:39
del pedido que le quieres pasar al cliente?
00:27:41
¿Cuál es? Eso es lo primero que habrá
00:27:43
que hacer.
00:27:45
Código del pedido.
00:27:49
Código del pedido,
00:27:51
que es string, ¿verdad?
00:27:53
Sí, es string,
00:27:55
afortunadamente queda menos guerra.
00:27:59
Código del pedido,
00:28:01
como ya tenemos una variable
00:28:03
de declarar arriba, la reutilizo
00:28:05
para leer.
00:28:07
Vamos a acabar
00:28:11
este caso 8
00:28:13
y ahora paramos.
00:28:15
Va, ya tengo el código del pedido.
00:28:17
¿Ahora qué hacemos?
00:28:19
Pues tendremos que
00:28:21
saber
00:28:23
a qué cliente incorporarlo.
00:28:25
Bueno, pedimos lo del cliente y paramos
00:28:29
porque se va a hacer quizá un pelín en largo.
00:28:31
Ya tengo el código del pedido.
00:28:33
Ahora será, vale, ¿a qué cliente?
00:28:35
Porque tenemos muchos, ¿a qué cliente?
00:28:37
Pues de nuevo la pregunta es, ¿qué identifica
00:28:39
de forma única a cada cliente?
00:28:41
El nif, ¿no?
00:28:43
Si he hecho bien el diseño,
00:28:45
si he hecho bien el diseño,
00:28:47
alguna de las propiedades debería ser
00:28:49
que el nif no se identifique de forma única,
00:28:51
si lo he hecho bien.
00:28:53
Se supone que el nif
00:28:55
no se identifica
00:28:57
de forma única, se supone.
00:28:59
Pues sería lo siguiente que hay que pedir.
00:29:01
Venga, ya tengo el pedido
00:29:03
que le voy a enseñar al cliente.
00:29:05
Ahora,
00:29:07
nif del cliente.
00:29:11
Pues nada, lo leemos.
00:29:15
Line.
00:29:21
Y como no tenía ninguna variable
00:29:23
nif declarada arriba,
00:29:25
string nif.
00:29:27
Vale, ya tenemos la concentrada.
00:29:31
Y ahora ya efectivamente habría que
00:29:33
localizar el cliente con ese nif
00:29:35
y a través del método de incorporar pedido
00:29:37
pasarle el pedido con ese código.
00:29:39
¿Vale?
00:29:41
Bueno, pues paramos aquí un momentito
00:29:43
y lo
00:29:45
si os aburrís
00:29:47
lo meditáis en estos minutos.
00:29:49
Vale, pues
00:29:51
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 9
- Fecha:
- 23 de enero de 2024 - 13:42
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 569.89 MBytes