Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 16-01-24 - 2 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, volvemos aquí donde estábamos.
00:00:00
Vale, entonces, repito, recordad que este fallo
00:00:03
cuesta mucho desterrarlo.
00:00:06
A ver si uno sigue poniendo este if,
00:00:09
si es igual al código hago todo esto,
00:00:15
y aquí un else, y en ese else poner pedido no existe.
00:00:17
No, que el pedido de if no sea igual en código a este
00:00:20
no significa que no pueda serlo el siguiente.
00:00:25
Con lo cual uno no puede concluir, porque esto sea falso,
00:00:28
no puede concluir aquí con un else alegremente,
00:00:31
no puede concluir aquí que el pedido no exista.
00:00:36
No puede concluir.
00:00:45
Lo único que puede concluir en este else es que el de
00:00:46
posición y no es.
00:00:48
Es lo único que puede concluir, que el de posición y no es.
00:00:50
Pero a lo mejor el de posición y más uno sí que es.
00:00:53
Con lo cual sí que existe, lo que pasa es que está después.
00:00:55
Lo digo porque esto lo hacéis mucho.
00:00:58
Entonces, que este pedido no sea no significa que no pueda ser
00:01:01
el siguiente.
00:01:05
Entonces, no puedo ponerle a este if un else que diga el
00:01:06
pedido no existe.
00:01:08
No, no puedo.
00:01:09
Lo tengo que hacer de esta otra forma que hemos dicho.
00:01:12
Claro, entonces, cuando ya has acabado de recorrer,
00:01:15
pero cuando has acabado es cuando ya puedes decir, a ver,
00:01:18
¿alguna vez entré aquí?
00:01:21
Si entré alguna vez, el pedido existe.
00:01:23
Y si no entré, el pedido no existe.
00:01:27
Pero cuando ya hemos acabado de recorrer, efectivamente, ¿vale?
00:01:29
Por eso este if está fuera de ese for.
00:01:36
Cuando ya acabo de recorrer, el pedido existe puede ocurrir
00:01:39
dos cosas.
00:01:41
Que sea true, porque entré aquí alguna vez,
00:01:42
con lo cual el pedido existe.
00:01:44
No sé si habrá sido el 1, el 2, el 3, ni idea.
00:01:45
Pero existe seguro.
00:01:47
Que el pedido existe es falso.
00:01:49
Nunca entré aquí.
00:01:51
Entonces, conserva el valor primero.
00:01:52
Nunca entré.
00:01:54
Pues, entonces, ya con el if puedo decir,
00:01:55
que pedido existe es falso.
00:01:58
O lo que es lo mismo, que no pedido existe es true.
00:01:59
Pues, no existe.
00:02:03
Ahora ya mi aplicación será más.
00:02:04
INTERLOCUTOR 1 No habría que poner sin el false.
00:02:05
O sea, porque si no entra, de primera vez está el false.
00:02:08
INTERLOCUTORA 1 A ver, es que.
00:02:11
INTERLOCUTOR 1 Si no entra en el.
00:02:13
INTERLOCUTORA 1 Está false.
00:02:14
Y ahí es cuando tú quieres mostrar esto.
00:02:15
Entonces, esto está en el if, con lo cual,
00:02:17
pedido existe, está false.
00:02:19
¿Para qué?
00:02:21
Tiene que ser true, con lo cual, después el negado al principio.
00:02:21
El negado.
00:02:25
A ver, que se podría haber hecho, pedido no existe, true.
00:02:26
Y ahí cambiara, pedido no existe, false.
00:02:30
Entonces, aquí sí sería sin el no.
00:02:32
Pedido no existe.
00:02:33
Da igual.
00:02:34
Como hayas tú elegido hacerlo.
00:02:35
¿Vale?
00:02:37
Vale.
00:02:40
Bueno, pues, esta funcionalidad ya estaría.
00:02:41
Esta funcionalidad ya nos va a permitir comprobar si está
00:02:42
añadiendo los ítems correctamente.
00:02:45
Vamos a volver a ejecutarla.
00:02:46
Porque podemos creer que hemos añadido bien los ítems,
00:02:48
hemos creado bien el pedido, porque no nos da errores de
00:02:51
ejecución.
00:02:53
Y no, no nos está añadiendo nada.
00:02:54
Y nos da anul, pointer, excepción, nos da de todo.
00:02:57
Entonces, vamos a ejecutar esto otra vez.
00:03:00
Vale, pues, venga.
00:03:08
Primero, creamos un pedido.
00:03:08
Vale.
00:03:11
Ah, los next line, los next in, no los arreglé.
00:03:12
Entonces, vamos a tener que arreglarlos.
00:03:15
Vamos a tener que.
00:03:17
Que no me sale, ¿dónde?
00:03:25
La cantidad de pedido aquí.
00:03:30
Esta propiedad dices.
00:03:32
No, en ítem, en ítem.
00:03:37
En el main, también.
00:03:38
Crear el pedido y ejecutar el pedido.
00:03:39
En el main, el pedido.
00:03:41
¿Dónde exactamente?
00:03:44
Ah, la cuando creo un pedido nuevo.
00:03:47
En el caso 2, claro.
00:03:49
Ah, en el caso 2, cantidad, es que la leo aquí.
00:03:51
Claro.
00:03:54
Y en el 3, ahí me pone que no está en el ítem.
00:03:54
Bueno, es que yo no he hecho el 3 todavía.
00:03:59
Claro, no sé.
00:04:01
Por ahora voy a arreglar lo del next in, next line,
00:04:03
para poder ejecutar esto.
00:04:05
Entonces, vamos a ver.
00:04:07
Yo aquí, después de leer el número,
00:04:10
he tenido el problema cuando hago un next line.
00:04:12
Entonces, aquí vamos a ponerle ya directamente un scan punto.
00:04:13
Esto ya del next line, next in, lo vamos a arreglar rápidamente
00:04:19
para llamar a un, ahora que ya sabemos hacer métodos,
00:04:25
llamar a una función y ya no tengamos que tener este
00:04:27
problema.
00:04:30
Vale.
00:04:31
Con este next line ya lo quito.
00:04:32
Next line, next line, eso se me quita.
00:04:34
Next int, vale.
00:04:37
Introduzca descripciones in next line.
00:04:41
Vale.
00:04:45
Vale.
00:04:47
Vamos a ver si así lo se ha arreglado.
00:04:48
Todos los next in, next line.
00:04:51
Vale, venga, vamos a volver a ejecutar esto.
00:04:56
Opción 1, crear pedido.
00:05:00
Introduzca código.
00:05:02
Venga, el código va a ser el 1.
00:05:05
Código.
00:05:07
Introduzca descripción.
00:05:08
Pues, pedido mío, ala, pedido mío.
00:05:10
Este de aquí, vale.
00:05:17
Vale, el pedido ya está creado.
00:05:19
Vamos a probar a añadir un ítem.
00:05:22
A ver, añadir ítem, venga.
00:05:24
Código del pedido para que vamos a añadir ítem.
00:05:28
El 1, eso único que tengo, el 1.
00:05:30
Pues, venga.
00:05:32
Vamos a añadir el ítem a este pedido 1.
00:05:33
Descripción del ítem.
00:05:35
Pues, vamos a pedir bolis.
00:05:36
Cantidad del ítem, 3 bolis.
00:05:38
Aquí es que con el system, con el copia y pega,
00:05:42
tendría que haber puesto introduzca,
00:05:46
o sea, que están mal los system.
00:05:49
Aquí me falta el precio unitario.
00:05:50
6, vale.
00:05:52
He añadido el ítem al pedido 1.
00:05:55
Vamos a hacer la funcionalidad 6 para ver si el código de pedido
00:05:57
1 tiene esos ítems.
00:06:02
Vale, pues, sí lo tiene.
00:06:05
Me lo acaba de mostrar.
00:06:08
El pedido 1 tiene ítem, bolis, cantidad 3,
00:06:10
precio unidad 6.
00:06:13
Lo que hemos hecho hasta ahora parece que está bien.
00:06:16
Vamos a salir y ya hemos cerrado el programa.
00:06:19
No, no hemos cerrado el programa porque algo tiene la función
00:06:24
salir, la he debido cambiar.
00:06:31
Debía ser la 7.
00:06:33
Ah, porque no lo actualicé a la 7.
00:06:34
En la 7, vale.
00:06:37
Vale, entonces, aquí los system out eran los que tenían el
00:06:39
problema, introduzca cantidad, introduzca precio unitario.
00:06:45
Este system es el que estaba mal.
00:06:48
Precio unitario.
00:06:50
Y luego el, o hay la opción diferente de 8.
00:06:53
Esto es lo que estaba mal.
00:06:58
Hay, opción diferente de 8.
00:06:59
Vale, pues, la aplicación hecha hasta ahora está bien, ¿vale?
00:07:02
Vale, pues, a ver, volvemos aquí a este código del caso 6.
00:07:09
Este código del caso 6 empieza a ser ya un poquito feo.
00:07:18
En cuanto algo empieza a anidar ya dos for,
00:07:24
empieza a alargarse dentro de un switch case,
00:07:27
este código lo podemos dejar así, no pasa nada,
00:07:30
funciona perfectamente, está estupendo y lo hemos entendido.
00:07:32
Pero, hombre, es un poco feo.
00:07:34
A efectos de mantener el propio código nos lo complica.
00:07:37
Porque imaginaos que el usuario nos dice, oye,
00:07:41
cuando me muestres los ítems, los mensajes que me muestras
00:07:44
son muy feos.
00:07:47
Quiero que me digas, el ítem tal tiene cantidad tal.
00:07:48
Oye, cámbiale esa parte.
00:07:51
Pues, nos tenemos que ir al main.
00:07:53
Y el main es un programa larguísimo.
00:07:55
Esto ya empieza a ser jarraboso.
00:07:57
Pues, la aplicación de Tadojedo está para eso y es, oye,
00:08:00
¿qué estás haciendo tú aquí?
00:08:03
Estás mostrando con este for, estás mostrando los ítems del
00:08:05
pedido.
00:08:09
Pues, hombre, hazte un método en la clase pedido para mostrar
00:08:10
los ítems del pedido.
00:08:13
Y aquí limítate a llamarlo.
00:08:14
Que tienes que modificar algo en la vista, en los mensajitos,
00:08:16
los modificas en la clase pedido.
00:08:20
Y la main te queda súper cortita y no tienes que tocarla.
00:08:21
Esa es la idea de la aplicación de Tadojedo.
00:08:25
Uno va, las funcionalidades relacionadas con cada entidad,
00:08:27
las va encapsulando en su clase.
00:08:31
Y el programa principal las llama y se despreocupa de cómo
00:08:33
están hechas.
00:08:36
Entonces, no vamos a borrar esto,
00:08:37
pero vamos a mostrar los datos del pedido de las 2 maneras.
00:08:39
A la hora de ejecutarlo, lo va a mostrar 2 veces.
00:08:44
Pero, vale, pues, ¿qué otra solución de diseño?
00:08:46
Repito, esto es una solución de diseño, no es de funcionamiento.
00:08:50
La aplicación va a funcionar igual,
00:08:52
podríamos haber optado.
00:08:53
Pues, dentro de la clase pedido, aquí, entonces,
00:08:55
el cuerpo pediría hacer un método para mostrar los ítems
00:08:57
del pedido.
00:09:01
Hacer un método.
00:09:01
Y que se llame en cualquier parte para mostrar los ítems.
00:09:02
Pues, venga, vamos a añadir ese método.
00:09:07
Una clase puede tener un montón de métodos.
00:09:10
Es que da igual.
00:09:12
Pues, venga, vamos a hacer un método public void,
00:09:14
porque lo va a mostrar con System.out.println,
00:09:17
mostrar ítems.
00:09:20
Vale, ¿necesita este método alguna información desde fuera?
00:09:23
No, porque va a mostrar los ítems del pedido dis en el que
00:09:28
está.
00:09:31
Y esos ítems están aquí en esta variable.
00:09:32
Luego, no le hace falta, no le hace falta ninguna información
00:09:36
desde fuera.
00:09:39
Va a mostrar esa propiedad, es lo que va a hacer,
00:09:39
mostrar esa propiedad.
00:09:41
Bueno, pues, ahora ya este método lo hacemos tan bonito
00:09:43
como queramos.
00:09:46
Y vamos a hacer, por ejemplo, un System.out que nos diga,
00:09:48
el pedido de descripción, vamos a poner la descripción aquí,
00:09:52
el pedido.
00:09:58
Y ponemos aquí la propiedad descripción.
00:10:00
El pedido descripción, bueno, para hacer líneas separadas,
00:10:03
pedido, 2 puntos.
00:10:12
Y ponemos la descripción.
00:10:13
Pedido, 2 puntos, descripción.
00:10:15
Y ahora recorremos el ítem.
00:10:17
Y ahora ya, pues, un for, un for de índice, como queráis.
00:10:20
Como es solo para mostrar, los for-it son cómodos de
00:10:23
escribir.
00:10:25
De ejecución, fea, porque hace copias y gasta memoria.
00:10:27
La ejecución es fea, pero la escritura del código es muy
00:10:31
cómoda.
00:10:35
Pues, venga, no tengo nada que se llame ítem por ahí, ¿no?
00:10:38
Para cada ítem en el array ítems pedido,
00:10:42
pues, ya mostramos todo.
00:10:48
Copiad y pegad el propio Systemout de aquí y así ahorráis
00:10:50
tiempo.
00:10:58
Ala, y ya tengo un método.
00:11:01
Un método que para el pedido que lo llame,
00:11:04
para el pedido que lo llame, muestra la descripción y luego
00:11:06
después una línea con cada ítem.
00:11:09
Fenomenal.
00:11:12
Pues, ala, con un asterisco delante para que se vea mejor.
00:11:15
Ahora ya, cada vez que yo quiera mostrar los ítems de un
00:11:23
pedido, sea donde sea, llamo al método y se acabó.
00:11:27
Y no tengo que estar todo el rato recorriendo arrays,
00:11:31
haciendo cosas.
00:11:33
No tengo que estar todo el rato.
00:11:34
Cuando yo quiera mostrar el pedido P1,
00:11:35
haré P1 punto mostrar ítems, donde sea.
00:11:39
Cuando quiera mostrar los ítems del pedido P7, pues,
00:11:42
haré P7 punto mostrar ítems.
00:11:45
Y me ahorro, me ahorro trabajo y sobre todo hago la aplicación
00:11:47
mucho más clara.
00:11:51
AddItem está aquí.
00:11:58
Creaba una raya auxiliar con una posición más.
00:12:05
Guardaba el ítem nuevo en esa posición auxiliar, añadida.
00:12:10
Y yo luego ya sobrescribía.
00:12:15
Lo de siempre, vamos.
00:12:20
Vale, pues, ya tenemos ahí mostrar ítem.
00:12:23
Ese método ya está ahí.
00:12:25
Estupendo.
00:12:27
Ya nos podemos olvidar de él.
00:12:28
Y ahora ya, cada vez que yo quiera mostrar los ítems de un
00:12:30
pedido, lo llamo en los 200 main que hagan falta.
00:12:33
Me da lo mismo.
00:12:36
Bueno, pues, ¿cuándo voy a querer mostrarlo?
00:12:37
Por ejemplo, aquí.
00:12:39
Por ejemplo, aquí.
00:12:41
Voy a dejar comentado todo ese for.
00:12:44
Pues, todo ese for me lo ahorro ahora.
00:12:50
Joder, es que no veo nada.
00:12:53
Vale, todo este for me lo ahorro ahora y llamo directamente a,
00:12:56
¿ves?
00:13:02
Y es que no veo nada.
00:13:03
No os hagáis viejos.
00:13:06
Joder, la madre que lo trajo.
00:13:07
Vale, ya está.
00:13:10
Vale, entonces, pedidos de i punto mostrar ítems.
00:13:13
Ala.
00:13:23
Ahora se ve mucho más claro.
00:13:25
Todo esto lo he sustituido por la llamada al método.
00:13:28
Y mucho más bonito y más claro.
00:13:33
¿Vale?
00:13:42
Que ahora de repente la aplicación hay que cambiarla.
00:13:43
Porque me han dicho, oye, el mensajito que muestras no me
00:13:48
gusta, es muy feo.
00:13:51
Pues, el main no se entera.
00:13:52
El main sigue llamando a mostrar ítems.
00:13:54
Y el desarrollador y programador se abre pedido y lo cambia aquí.
00:13:56
Y lo cambia solo ahí.
00:14:00
Y ya está, solo tiene que cambiar ahí.
00:14:02
Y no tiene que irse a los tropecientos main,
00:14:04
porque todos llaman directamente a ese.
00:14:06
Todos llaman a mostrar ítem.
00:14:08
¿Vale?
00:14:12
Entonces, no solo tiene que quedar claro cómo hacer las
00:14:13
cosas, sino por qué se hacen así.
00:14:16
Se hacen así porque si yo reproduzco este código en 20
00:14:22
sitios, pues, a 20 sitios me voy a tener que ir a cambiarlo.
00:14:25
Pero si lo tengo solo aquí y lo llamo desde donde sea,
00:14:28
solo tengo que cambiar aquí en caso de necesitar un cambio.
00:14:32
Vale, pues, lo que hemos hecho hasta aquí está claro.
00:14:42
¿Sí?
00:14:45
Vale, vamos a seguir con funcionalidades.
00:14:46
Vamos a meternos ahora con lo de Static,
00:14:47
que en el fondo era lo que incorporamos ahí,
00:14:50
lo que más nos se ve interesando.
00:14:53
Bueno, pues, a ver, en nuestro main tenemos por ahora aparcado
00:14:54
eliminar pedido, que será llamar al método,
00:15:00
mostrar precio de un pedido, será llamar también un método.
00:15:02
Los tenemos ahora mismo aparcados.
00:15:05
El 6 lo hemos hecho.
00:15:07
Vámonos al 7, que es, vamos a fijar el IVA de mi aplicación.
00:15:09
Ahora mismo el IVA de mi aplicación decidimos guardarlo
00:15:15
aquí como decisión de diseño, porque el IVA es un concepto que
00:15:21
aplica los precios de los pedidos.
00:15:27
Entonces, como aplica los precios de los pedidos,
00:15:29
el IVA solo tiene sentido que exista si existen pedidos.
00:15:31
Entonces, su ubicación tiene sentido que sea ahí, ¿vale?
00:15:34
Eso fue una decisión de diseño.
00:15:38
Y, de nuevo, tenía sentido decidir que fuera estática,
00:15:40
porque como iba a ser igual para todos,
00:15:43
todos los pedidos iban a tener el mismo valor en esta variable,
00:15:45
pues, ¿para qué hacer una copia en todos?
00:15:48
No, una única copia de la que tiren todos, ¿vale?
00:15:50
A diferencia de código de descripción.
00:15:54
En código de descripción cada pedido tiene su propia copia,
00:15:56
pero en IVA hay una copia común para todos, pues, a la estática.
00:15:59
Venga, pues, ahora habrá una funcionalidad por aquí que es
00:16:03
fijar el IVA de la aplicación.
00:16:07
Pues, venga, hacemos esa funcionalidad.
00:16:09
El caso 7 este de aquí.
00:16:13
Pues, habrá que pedir, ¿qué IVA quieres?
00:16:15
Vale.
00:16:21
Lo leeremos.
00:16:28
El IVA, no sé si lo habíamos declarado común o double.
00:16:30
Yo creo que común por seguridad, por comodidad.
00:16:33
Pues, nada, lo leemos aquí.
00:16:36
Y ahora ya, joder, scannex, acabo de preguntar que era int y
00:16:38
le pongo el double.
00:16:51
Vale.
00:16:52
Y ahora ya, ¿qué queremos hacer con ese valor que hemos leído?
00:16:54
Fijarlo en la propiedad estática IVA de los pedidos.
00:16:56
A esa propiedad estática, como es una propiedad de la clase
00:17:01
pedido, en general, las propiedades se acceden con el
00:17:05
nombre del objeto.
00:17:09
Pero aquí es que nos da igual.
00:17:11
Acceder con él, por ejemplo, podríamos hacer esto,
00:17:13
por ejemplo, ¿vale?
00:17:17
Y estaríamos haciéndolo p0.iva pedidos.
00:17:19
No, se llama en la raya pedidos, ¿verdad?
00:17:26
Vale.
00:17:33
Esto estaría bien porque yo he cogido un objeto pedido,
00:17:33
en particular, el que está en posición cero,
00:17:36
y a través de él accedo a IVA.
00:17:39
Pero es que también estaría bien,
00:17:43
sería exactamente lo mismo si yo hago esto.
00:17:45
A ver, siempre y cuando en esas posiciones haya pedidos,
00:17:48
porque si hay null, me va a dar un null.interception, ¿no?
00:17:51
Me da igual acceder a un objeto que de otro que de otro,
00:17:55
porque todos se acceden a la misma variable.
00:17:58
Entonces, por eso, la forma de acceder,
00:18:00
las variables estáticas, aunque se puede a través de un objeto
00:18:03
concreto, no era a través de un objeto concreto,
00:18:08
sino a través de qué, del nombre de la clase.
00:18:11
Y como la clase se llama pedido, pues esta es la forma más
00:18:16
bonita y más segura de acceder a esta propiedad.
00:18:21
¿Y por qué es la más segura?
00:18:29
No solo es la más bonita, está claro que es la más bonita.
00:18:30
¿Pero por qué es la más segura?
00:18:34
Porque imagínate que yo fijo el IVA al principio de todo.
00:18:36
Al principio de todo, no hay ningún objeto pedido todavía.
00:18:39
Luego, P0 es null, P1 es null, P2 es null.
00:18:42
Entonces, si yo hago P0.iva, me va a salir null.interception.
00:18:45
Porque si hago objeto null, punto,
00:18:49
lo que sea null.interception.
00:18:50
Pero si hago pedido IVA, ¿qué es lo que hace la máquina
00:18:52
virtual?
00:18:55
Pues lo que dijimos ayer.
00:18:56
Dice, ah, no hay ningún objeto todavía.
00:18:58
No pasa nada.
00:19:00
La propiedad IVA puede existir aunque no haya ningún objeto.
00:19:01
La hace aparecer y aparece ahí la propiedad IVA,
00:19:05
aunque no exista ningún objeto.
00:19:08
Entonces, ahí nunca va a salir null.interception.
00:19:11
Que luego después aparecen objetos, vale.
00:19:13
Pues los objetos están asociados a esa propiedad.
00:19:15
Pero la propiedad puede existir en memoria a través de este
00:19:18
nombre, aunque no exista ningún objeto.
00:19:22
Y esas propiedades estáticas que existen para una clase,
00:19:26
aunque no existan objetos, es lo que se llama,
00:19:31
lo que llamamos ayer el contexto estático de una clase.
00:19:34
O sea, el contexto estático de una clase son todas sus
00:19:37
propiedades estáticas, todas las que tengan.
00:19:40
0, 1, 2, 3, ese es el contexto estático.
00:19:43
Y el contexto estático de una clase puede existir aunque no
00:19:45
existan objetos.
00:19:48
No pasa nada.
00:19:49
¿Vale?
00:19:51
De hecho, si nosotros ejecutamos esta aplicación sin haber
00:19:53
creado ningún objeto todavía, la ejecutamos otra vez.
00:19:57
Y vamos a directamente darle la opción de fijar el IVA,
00:20:02
directamente a las 7.
00:20:04
No hay ningún objeto.
00:20:05
18, ala, pues el IVA ya se ha quedado fijado.
00:20:07
Y todavía no hay ningún objeto.
00:20:10
Ahora ya podemos empezar a crear pedidos si queremos.
00:20:12
Vale, pues, bueno, vamos a parar un momento.
00:20:15
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 5
- Fecha:
- 16 de enero de 2024 - 21:37
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 20′ 22″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 95.74 MBytes