Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Clase 16-01-24 - 2 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 16 de enero de 2024 por Raquel G.

5 visualizaciones

Descargar la transcripción

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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid