Saltar navegación

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

Clase 16-01-24 - 3 - 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.

6 visualizaciones

Descargar la transcripción

¿Vale? 00:00:00
Esto es un método que hicimos ayer, genérico, 00:00:02
para hacer la suma acumulativa de los precios de los pedidos. 00:00:05
¿Vale? 00:00:08
Entonces, ahora nos podemos aprovechar de él. 00:00:08
Ahora ya podemos aprovecharnos de él para llamarlo ya en la 00:00:11
aplicación. 00:00:14
Porque la aplicación resulta que para pedidos de i tiene que 00:00:15
llamar a ese método. 00:00:19
Pues, ala, estupendo. 00:00:20
Entonces, pedidos de i puede llamar a su método devolver 00:00:22
precio total. 00:00:28
Lo que pasa es que este método no te lo muestra por consola. 00:00:30
Lo hicimos de tal forma que te lo devolviera en un retunco 00:00:34
valor de retorno. 00:00:37
Entonces, al devolverlo en un retunco valor de retorno, 00:00:38
tenemos que asignárselo a algún sitio para luego mostrarlo por 00:00:42
consola o lo que queramos. 00:00:45
Entonces, bueno, de nuevo, ¿para qué guardarle una variable 00:00:46
intermedia y luego hacer el system out de la variable? 00:00:49
Vamos a pasárselo directamente al system out y ya está. 00:00:52
Pero podríamos guardar la variable intermedia y luego 00:00:56
llamar al system out dándole la variable intermedia. 00:00:59
Hombre, pues, venga, no merece la pena. 00:01:01
Directamente. 00:01:03
Pues, nada, le voy a tener que escribir entero. 00:01:12
No, espérate, voy aquí abajo y ahora sí. 00:01:14
Vale, pues, lo escribo. 00:01:19
Lo escribo todo esto aquí, ¿vale? 00:01:20
Entonces, devolver precio total me devuelve el precio. 00:01:33
Ya está, me lo devuelve él, ya se la suma, 00:01:36
hace todo lo que tenga que hacer. 00:01:38
Y el valor de retorno, con ese valor de vuelta, 00:01:39
hago lo que quiera. 00:01:42
Se lo asigna una variable. 00:01:43
En este caso, en lugar de asignárselo a una variable, 00:01:45
se lo paso a su vez, como parámetro, 00:01:48
al system out println. 00:01:51
Fijaos que println es un método también. 00:01:53
No lo hemos hecho nosotros, es un método de la clase system 00:01:55
out, pero es un método también al que le pasamos un valor y lo 00:01:58
que hace es mostrarlo por consola. 00:02:01
Vale, pues, ya está, esa putería ya estaría. 00:02:07
¿Que queremos mostrar el precio con IVA? 00:02:14
Pues, es que teníamos un método que lo mostraba con IVA en la 00:02:16
clase pedido, que era este de aquí, 00:02:19
que era como el anterior, pero sumando el porcentaje este del 00:02:23
IVA. 00:02:28
Pues, entonces, la funcionalidad 5, 00:02:30
que es la de mostrar precio con IVA, 00:02:36
es igualita que la 4, igualita, pero en lugar de llamar al 00:02:38
método devolver precio total, devolver precio total con IVA. 00:02:42
Entonces, la funcionalidad 5, en realidad, 00:02:46
es un copia y pega de esta, cambiando el nombre del método. 00:02:48
La funcionalidad 5 es esto, pero en lugar de devolver precio 00:02:53
total, pues, aquí será devolver precio total con IVA. 00:02:59
Es la única diferencia entre los 2. 00:03:06
Claro, porque, efectivamente, porque en todas ellas, 00:03:13
si el pedido no existe, se queda callado. 00:03:18
Y como es un poco feo que se quede callado, pues, 00:03:20
en todas ellas convendría, efectivamente, 00:03:22
poner esa comprobación a través de un Boolean. 00:03:24
Lo mismo, claro, claro, lo mismo, es lo mismo. 00:03:28
Cambiando el método al que llamas, claro, 00:03:33
el único que cambia, el método al que llamas, ¿vale? 00:03:36
Bueno, pues, de esto va el rollo. 00:03:43
Vamos a ejecutarlo por si hemos escrito algo mal. 00:03:45
Creamos un pedido. 00:03:52
Introduzca código 1, descripción, descripción 1. 00:03:53
Voy a crear otro pedido más. 00:03:56
Introduzca código 2, descripción 2. 00:03:59
Tengo 2 pedidos. 00:04:01
Venga, voy a añadir un ítem al pedido 2. 00:04:04
Venga, al pedido 2 voy a añadirle el ítem, 00:04:07
descripción del ítem. 00:04:11
Pues, bolis que quiero 3 y precio unitario 5. 00:04:14
3 por 5, 15, va a costar. 00:04:20
Vale, voy a añadir otro ítem más a este, al 2. 00:04:22
Ítem, pues, ala. 00:04:28
Le voy a poner 4 gomas por 6. 00:04:31
6 por 4, 24 más el 15 de antes. 00:04:34
Bueno, lo que sé. 00:04:37
Ala, el pedido 2 ya tiene 2 ítems. 00:04:39
Vamos a mostrarlo, a ver si es verdad. 00:04:42
Vamos a hacer la funcionalidad 6 y vamos a mostrar lo que tiene 00:04:44
el pedido 2. 00:04:49
El pedido 2, efectivamente, tiene los que acabo de meter. 00:04:51
Vale, funciona. 00:04:55
Tiene los que acabo de meter, los bolis y las gomas. 00:04:56
Entonces, cuando haga el precio total, sin IVA, 00:04:58
tendrá que salir 15 más 24, que son 39, ¿verdad? 00:05:00
Pues, vamos a ver. 00:05:07
Vamos a mostrar el precio de un pedido 2. 00:05:08
Pues, efectivamente, 39. 00:05:15
Y si yo muestro el precio del pedido con IVA, 00:05:17
me va a salir igual porque no he fijado el IVA. 00:05:19
Con lo cual, el valor por defecto del número es 0. 00:05:21
O sea, si yo muestro ahora el precio del pedido con IVA, 00:05:23
del pedido 2, pues, me vuelve a salir 39 porque el IVA es 0. 00:05:28
Vamos a fijarle un IVA. 00:05:33
Venga, vamos a fijarle como IVA un 10%. 00:05:34
Ala, el IVA ya está al 10%. 00:05:37
Pues, vamos a volver a mostrar el precio de este pedido 2. 00:05:39
Pues, ahora ha subido, 42,9, justo. 00:05:46
Ha aumentado el 10% de IVA, que son los 3,9. 00:05:49
Vale, pues, la aplicación ya estaría completa a falta de la 00:05:54
funcionalidad 3, eliminar ítem, con el método eliminar ítem, 00:05:57
que es lo que dejo ahí para que se os quede algún hueco de 00:06:00
trabajo. 00:06:05
Ala, 8 salimos y ya está. 00:06:07
Bueno, pues, esta es la base de la aprobación de entrada de 00:06:12
objetos, la base. 00:06:16
A partir de aquí, de nuevo, hay que ir poniendo capas y capas y 00:06:18
capas y capas de herencia, interfaces, implementaciones, 00:06:21
colecciones, un montón de capas. 00:06:26
Nos quedan por añadir, muchas. 00:06:28
Pero, para que esas capas no monten ahí un berenjenal enorme, 00:06:30
que esta base quede muy clara, por favor. 00:06:36
¿Vale? 00:06:39
¿Tú ya has conseguido que te funcione? 00:06:43
No lo puedo creer. 00:06:44
Bueno, se añade el precio de 42,9. 00:06:45
Bueno, luego yo voy a ver. 00:06:50
O sea, me muestra el nombre del pedido, 00:06:53
pero no me muestra lo existente ahí. 00:06:55
Habría que mirarlo, ¿vale? 00:06:59
Luego, al final, intento sacar tiempo para mirarlo. 00:07:02
Vale. 00:07:06
Pero vamos, a ver. 00:07:10
Pues, venga, vámonos de nuevo a pedido. 00:07:15
Vale. 00:07:28
Vamos a seguir ampliando un poquito con esas pequeñas capas 00:07:28
que os digo un poquito, solo. 00:07:34
Venga, vamos a volver a pedido, que es la única clase que 00:07:36
tenemos junto con ítem, ¿vale? 00:07:38
Pues, venga, volvemos a la clase pedido, 00:07:42
que tiene 3 propiedades normales y una estática, ¿vale? 00:07:44
Para que os suene la terminología, 00:07:53
porque la ayuda que puede tener el entorno de desarrollo 00:07:56
Eclipse o cualquier otro, cuando leáis cosas, 00:07:59
pues, las propiedades que son propias del objeto, 00:08:02
las normales, se suelen llamar variables de objeto. 00:08:05
Y las estáticas se suelen llamar variables de clase, ¿vale? 00:08:10
Las propiedades estáticas se las llama a veces variables de 00:08:14
clase porque pertenecen a todos los objetos de la clase. 00:08:16
Y las propiedades normales se las llaman propiedades de 00:08:20
objeto, porque son de un objeto en particular. 00:08:22
Pero, bueno, con eso os iréis familiarizando según vayáis 00:08:26
viendo cosas. 00:08:29
Vale, pues, esta clase pedido tiene 4 propiedades, 00:08:31
3 de ellas son propias de cada objeto. 00:08:33
Y una de ellas es común para todos los objetos. 00:08:36
Es una propiedad estática, ¿vale? 00:08:39
Bueno, pues, ahora vámonos al método de abajo de fijar IVA. 00:08:42
Vamos al método este que yo llamé set IVA para fijar un 00:08:47
valor concreto a esta propiedad. 00:08:58
Entonces, yo este método lo dejé así y no pasa nada. 00:09:02
Como veis, funciona. 00:09:04
Está todo bien. 00:09:05
Pero ahí ya alguno vería que sea una cosa amarilla, 00:09:07
que eso siempre queda feo. 00:09:10
No significa que las cosas no funcionen. 00:09:12
Pero, bueno, ya como que despierta una bombilla, ¿no? 00:09:14
Y yo dejé ese amarillo ahí, ¿eh? 00:09:16
¿Qué dato? 00:09:19
Tiene una advertencia interna. 00:09:21
Claro, como que te advierte y dice, uf, bueno. 00:09:23
Vale, pues, ¿de qué nos está advirtiendo? 00:09:27
Vamos a ver. 00:09:29
Vamos a ver. 00:09:31
Este método tiene una peculiaridad que lo hace muy 00:09:34
distinto de este, por ejemplo. 00:09:39
Vale, esto es importante de nuevo entender. 00:09:41
Este método trabaja con la propiedad ítems y pedido del 00:09:43
objeto, con lo cual este método de volver precio total, 00:09:49
todos tenemos claro, que funciona de forma distinta si 00:09:52
lo llama el objeto P1 o si lo llama el objeto P2 o si lo 00:09:56
llama el objeto P3, por supuesto, 00:09:59
porque P1 tiene un valor aquí, P2 tiene otro y P3 tiene otro. 00:10:00
Entonces, si lo llama P1, va a hacer una cosa, 00:10:05
porque esta variable tiene su propio valor. 00:10:09
Pero si lo llama P2, va a hacer otra, 00:10:11
porque esta variable tiene un valor distinto, la de P2. 00:10:14
Y si lo llama P3, va a hacer otra, 00:10:16
porque esta variable tiene otro valor, el de P3. 00:10:19
Eso es como funcionan los métodos, ¿verdad? 00:10:22
Los métodos trabajan con las propiedades del objeto, 00:10:24
con lo cual este método va a hacer cosas distintas en 00:10:27
función del objeto que lo llame. 00:10:31
Está claro. 00:10:33
Pero este método de arriba no le pasa eso, 00:10:35
porque este método de arriba no usa ninguna propiedad propia 00:10:37
del objeto. 00:10:42
No usa ni código ni descripción de ítems. 00:10:44
Este método solamente está usando el getIva, 00:10:47
que lo he perdido. 00:10:51
¿Dónde está el setIva? 00:10:52
Aquí está. 00:10:59
Ese método solo está usando la propiedad IVA, solo. 00:11:01
Más el parámetro, por supuesto, que le llega por aquí. 00:11:05
Con lo cual, ese método, me da igual que lo llame P1, 00:11:08
que lo llame P2, que lo llame P3, me da igual, 00:11:12
porque no está usando propiedades propias del objeto. 00:11:14
Está usando la propiedad que es igual para todos, 00:11:17
la compartida por todos solamente, ¿no? 00:11:19
Luego, este método va a hacer exactamente lo mismo, 00:11:22
lo llame P1, lo llame P2, lo llame P3, va a hacer lo mismo, 00:11:26
porque no trabaja con las propiedades propias de cada 00:11:29
objeto, solo con las comunes. 00:11:31
Luego, da igual el objeto que lo llame, 00:11:33
da igual, porque va a hacer lo mismo. 00:11:35
Hasta ahí está claro. 00:11:37
Bueno, pues un método que hace lo mismo, 00:11:39
lo llame el objeto que lo llame, se convierte en lo que se llama, 00:11:42
por definición, en un método estático. 00:11:47
Es decir, me da igual el objeto que me llame, 00:11:50
yo voy a hacer lo mismo, porque como no uso variables de 00:11:52
objeto, solo uso variables estáticas, me da igual. 00:11:54
Entonces, cuando uno identifica, cuando está programando, 00:11:58
cuando uno identifica que ha hecho un método así, 00:12:01
que solo usa variables estáticas, 00:12:04
no usa variables de objeto, dice, ah, 00:12:06
este método es estático. 00:12:07
Entonces, hace una cosa muy buena que facilita gran parte del 00:12:09
desarrollo de código, que es avisar y ponerlo como estático. 00:12:14
¿Y cómo lo pone? 00:12:18
Pues, delante del valor de retorno y después del public, 00:12:19
pone esto, estático. 00:12:22
¿Vale? 00:12:26
Primera parte, pone eso. 00:12:27
Pero el rojo de abajo ya lo quitamos. 00:12:29
Pone eso, estático. 00:12:32
Y eso significa que este método se convierte en estático, 00:12:34
o lo que es lo mismo, que solo usa variables estáticas. 00:12:36
Hombre, o variables locales que se cree él, 00:12:41
pero en cualquier caso, no variables del objeto, 00:12:43
nunca variables del objeto. 00:12:46
¿Vale? 00:12:48
Y la implicación que tienes es esa, 00:12:49
que da igual el objeto que me llame, da igual, 00:12:51
yo voy a hacer lo mismo siempre, porque no uso variables propias 00:12:52
del objeto. 00:12:55
Entonces, se convierte en estático. 00:12:56
Entonces, al convertirse en estático, 00:12:57
esto ya tiene varias implicaciones a la de 00:13:00
programarlo. 00:13:01
Primero, que ahora ya este disk de aquí, 00:13:03
este disk no me deja ponerlo. 00:13:06
Esto es un tema de sintaxis. 00:13:08
No me deja ponerlo porque dice, oye, eres un método estático. 00:13:10
Da igual el objeto para que lo llames. 00:13:13
Dime IVA directamente y ya está. 00:13:17
¿Vale? 00:13:20
Dime IVA directamente y ya está. 00:13:21
Pero aquí llega la otra famosa confusión, 00:13:24
que yo a esta variable, a este parámetro, 00:13:28
lo he llamado igual que la variable estática de arriba. 00:13:31
Pero en este caso no me deja distinguirlo con el disk. 00:13:34
¿Cómo creéis, cómo se os ocurre que podría yo decir que esta es 00:13:37
la variable estática IVA de la clase pedido? 00:13:41
Poniendo pedido, efectivamente. 00:13:46
Bueno, cambiando el nombre, claro. 00:13:48
Pero si no le quiero cambiar el nombre, 00:13:49
tienen su significado, significan cosas. 00:13:51
Así. 00:13:54
Porque así es como, ¿verdad? 00:13:55
Es que si cambias el nombre de algo, le cambias su esencia. 00:13:58
Vale. 00:14:06
Bueno, pues revisamos entonces lo que hemos hecho sobre métodos 00:14:07
estáticos, ¿vale? 00:14:10
Incorporamos ahora ese concepto. 00:14:10
El concepto de método estático. 00:14:13
Un método estático es un método que me da igual el objeto que lo 00:14:16
llame. 00:14:19
Me da igual que lo llame p1, que lo llame p2, que lo llame p3, 00:14:20
me da igual, porque va a hacer lo mismo. 00:14:23
Entonces, para que un método estático haga lo mismo, 00:14:25
entonces es imposible que use variables de clase. 00:14:28
Perdón, variables propias del objeto es imposible. 00:14:31
Porque si usa variables propias del objeto, 00:14:34
va a actuar de forma distinta. 00:14:36
Si lo llama un objeto, lo llama otro. 00:14:38
De hecho, si a mí me da la gana y decir, oye, 00:14:40
devolver precio total con IVA. 00:14:43
Le voy a poner estático porque se me antoja, 00:14:45
me da la gana ponerle estático. 00:14:47
A este me va a decir, ¿pero qué me estás contando? 00:14:49
Me dice, si tú quieres que yo sea en método estático, 00:14:52
perdona, entonces no uses una propiedad del objeto. 00:14:56
Pero esta idiota dice, no puede ser. 00:14:59
¿Cómo voy a ser yo un método estático y luego usar una 00:15:01
propiedad del objeto? 00:15:04
Entonces, ¿no sería estático por definición? 00:15:05
Porque esta propiedad depende del objeto. 00:15:07
Es diferente para p1 o para p2 o para p3, 00:15:09
con lo cual yo voy a funcionar de forma distinta. 00:15:12
Si trabajas con p1, con p2, con p3, entonces dice, oye, no. 00:15:14
Si quieres que sea estático, no uses propiedades del objeto. 00:15:19
Claro, es que yo a ese método nunca le pondría el estático 00:15:22
porque no lo es. 00:15:25
Pero al de arriba sí que se lo puedo poner porque el de arriba 00:15:30
no usa ninguna propiedad del objeto. 00:15:32
Al de arriba se lo puedo poner y se lo debo poner. 00:15:34
Cuando ya se lo he puesto y he identificado que es estático, 00:15:37
ahora ya el this ya no me deja usarlo, no tiene sentido. 00:15:41
Porque el this significa el objeto que está llamando al 00:15:45
método. 00:15:48
Pero es que en este caso da igual el objeto que llame al 00:15:50
método porque va a funcionar igual en todos. 00:15:53
Entonces, me da igual el objeto que llame al método. 00:15:55
Por eso no te deja usar el this. 00:15:57
Lo incorpora ya en la sintaxis, ese concepto lo incorpora. 00:16:00
Y cuando tú te refieres a la variable estática, 00:16:03
la llamas con su clase y ya está. 00:16:05
Como se llaman las variables estáticas, 00:16:07
con el nombre de su clase. 00:16:09
Si el parámetro tuviera otro nombre, 00:16:11
es que no haría ni falta. 00:16:13
Imaginaos que este parámetro yo lo llamo IVA1, IVA1. 00:16:14
Pues, entonces, ahora es que aquí no haría ni falta. 00:16:19
Porque aquí ya no hay confusión. 00:16:23
Como se llaman distinto, no hay confusión. 00:16:25
IVA es la propiedad de arriba e IVA1 es el parámetro. 00:16:26
No habría confusión. 00:16:30
Pero yo lo he llamado a propósito igual para tener que 00:16:32
cambiarse. 00:16:37
Lo que yo lo llamo igual, aquí hay una pedazo confusión 00:16:38
impresionante. 00:16:42
¿IVA quién es? 00:16:43
Pues, IVA siempre sería el parámetro. 00:16:43
Oye, ojo, que este no quiero que sea el parámetro. 00:16:46
Este quiero que sea la propiedad de arriba. 00:16:48
Pues, llámala con su nombre completo. 00:16:51
Llámala con su nombre completo. 00:16:52
Pedido.IVA. 00:16:55
¿Vale? 00:16:56
¿Vale? 00:17:01
Bueno, pues, estos son los métodos estáticos. 00:17:02
Y ahora vendría la pregunta, oye, 00:17:05
¿por qué dices que es recomendable y que hay que poner 00:17:07
el estático delante? 00:17:09
Pero si yo lo tenía antes y la aplicación sonaba perfectamente, 00:17:10
¿estupendo? 00:17:13
Hombre, vale, sí, todo era estupendo. 00:17:15
Pero la ventaja de un método estático es que como funciona 00:17:17
igual lo llame el objeto que lo llame, 00:17:20
lo puedes llamar incluso sin que exista ningún objeto. 00:17:23
Sin que exista ninguno. 00:17:26
Como a la variable IVA, que la podíamos llamar aunque no 00:17:27
existiera ningún objeto. 00:17:29
Podríamos hacer pedido.IVA igual a tal. 00:17:30
Pues, los métodos estáticos tienen esa ventaja. 00:17:33
Que funcionan como funciones genéricas, 00:17:36
no asociadas a ningún objeto. 00:17:38
Y lo puedes llamar aunque no existan los objetos. 00:17:40
Entonces, me permiten hacer eso que en tiempo remoto se llamaba 00:17:44
funciones de librería. 00:17:48
Tú metes un código, una función y lo llamas sin más. 00:17:50
Y ahí no hay ningún objeto asociado ni hay nada. 00:17:53
Esa es la gran ventaja. 00:17:56
Y la llamas sin más. 00:17:58
¿Vale? 00:18:03
Vamos a llamar a este método de esa manera. 00:18:04
Vámonos otra vez a fijar IVA. 00:18:11
Fijar IVA nuestro main, nuestra funcionalidad fijar IVA. 00:18:13
Y luego ahora hacemos un ejemplo que se vea mejor. 00:18:16
En nuestra funcionalidad fijar IVA habíamos fijado el IVA 00:18:18
directamente así. 00:18:20
Pero vamos a suponer que queremos llamar al método set 00:18:22
IVA este de aquí. 00:18:25
El método set IVA este de aquí que yo he llamado, 00:18:27
le pasamos por un parámetro esto que hemos leído, ¿vale? 00:18:30
Y el método set IVA al ser estático lo puedo llamar 00:18:39
asociado al nombre de la clase directamente. 00:18:43
Este método no lo llamo asociado a ningún objeto. 00:18:47
No, porque da igual el objeto que lo llame, da igual. 00:18:51
Como es estático va a hacer lo mismo, da igual. 00:18:54
Pues lo llamo asociado al nombre de la clase. 00:18:56
Y esa es la ventaja de los métodos estáticos que son como 00:19:01
métodos genéricos que tú los llamas asociados al nombre de 00:19:03
una clase y te hacen lo que tú hayas puesto, 00:19:05
independientemente de ningún objeto en particular. 00:19:08
Y los hemos estado usando con el math.random, 00:19:13
el math.no sé qué. 00:19:15
Ahora vamos a ello para que quede claro. 00:19:17
A ver, no es que sea obligatorio llamar los métodos 00:19:21
estáticos así. 00:19:24
Yo puedo llamarlo asociado a un nombre de objeto si me da la 00:19:25
gana. 00:19:27
Yo puedo hacer esto si quiero, ¿vale? 00:19:28
P0, ¿qué son pedidos? 00:19:31
Pedidos de cero, punto, joder, ¿vale? 00:19:35
SetIva. 00:19:41
Yo puedo hacer esto si me da la gana. 00:19:45
Estoy llamando al método igual. 00:19:47
Lo está llamando un objeto, pero es que da igual, 00:19:50
el objeto no pinta nada. 00:19:52
El objeto no pinta nada porque este método no usa las 00:19:53
propiedades de este objeto. 00:19:56
Solo usa la propiedad global Iva. 00:19:58
Con lo cual, me da igual que me llame pedidos de cero, 00:20:01
que me llame pedidos de uno, es que me da igual. 00:20:03
De hecho, por eso se pone en amarillo. 00:20:05
Te dice, oye, qué feo. 00:20:06
SetIva es un método estático. 00:20:07
Llámale con el nombre de la clase. 00:20:09
No me llames con el nombre de un objeto. 00:20:10
Si tú tal, da igual que lo llames. 00:20:12
Vale, pues la forma buena y bonita de llamarlo es la de 00:20:14
arriba, en la que se ve claro que ese método lo que hace no 00:20:17
tiene nada que ver con ningún objeto. 00:20:21
Esto, pues, no lo usaríamos. 00:20:28
También porque, de hecho, nos ahorraríamos futuros null 00:20:35
pointer exception, si es que este objeto no tiene null. 00:20:38
Bueno, pues los métodos estáticos nos abren un mundo 00:20:46
de posibilidades. 00:20:50
Por ejemplo, como ya sabéis, porque lo hemos usado, 00:20:51
resulta que la máquina virtual de Java, que es esta, 00:20:55
es decir, a ver, nosotros, aparte de nuestras 3 clases, 00:21:04
ítem, pedido y main, aparte de esas clases, 00:21:13
tenemos clases a las que podemos acceder que están metidas en 00:21:17
nuestro proyecto, aunque no lo sepamos, que están metidas, 00:21:20
que están todas aquí, donde pone JR. 00:21:24
Fijaos la cantidad de clases que tenemos. 00:21:28
Por ejemplo, aquí, solo aquí, tropecientas, todas estas. 00:21:30
Es decir, cuando hacemos un proyecto, 00:21:36
el proyecto no tiene solo nuestras clases. 00:21:38
Tiene mogollón metidas en eso que está bajo el paraguas de 00:21:40
JR. 00:21:44
Tiene mogollón. 00:21:44
Y esas clases tienen cosas. 00:21:46
De esas clases podemos instanciar objetos, 00:21:48
por ejemplo, de scanner, que también está por ahí. 00:21:50
Hemos iniciado un new scan. 00:21:52
Pero es que hemos hecho más cosas aparte del scanner. 00:21:54
Por ejemplo, si uno baja por aquí, 00:21:56
encuentra la clase math. 00:21:59
Esta clase no la hemos hecho nosotros, pero está ahí. 00:22:03
La podemos usar. 00:22:05
Vale. 00:22:06
Pues, si entramos en esta clase, que es esta de aquí, 00:22:07
la clase math, esta clase no la hemos hecho nosotros. 00:22:18
Está hecha, pero la podemos usar. 00:22:25
Pues, esta clase tiene cosas maravillosas. 00:22:27
Entre ellas, un montonazo de métodos con el static delante. 00:22:29
¿Y qué significa aquellos métodos con el static delante? 00:22:34
Que los puedo llamar con el nombre de la clase para hacer 00:22:37
cosas. 00:22:39
Por ejemplo, que hago math.coseno, 00:22:40
pasándole, pues, me devuelve el coseno como valor de retorno, 00:22:43
el retorno. 00:22:46
¿Vale? 00:22:47
¿Qué hago math.random? 00:22:48
Pues, por aquí tendré un método random que me hace lo que ya 00:22:50
hemos usado, la tangente. 00:22:52
Como veis, son todos estáticos. 00:22:54
Todos estáticos. 00:22:56
Y ahí tenemos, pues, de todo. 00:22:58
¿Vale? 00:23:02
Todos estos métodos los podemos usar si nos da la gana para 00:23:03
hacer millones de cosas matemáticas. 00:23:05
Y todos ellos son estáticos. 00:23:10
¿Por qué son estáticos? 00:23:13
Porque no usan propiedades de ningún objeto math concreto. 00:23:14
Es que no hace falta crear un objeto math concreto. 00:23:17
Porque no hace falta. 00:23:20
Tú usas la clase math, o sea, ya escribes la clase math, 00:23:22
y llamamos a sus métodos estáticos para hacer cosas, 00:23:26
que es lo que hemos hecho ya. 00:23:29
¿Vale? 00:23:31
Y quien dice la clase math con todos sus métodos estáticos 00:23:32
delante, dice millones de clases que hay por aquí que nos 00:23:35
permiten usar directamente métodos estáticos para hacer 00:23:40
cosas. 00:23:43
O instanciar objetos también, como Scanner, 00:23:45
que Scanner lo hemos instanciado. 00:23:47
No hemos usado métodos estáticos, lo hemos instanciado. 00:23:48
Bueno, pues, gracias a que están los métodos estáticos, 00:23:52
pues, podemos usar un montón de funcionalidades ya hechas de 00:23:54
otros, ya hechas sin crear objetos. 00:23:57
Voy a poner aquí, aunque ahora lo borre, aquí de este main. 00:24:01
Por ejemplo, cuando hemos usado el método random para hacer 00:24:05
cosas, o el de elevar una potencia a otra, por ejemplo, 00:24:08
voy a elevar un número a otro. 00:24:12
Que para eso la clase math tiene su método pw, ¿verdad? 00:24:14
O aquí, ¿dónde estoy? 00:24:24
Ah, debe ser que estoy fuera del método main, ¿no? 00:24:28
Y por eso se queja. 00:24:31
Vale, por ejemplo, yo aquí estoy. 00:24:34
De la clase math, llamando al método estático pw, 00:24:36
que es potencia, que es 3 elevado a 4. 00:24:40
El valor de retorno, que me devuelva el valor de retorno, 00:24:43
pues, hombre, lo debería guardar en algún lado, ¿no? 00:24:45
Para que esto tuviera algún sentido. 00:24:47
Vale, y si yo ahora aquí hago esto, pues, efectivamente, 00:24:53
me va a mostrar 3 elevado a 4. 00:24:56
Vale, hemos hecho la llamada al método estático este de la 00:24:58
clase math. 00:25:03
Si yo accedo, efectivamente, tengo este método. 00:25:05
Tengo un método estático pw, al que le paso 2 numeritos y me 00:25:09
devuelve como returns. 00:25:12
De hecho, la documentación está con los comentarios, 00:25:13
me lo está diciendo, todo lo que te hace, patatín, patatán. 00:25:16
Y la clave es que es estático. 00:25:19
Entonces, al ser estático, yo lo puedo llamar así, 00:25:21
con el nombre de la clase. 00:25:24
¿Qué me da la instancia de un objeto math? 00:25:27
Es que ni siquiera se me va a dejar instanciar porque 00:25:29
seguramente se ha privado el constructor. 00:25:31
Voy a ver si me deja instanciar un objeto math. 00:25:33
No creo que me deje porque habrá puesto el constructor privado. 00:25:36
Imagino, precisamente, para no dejar instanciar. 00:25:40
Justo, ¿ves? 00:25:43
Me dice, no es visible. 00:25:43
Mirad, ¿ves? 00:25:46
¿Recordáis cuando habíamos los modificadores de accesos? 00:25:48
Dije, puede tener sentido que el constructor sea privado. 00:25:52
En algunos casos te puede interesar no permitir que te 00:25:55
instancien. 00:25:57
Pues, hombre, a la clase math no le interesa que le instancien. 00:25:59
Si lo único que se va a usar de la clase math son métodos 00:26:02
estáticos, para eso no hay que crear ningún objeto. 00:26:04
Pones el nombre de la clase, la llamada, el método. 00:26:07
Entonces, lo prohíbes. 00:26:09
Dice, no, no, no, que nadie instancie math. 00:26:10
Si yo cambio eso y lo pongo public, 00:26:12
pues, ya sé que me dejaría instanciar. 00:26:14
Pero, ¿para qué? 00:26:15
¿Para qué voy a hacer eso? 00:26:16
Bueno, pues, entonces, si me dejara instanciar porque fuera 00:26:24
public, que no me deja, me daría igual hacer math.pou que 00:26:30
hacer esto. 00:26:35
Me daría lo mismo llamarlo con un objeto concreto que con el 00:26:36
nombre de la clase. 00:26:40
Pero, ¿para qué voy a crear un objeto? 00:26:41
Si no lo necesito para llamar al método. 00:26:43
No lo necesito. 00:26:44
Pues, ¿para qué voy a crear un objeto? 00:26:45
Lo llamo con el nombre de la clase y listo. 00:26:47
¿Vale? 00:26:50
Vale, pues, los métodos estáticos son, 00:26:50
como está claro, como podéis imaginaros, muy útiles. 00:26:59
Porque es que yo a veces necesito hacer código, 00:27:03
recoger código que es independiente de que existan 00:27:04
objetos, es independiente. 00:27:07
Y, de hecho, para, bueno, tenemos tiempo de sobra, 00:27:10
iba a decir, vamos a aprovechar, 00:27:16
ya que tenemos los métodos estáticos, 00:27:18
y vamos a olvidarnos de una vez por todas del problema este de 00:27:19
los escáner, que, uy, cuidado cuando lees, 00:27:22
que lees un número y luego lees un scanline, que no sé qué. 00:27:25
Vamos a hacernos unos métodos estáticos en una clase aparte 00:27:28
de utilidades de teclado que solucionen todo eso. 00:27:31
Y ahora ya los llamaremos y ya nos será mucho más fácil leer 00:27:34
por teclado. 00:27:39
Porque ya nos tenemos, nos vamos a olvidar de todo eso. 00:27:40
Vamos a aprovechar. 00:27:41
Vamos a aprovechar para hacernos nuestra propia librería de 00:27:42
métodos estáticos para cosas que nos son útiles. 00:27:46
Que eso es para lo que interesan. 00:27:48
Math es una librería de métodos para hacer cosas matemáticas. 00:27:50
Eso es lo que es math, una librería de métodos para hacer 00:27:52
cosas matemáticas. 00:27:54
Vamos a hacernos una nuestra nosotros para hacer lecturas por 00:27:56
teclado sin tener que estar todo el rato pendientes de hacer un 00:28:00
doble next line si he leído el número, etcétera. 00:28:05
Será una buena forma de poner en práctica los métodos estáticos. 00:28:08
¿Vale? 00:28:13
¿Vale? 00:28:14
Vale. 00:28:18
Pues, vamos a hacer esa librería. 00:28:19
Y ya de paso aprovechamos para ver cómo podemos exportarla e 00:28:20
importarla en los proyectos que nos dé la gana. 00:28:24
Que tiene que ver directamente con el tema de paquetes. 00:28:27
Vale. 00:28:30
Bueno, como esto va a ser un poquito largo, 00:28:31
¿me podéis descansar un poco? 00:28:34
Pues, venga, vamos a parar unos minutos. 00:28:36
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
6
Fecha:
16 de enero de 2024 - 21:41
Visibilidad:
Público
Centro:
IES ROSA CHACEL
Duración:
28′ 41″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
98.97 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid