Saltar navegación

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

Clase 15-01-24 - 1 - 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 15 de enero de 2024 por Raquel G.

5 visualizaciones

Descargar la transcripción

Vale, uno al que se le pasan los parámetros para que en el momento de crear el objeto 00:00:00
ya el objeto se cree con los valores y otro vacío por si uno quiere crear el objeto 00:00:08
pero todavía no tiene valores para los campos y los quiere dar más adelante. 00:00:13
Bueno, pues este solo es el aspecto típico de una clase entidad, el aspecto típico. 00:00:18
Vale, vamos a añadirle algo más para que sea un poquito más complicado. 00:00:25
Bueno, pues el que me explicó, el que me dijo que tenía necesidades de hacer esta aplicación 00:00:30
bueno, pues me dice, oye, a ver, que los pedidos pueden tener diferentes elementos. 00:00:34
Puede ser un pedido que tenga bolis, carpetas, etc. 00:00:40
Entonces yo en el pedido a lo mejor puedo incorporar cosas o quitar cosas. 00:00:44
Entonces eso como lo meto. 00:00:49
Entonces ahora ya viene, el cliente ya te ha soltado esto y ahora tú ya te pones a pensar 00:00:51
y dices, a ver, de qué manera puedo yo reflejar aquí en mi aplicación 00:00:57
que un pedido puede tener bolis, gomas, carpetas y de repente le quito las carpetas 00:01:01
y solo tiene bolis y gomas o a las bolis, gomas y carpetas ahora le quiero añadir 00:01:06
ordenadores, ¿cómo puedo reflejar yo esto? 00:01:11
Bueno, hay muchas alternativas, malas, buenas, peores. 00:01:15
Uno podría decir, uy, lo voy a meter en el string. 00:01:18
Hago un string separado con guiones, bolis, guion, carpeta, guion. 00:01:21
Ostras, pero añadir un pedido, vale, añadir un nuevo elemento de pedido, bueno, vale. 00:01:26
Es concatenarlo con un guion y el elemento. 00:01:34
Pero es un rollo, porque si tengo que hacer búsquedas, ¿este pedido tiene bolis? 00:01:36
Pues tengo que ir haciendo sub-string de mi string, a ver si tiene bolis dentro. 00:01:42
Vaya manera de hacer un diseño que luego te complica las búsquedas, ¿no? 00:01:46
De elementos y todo. 00:01:50
Y no solo eso, sino que además luego la aplicación en el futuro cambia 00:01:52
y te dicen, oye, de cada elemento de pedido, por favor, que la aplicación 00:01:55
también pueda recoger cuántos bolis ha pedido. 00:02:00
No solo si el pedido ha pedido bolis, no solo si el pedido tiene bolis, carpetas, 00:02:04
sino además que me recoja cuántos bolis tienen. 00:02:08
Ostras, pues con el diseño que yo tenía, que los elementos estuvieran en un string 00:02:11
separados por guiones, recoger eso se me complica. 00:02:16
¿Qué hago? ¿Añado a ese string el numerito? 00:02:19
Mira, se empieza esto ya a volver loco. 00:02:22
Entonces, ¿qué quiero decir con esto? 00:02:25
Que hay diseños buenos y malos, en el sentido de que nos pueden complicar 00:02:27
más o menos las funcionalidades y sobre todo nos pueden complicar más o menos 00:02:32
la ampliación de funcionalidades, la mejora del código. 00:02:38
Vale, pues en este caso, que el cliente te ha dicho, oye, que mi pedido puede 00:02:44
que tenga diferentes elementos. 00:02:48
Ahora ya entras tú, él ya se va. 00:02:50
¿Cómo recojo esto? 00:02:52
Hombre, pues entonces lo mejor es que hagas una clase para eso. 00:02:53
Que cada elemento de pedido sea parte de una clase, cada elemento de pedido. 00:02:56
Y así si en el futuro cada elemento de pedido, sea bolis, carpetas, 00:03:01
la aplicación se amplía y tienes que recoger para cada elemento de pedido 00:03:05
cuántos hay, cuánto valen. 00:03:09
Estupendo, como es un objeto le añades propiedades y ya está. 00:03:11
Bueno, pues entonces sería la opción que elegiríamos para esto. 00:03:15
Me han dicho que cada pedido tiene que incluir elementos de pedido. 00:03:18
Pues voy a hacer una clase aparte, una clase para reflejar ese concepto. 00:03:22
Elemento de pedido, o item, o como uno lo quiera llamar. 00:03:26
Y ahora ya mi clase pedido tendrá como propiedad el conjunto de esos. 00:03:31
Y se acabó. 00:03:36
Será un diseño siempre mucho mejor. 00:03:37
Un diseño mucho mejor. 00:03:39
¿Vale? 00:03:41
Que no meterlo todo en un string, que solo se va a acabar convirtiendo 00:03:42
en algo inmanejable. 00:03:45
Pues venga, vamos a hacer una clase aparte. 00:03:47
Una clase aparte, item, que es un nombre más cortito. 00:03:52
Vamos a llamar item. 00:03:57
Y ahora esto vendría como fruto de haber hablado con el cliente de cada item. 00:04:00
¿Qué nos interesa? 00:04:05
Pues podría ser la descripción y la cantidad. 00:04:07
Y ya está. 00:04:10
La descripción y la cantidad. 00:04:11
Pues venga, dos propiedades aquí. 00:04:15
La descripción va a ser un string. 00:04:17
Y la cantidad, pues un entero. 00:04:22
¿Vale? 00:04:30
Y ahora ya nos ponemos a hacer lo estándar, lo que siempre se hace. 00:04:31
Los constructores y los getter y los setter. 00:04:34
Hacemos el constructor usando los parámetros, que nos es muy útil siempre. 00:04:43
Super no va a hacer nada estando, pero lo quitamos. 00:04:49
Hacemos un constructor sin parámetros. 00:04:56
El super lo mismo. 00:05:01
Y los getter y setter. 00:05:07
Vale, ya tenemos aquí nuestro item. 00:05:20
Vale, entonces aquí vamos a reformular un poco esto. 00:05:25
Porque claro, esto del precio del pedido, hombre, tiene sentido. 00:05:29
Que el precio del pedido efectivamente sea la suma de lo que cuesta cada item. 00:05:34
¿No? 00:05:39
Entonces tiene mucho más sentido ahora que el precio esté en el item. 00:05:40
O sea, que el item diga un boli, cuesta esto, lo que cuesta. 00:05:45
Y ya el precio del pedido ya se podrá calcular. 00:05:49
Entonces, este precio aquí, vamos a quitar el precio en el pedido. 00:05:51
Porque con la nueva ampliación, el precio, su sitio es el item, el boli. 00:05:56
¿Cuánto cuesta el boli? 00:06:03
¿Cuánto cuesta el...? 00:06:04
Sí, pero los precios de los items los tienes que saber. 00:06:13
Entonces, tendrían que estar recogidos aquí. 00:06:16
Sí, pero el precio del pedido... 00:06:19
A ver, el precio... 00:06:21
Claro, pero el precio del pedido lo podrás tú obtener sumando el otro. 00:06:23
Entonces, ¿para qué duplicar la propiedad? 00:06:27
¿No? 00:06:30
Vale, entonces esta es una tarea habitual. 00:06:31
Tener que estar reformulando. 00:06:33
Según te van diciendo ampliaciones, tienes que estar reformulando. 00:06:34
¿Dónde ubico esto? 00:06:37
Entonces, claro, no es trivial el hacer un diseño que refleje lo mejor posible 00:06:38
cómo es la realidad. 00:06:45
Y la realidad es que lo que cuesta son las cosas sueltas. 00:06:47
Lo que cuesta es el boli. 00:06:51
Lo que cuesta es la goma. 00:06:52
Lo que cuesta es no sé qué. 00:06:53
Eso es lo que cuesta dinero. 00:06:55
Entonces, tiene sentido que el precio vaya ahí. 00:06:56
¿Que se puede hacer otro diseño? 00:06:59
Claro que se puede hacer. 00:07:01
Vale, entonces, si ponemos aquí el precio, 00:07:05
ahora el constructor con parámetros le falta un parámetro. 00:07:08
Bueno, vamos a añadírselo ahí. 00:07:13
No pasa nada. 00:07:15
Vale, no hace falta que lo generemos otra vez con el eclipse, 00:07:16
que no somos tontos. 00:07:19
Ya sabemos lo que hace el constructor con parámetros. 00:07:20
Recibe un parámetro por cada propiedad y los usa para inicializar. 00:07:23
Ahora el constructor ya está. 00:07:39
El constructor ya ha incorporado esta propiedad. 00:07:43
Vale, se le pasa por aquí. 00:07:49
Porque cuidado, que porque a veces usamos el eclipse 00:07:52
para generar código automáticamente, 00:07:55
no perdamos de vista nunca lo que estamos haciendo. 00:07:57
Vale, entonces, ¿qué falta aquí? 00:08:03
Falta un get y un set. 00:08:04
Vamos a hacerlo a mano. 00:08:07
No vamos a ser vagos y no lo vamos a... 00:08:08
Vamos a hacer a mano el get y el set del que nos falta. 00:08:10
Bueno, pues el get ya sabemos qué tipo de método es. 00:08:12
El get nos devuelve esa propiedad. 00:08:16
Luego tiene data del cuadro de retorno. 00:08:20
El get, si sigo la nomenclatura estándar que debo seguirla, 00:08:22
siempre es get, nombre de la propiedad empezando con mayúscula 00:08:27
y sin parámetros. 00:08:31
¿Y qué me hace el get? 00:08:33
Me devuelve la propiedad. 00:08:34
El eclipse, como veis, le... 00:08:37
Lo he hecho tal cual, ¿no? 00:08:44
Vale, pues ya está. 00:08:46
Ya he hecho el get. 00:08:47
Este método me devuelve el valor de esa propiedad 00:08:48
cuando yo lo invoque. 00:08:51
Y me falta el set para el precio. 00:08:53
De nuevo método público para que pueda ser llamado 00:08:55
desde fuera del paquete. 00:08:58
El set no devuelve nada porque lo que hace 00:08:59
es asignar un valor a la propiedad 00:09:03
No devuelve nada. 00:09:06
Y si sigo la nomenclatura, pues set seguido del nombre 00:09:07
de la variable empezando con mayúscula. 00:09:10
¿Y qué le tengo que pasar al set? 00:09:12
Un valor nuevo, un valor nuevo para esa propiedad. 00:09:14
Un valor nuevo. 00:09:19
Pues venga, un valor nuevo. 00:09:21
Y ahora ya, ¿qué hago con ese valor nuevo? 00:09:23
Se lo asigno a la propiedad. 00:09:26
Perdón, es dabble, sí. 00:09:31
Vale, pues ya he hecho los get y set que me faltaban. 00:09:36
Entonces estos métodos, de nuevo, están claros 00:09:44
a lo que sirven, cómo los hacemos, etc. 00:09:47
Son los que ya hemos estado trabajando otros días. 00:09:49
Vale, pues mi clase pedido ya aparentemente 00:09:52
tiene todo lo necesario para cumplir las tareas 00:09:57
que el cliente me ha dicho que tiene que cumplir. 00:10:02
Y en esas tareas solo necesitamos conocer descripciones, 00:10:04
cantidades y precio. 00:10:07
Luego ya en el mail, ya fijaremos unas tareas concretas 00:10:08
para hacer. 00:10:11
Sí, eso he dicho antes que ese método lo borrábamos 00:10:14
porque lo pusimos para explicar métodos. 00:10:18
El otro día tenemos el pedido a palo seco. 00:10:20
Vale, ahora mismo. 00:10:23
El pedido con las tres propiedades. 00:10:24
Los dos constructores y los get y los set. 00:10:27
Esto es todo lo que le hace falta a la aplicación, 00:10:30
hacer de los ítems. 00:10:33
Vale, esto de los ítems. 00:10:34
Ahora vámonos al pedido. 00:10:35
Vale, porque el ítem, esta propiedad, esta clase 00:10:38
la hemos metido nueva porque el cliente nos ha dicho 00:10:40
oye, mis pedidos pueden ser de varias cosas 00:10:44
y yo puedo necesitar meter cosas nuevas 00:10:46
o quitar cosas nuevas. 00:10:49
Como el cliente nos ha dicho eso, 00:10:50
hemos incorporado esta clase adicional. 00:10:52
Ahora ya que esta clase adicional ya está, 00:10:55
volvemos a pedido. 00:10:56
Vale, pedido. 00:10:58
¿Qué tiene el pedido? 00:10:59
Su código, su descripción y el conjunto de ítems. 00:11:00
Obviamente, el conjunto de ítems. 00:11:07
Para eso hemos hecho esa clase. 00:11:09
Vale, pues tiene otra propiedad entonces 00:11:11
que es privada y como esta propiedad son 00:11:13
todos los ítems que tiene, pues va a tener que ser esto. 00:11:17
Esto o luego cuando tengamos ya colecciones, sets, listas, 00:11:22
se puede cambiar esto a una lista, a un conjunto 00:11:26
y la aplicación va a funcionar igual. 00:11:28
¿Vale? 00:11:31
Pues llamémosle ítems por ejemplo. 00:11:34
Ítems pedido. 00:11:36
Así. 00:11:38
Vale, entonces. 00:11:49
Hemos añadido esta propiedad. 00:11:52
Por ahora parece ser que es lo único 00:11:54
que vamos a necesitar en pedido, por ahora. 00:11:56
Que es el código, la descripción y ítems pedido. 00:12:00
Vale. 00:12:02
Pero vamos a seguir pensando. 00:12:03
Bueno, no. 00:12:07
Vamos a dejarlo para cuando metamos el cliente. 00:12:08
Vale, pues como hemos añadido una propiedad, 00:12:10
nos falta modificar. 00:12:13
Este precio de aquí se va. 00:12:15
¿Vale? 00:12:17
Y este que dice de aquí se va. 00:12:19
¿Vale? 00:12:23
Entonces pedido tiene ahora código, descripción 00:12:24
y sus elementos. 00:12:27
¿Que queremos obtener el precio de ese pedido? 00:12:29
Ahora lo haremos. 00:12:32
Ahora lo haréis. 00:12:33
Nos metemos en los ítems para sumarlo. 00:12:34
Ahora lo haremos. 00:12:36
¿Vale? 00:12:37
Pero estas son las tres propiedades que tiene. 00:12:38
Constructor. 00:12:40
El constructor vamos a quitarle este parámetro 00:12:41
precio que ya no lo necesita. 00:12:43
¿Vale? 00:12:48
Y ahora, ¿qué nos falta en el constructor? 00:12:49
Hombre, tenemos un constructor con parámetros 00:12:52
que solamente recibe los dos primeros. 00:12:55
El otro no los recibe. 00:12:58
Pues hombre, vamos a hacer un constructor que reciba los tres. 00:13:00
¿Vale? 00:13:03
Pues otra vez lo de siempre. 00:13:06
Le paso un parámetro que sea la array 00:13:13
y ahora ya a esa propiedad. 00:13:16
Ahora ya tenemos un constructor con los tres parámetros 00:13:26
y otro vacío. 00:13:29
¿Vale? 00:13:36
Situación habitual. 00:13:39
Cuando tenemos una clase que una de sus propiedades 00:13:42
significa algo de este estilo. 00:13:45
Es un conjunto de cosas que van a ir creciendo, 00:13:47
encogiendo, creciendo, encogiendo 00:13:49
según la vida de la clase. 00:13:51
Según la vida del objeto va evolucionando. 00:13:54
El objeto pedido se instanciará en algún momento. 00:13:57
Este y otros mil más. 00:13:59
El objeto pedido se instanciará. 00:14:01
Y en ese objeto pedido, pues los ítems 00:14:03
al principio tendrá unos, luego a lo mejor se le meten más, 00:14:06
luego a lo mejor se le meten menos. 00:14:09
¿Vale? 00:14:12
Entonces en una situación como esta 00:14:13
en la que un objeto tiene como propiedad 00:14:14
una cosa que es una colección, 00:14:17
un array, o sea un conjunto de cosas, 00:14:19
una colección, un array, 00:14:21
es muy habitual, ahora lo pongo en comentarios 00:14:22
en el método, 00:14:25
hacerle un constructor en el cual 00:14:26
sólo use las propiedades que no son el conjunto. 00:14:28
De tal forma que tú puedas crear 00:14:31
un pedido sólo con código y descripción 00:14:33
y luego ya le vayas tú añadiendo los ítems 00:14:35
o quitándolos según te dé la gana. 00:14:38
Pero tener la opción de hacer un pedido 00:14:40
por ahora sin nada, en su conjunto de cosas. 00:14:42
Sin nada. 00:14:45
Y luego tú lo vas añadiendo después. 00:14:46
Es algo habitual. 00:14:48
Pues vamos a hacer ese constructor. 00:14:49
Voy a ponerlo aquí en comentarios. 00:14:51
Cuando una clase tiene una propiedad 00:14:57
que es, voy a decirlo en general, 00:15:03
un conjunto, cuando yo digo un conjunto 00:15:05
es muchos de algo. 00:15:07
Y ese muchos de algo hasta ahora 00:15:08
nosotros sólo lo estamos pudiendo hacer 00:15:10
con array. 00:15:12
Más adelante lo haremos con otras cosas. 00:15:13
Pues cuando una clase tiene una propiedad 00:15:15
que es un conjunto de otras cosas, 00:15:17
en este caso un conjunto de ítems, ¿verdad? 00:15:21
Pero podría ser un conjunto de string, 00:15:24
un conjunto de lo que sea. 00:15:26
Pues cuando una clase tiene una propiedad 00:15:28
que es un conjunto de otras cosas 00:15:30
es habitual 00:15:32
crear un constructor 00:15:38
que no inicialice 00:15:40
esta propiedad. 00:15:48
Que no la inicialice. 00:15:52
Entonces el conjunto de cosas 00:15:54
cuando el objeto es instancia 00:15:56
ese conjunto está vacío. 00:15:57
Y ya se irán añadiendo cosas. 00:15:59
Ya se irán metiendo cosas. 00:16:00
De tal manera que ese conjunto 00:16:11
se vaya llenando o vaciando 00:16:12
a lo largo de la vida del objeto. 00:16:14
Se vaya llenando o vaciando 00:16:18
posteriormente. 00:16:24
Posteriormente. 00:16:26
¿Vale? Relativamente habitual. 00:16:28
Bueno, pues tiene sentido. 00:16:30
¿No? Hacer un constructor 00:16:32
que solamente inicialice 00:16:33
código y descripción. 00:16:34
Por ahora sin pedidos. 00:16:36
Y ahora ya 00:16:38
le vamos añadiendo pedidos 00:16:40
o quitando. 00:16:41
¿Vale? Es un modelo de diseño habitual. 00:16:43
Pues venga, vamos a ponerle 00:16:45
ese constructor. 00:16:47
Ese constructor. 00:16:49
Vale, vamos a generarlo 00:16:51
también automáticamente 00:16:52
para no escribir tanto 00:16:53
souls, el get, 00:16:54
generar constructor usando campos. 00:16:55
¿Pero qué campos? 00:16:57
Pues de selección o ítems 00:16:59
y marco sólo los dos de arriba. 00:17:00
Entonces hacemos un constructor 00:17:03
que use sólo código y descripción. 00:17:05
¡Hala! Generado. Aquí está. 00:17:09
Me lo ha metido ahí en medio de... 00:17:11
Bueno, mete donde le da la gana. 00:17:13
Así que lo voy a poner aquí debajo. 00:17:15
Y le quito el super. 00:17:18
¡Hala! Ya tenemos un constructor 00:17:20
que sólo inicializa código y descripción. 00:17:22
Entonces cuando instanciemos un objeto 00:17:24
con new pedido de esto 00:17:26
su conjunto de ids va a estar a null. 00:17:28
Va a ser null. 00:17:30
Pero luego ya la idea es ir 00:17:32
añadiendo pedidos a ese objeto. 00:17:34
Esto es también la siguiente pregunta. 00:17:36
¿Cómo añado yo pedidos? 00:17:38
Porque añadir un pedido 00:17:40
implicará acceder a este array 00:17:42
que es privado. ¿Cómo? 00:17:44
Podría con el set. 00:17:46
Pero hombre, es feo 00:17:48
usar el set para esto. 00:17:50
Porque el set es para fijar 00:17:52
un array de golpe. 00:17:54
Y yo lo que quiero es simplemente 00:17:56
a los ítems que hay en un momento dado 00:17:58
añadir uno nuevo. 00:18:00
¿Entendéis la diferencia? 00:18:02
Te doy un array entero y con ese array 00:18:04
sobrescribes al que ya haya. 00:18:06
Ese set me puede ser útil 00:18:08
en un momento dado. 00:18:10
El array de ítems que haya 00:18:12
lo quiero sobrescribir entero por otro nuevo. 00:18:14
Puede usar eso. 00:18:16
Voy a necesitar eso alguna vez. 00:18:18
Pero también hay una necesidad 00:18:20
que seguramente yo tenga que es 00:18:22
añadir uno solo al array simplemente. 00:18:24
Que no es hacer el set. 00:18:26
Es añadir uno solo al que ya haya. 00:18:28
En este caso me está pidiendo 00:18:30
esto a Gritos que haga un método 00:18:32
añadir ítem. 00:18:34
Me lo está pidiendo a Gritos. 00:18:36
Añadir ítem. 00:18:38
¿Cómo haríamos el método añadir ítem? 00:18:40
Primero vamos a darle el nombre. 00:18:42
AddItem. Ese sería el nombre. 00:18:44
Añadir ítem al pedido. 00:18:46
¿Qué parámetro necesitaría este método? 00:18:48
Un objeto ítem añadir. 00:18:52
Necesitaría este método. 00:18:56
Este método 00:18:58
aparte de ser público 00:19:00
para poder ser llamado desde fuera 00:19:02
del paquete entidades. 00:19:04
Este método 00:19:06
me tiene que devolver algo. 00:19:08
No, no me estáis diciendo. 00:19:12
No, porque el resultado 00:19:14
añadir el ítem ya se queda reflejado aquí. 00:19:16
En este array. 00:19:18
No me tiene que devolver nada. 00:19:20
Ya se queda reflejado ahí. 00:19:22
Yo aquí pongo un void. 00:19:24
¿Vale? 00:19:26
Entonces, este método 00:19:32
me va a ser muy útil para añadir ítems al pedido. 00:19:34
Vale. 00:19:36
Venga, pues 00:19:38
hacedlo ahora vosotros. 00:19:42
Hacedlo ahora. 00:19:44
A ver si antes del requerido nos da tiempo a 00:19:46
dejarlo aquí puesto. 00:19:48
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
5
Fecha:
15 de enero de 2024 - 11:05
Visibilidad:
Público
Centro:
IES ROSA CHACEL
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
378.12 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid