Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 2-02-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:
Bueno, añadir cliente, un poco rollo escribirlo, pero bueno, vamos a escribirlo rápidamente
00:00:00
Vamos a decirle que elija
00:00:06
A ver, primero le decimos de tienda o online
00:00:09
Vale, y ahora leemos el tipo así
00:00:15
Vale, de tienda o online
00:00:23
Y ahora ya pedimos los datos, NIF nombre y dirección o email
00:00:30
Eso ya sí que va a valer
00:00:34
NIF
00:00:35
Y ahora leemos el NIF
00:00:39
NIF de esto
00:00:46
NIF de esto
00:00:52
Leer cadena, lo mismo para el nombre
00:00:53
Lo mismo para el nombre
00:00:57
Y ahora sí que se pide dirección o email en función de si es de tienda o...
00:01:08
Y ya está
00:01:18
Pues si tipo es igual a 1
00:01:19
Y
00:01:22
Pues entonces habrá que decirle, como es de tienda, que introduzca dirección
00:01:23
Vale, y en ese caso, pues ahora ya leemos la dirección
00:01:27
Estrindir igual a
00:01:39
Cadena
00:01:45
Vale, y aprovechamos ya aquí...
00:01:51
Vale, y aprovechamos ya aquí...
00:01:51
Vale, y aprovechamos ya aquí...
00:01:52
Vale, y aprovechamos ya aquí...
00:01:52
Vale, y aprovechamos ya aquí...
00:01:52
Para crear un objeto cliente tienda, porque estamos en tipo 1
00:01:53
Pues entonces nos hacemos un...
00:01:58
Cliente tienda
00:02:01
Cliente tienda C
00:02:03
¿Perdón?
00:02:07
Sí, esto es primero para que me digan qué tipo de cliente va a crear
00:02:14
Ahora ya
00:02:18
Nombre y NIF, ¿cómo es de ambos?
00:02:19
Nombre y NIF, ¿cómo es de ambos?
00:02:22
Los leo para ambos
00:02:23
Y ahora ya, si es de tienda, le pido dirección
00:02:24
Y creo un cliente tienda
00:02:26
Como en cliente tienda no le he hecho constructores
00:02:30
A propósito, porque lo de los constructores con herencia es un pelinín más complicado
00:02:34
Lo creo sin parámetros
00:02:38
Y ahora le voy a fijar los valores
00:02:40
Vale, con el set y el net
00:02:42
Como veis, C es objeto cliente tienda
00:02:44
¿Verdad? Es cliente tienda
00:02:48
Y en cliente tienda, le pido dirección
00:02:50
En cliente tienda
00:02:52
Me he lanzado
00:02:53
Me pasa a menudo
00:02:56
En cliente tienda
00:02:57
Como veis
00:03:00
No hay un método set NIF
00:03:01
Cliente tienda, fijaos lo que tiene
00:03:04
Esto, no tiene más que esto
00:03:06
Pero no pasa nada porque lo ha heredado de cliente
00:03:08
Entonces como lo ha heredado de cliente
00:03:13
Yo lo estoy pudiendo usar sin ningún problema
00:03:16
¿No?
00:03:18
C es objeto cliente tienda
00:03:20
Un objeto cliente tienda
00:03:21
No tiene un método set NIF
00:03:23
No lo tiene
00:03:25
Pero lo tiene heredado, aunque yo no lo vea físicamente
00:03:26
Aunque yo no lo vea hasta ahí
00:03:29
Entonces
00:03:30
Ahora
00:03:34
Voy a hacer lo mismo
00:03:37
Voy a fijarle el nombre
00:03:38
Y voy a fijarle la dirección
00:03:40
¿Vale?
00:03:45
Entonces, recopilamos
00:03:51
Si el tipo de cliente que vas a meter es tienda
00:03:54
Pido la dirección
00:03:57
Que es el dato que me falta
00:03:58
Porque el NIF y el nombre los tengo arriba
00:04:00
Pido la dirección
00:04:01
Y construyo un objeto de cliente tienda
00:04:03
Con esos tres valores
00:04:06
¿Vale? Los construyo
00:04:07
Ya tengo mi objeto cliente tienda con esos tres
00:04:09
¿Vale? Y de nuevo, repito
00:04:11
Fijaos que estos métodos que estoy llamando
00:04:14
El set NIF y el set nombre
00:04:16
No están escritos específicamente
00:04:18
En la clase cliente tienda
00:04:20
Pero es que están en cliente
00:04:21
¿Vale?
00:04:24
Y ahora con ese
00:04:31
¿Vale?
00:04:32
Y ahora ese cliente que acabo de crear
00:04:37
¿Vale?
00:04:40
Lo añado a la RAI
00:04:44
¿Vale?
00:04:46
Lo añado a la RAI
00:04:51
¿Vale?
00:04:53
Añadir a la RAI es lo de siempre
00:04:55
Añadir a la RAI es
00:04:57
Me creo un RAI
00:04:58
Auxiliar
00:05:01
De clientes
00:05:02
De una posición mayor
00:05:05
Que el que me han dado
00:05:15
Clientes.length
00:05:18
Más uno
00:05:21
Copio uno en otro
00:05:23
Copio uno en otro
00:05:29
Una vez que he terminado de copiar
00:05:41
La posición adicional, la relleno
00:05:49
Y ahora voy a copiar
00:05:51
Que es esta
00:05:51
La relleno con el nuevo
00:05:53
C
00:05:57
Y sobre escribo uno en el otro
00:05:57
Clientes igual a aux
00:06:00
Vale, obviamente hacer todo esto
00:06:01
En el menú del switch case
00:06:09
Era un rollo
00:06:10
Mejor en un método auxiliar
00:06:11
¿Vale?
00:06:12
Me he hecho un nuevo cliente
00:06:15
Con sus tres datos
00:06:16
Aquí ya me he aprovechado de la herencia
00:06:17
Por primera vez
00:06:19
Y ahora voy a copiar
00:06:20
Y ahora voy a copiar
00:06:21
Aquí me he aprovechado de la herencia
00:06:21
Por primera vez
00:06:25
Por estos sets que son heredados
00:06:25
De clientes
00:06:27
No están aquí
00:06:28
Y ahora ya lo he metido
00:06:29
En una posición adicional
00:06:31
Del RAI que me han pasado
00:06:32
Este es el RAI que me han pasado
00:06:33
Pues me hago uno adicional
00:06:35
Lo de siempre
00:06:36
Le pongo el nuevo
00:06:37
Y sobre escribo
00:06:38
Lo de siempre
00:06:39
Vale
00:06:41
Entonces si tipo no es igual a uno
00:06:42
Sino que es igual a dos
00:06:44
Voy a asumir
00:06:46
Para que no sea el código tan largo
00:06:48
No voy a verificarlo todo
00:06:49
Asumo que el tipo es igual a uno
00:06:51
O ha puesto uno
00:06:51
O ha puesto dos
00:06:53
Ya está
00:06:53
Porque es que si no me vuelvo
00:06:54
Si no
00:06:55
Pues no han metido el número correcto
00:06:55
Porque es que ya se hace enorme
00:06:57
Entonces lo metemos en un ELSE
00:06:59
Y ya está
00:07:00
El ELSE asumimos que es el dos
00:07:01
Que lo ha hecho bien
00:07:03
Porque si no
00:07:04
Y en el dos sería lo mismo
00:07:05
Pero cambiando dirección por email
00:07:08
¿Verdad?
00:07:11
Cambiando dirección
00:07:16
Por email
00:07:17
Vale
00:07:21
Y aquí cambiando cliente tienda
00:07:24
Por cliente online
00:07:30
Y aquí cambiando set dirección
00:07:31
Por set email
00:07:44
Vale
00:07:46
Aquí sería lo mismo
00:07:49
Pido el email
00:07:50
Me hago ahora un cliente online
00:07:51
Al que le fijo los tres parámetros
00:07:54
Hombre, esto para que quede más bonito
00:07:56
En lugar de dirlo
00:07:58
Voy a llamar email
00:07:58
Lo voy a llamar email
00:07:59
Y lo mismo
00:08:10
Vale, entonces si recopilamos
00:08:11
Lo que hemos hecho en este método
00:08:21
Es simplemente eso
00:08:23
Pedir el tipo de cliente
00:08:24
Pedir los datos comunes
00:08:27
Y luego ya
00:08:28
En función del tipo de cliente
00:08:30
O pedir dirección
00:08:32
Y construir el objeto cliente tienda
00:08:33
O pedir email
00:08:37
Y construir el objeto cliente online
00:08:38
¿Vale?
00:08:39
Pero hombre, ya que estamos
00:08:44
Jolín
00:08:45
Si esto
00:08:48
Este código
00:08:49
De aquí hasta aquí
00:08:51
Es igualito arriba y abajo
00:08:52
Es igualito
00:08:54
No es igualito arriba y abajo
00:08:55
Vamos a sacarlo fuera de elif
00:08:58
Else, ¿verdad?
00:09:00
¿Perdona?
00:09:13
En cliente tenemos
00:09:15
Nif y nombre
00:09:16
Sí
00:09:18
¿Sí?
00:09:20
Sí
00:09:21
Es que nosotros los hemos quitado
00:09:22
Claro
00:09:25
Vale, a ver
00:09:26
Repito
00:09:27
Entonces
00:09:28
No
00:09:29
No os perdáis
00:09:31
Porque todo esto es
00:09:32
Entonces uno se da cuenta y dice
00:09:34
Jolines
00:09:36
De aquí hasta aquí
00:09:37
Es que es igualito
00:09:39
Me hago uno añadido
00:09:41
Cofio y pego
00:09:43
Y ahora pongo
00:09:44
El nuevo aquí
00:09:45
Es que es el mismo
00:09:46
Este código
00:09:47
Y el código de abajo
00:09:48
Son ideas
00:09:49
Idénticos
00:09:51
Clavados
00:09:51
Línea por línea
00:09:51
¿No?
00:09:52
Entonces uno diría
00:09:53
Si hago eso
00:09:54
Tanto en elif como en elelse
00:09:54
Estoy haciendo lo mismo
00:09:56
Vaya por elif
00:09:57
Vaya por elif
00:09:58
Estoy haciendo lo mismo
00:09:59
Hombre
00:09:59
Pues póntelo luego al final
00:09:59
Y ya está
00:10:01
¿No?
00:10:01
Podría pensar uno
00:10:02
¿Vale?
00:10:03
Pues este que es el mismo código
00:10:05
Igualito
00:10:07
Idéntico
00:10:07
Igualito
00:10:08
Arriba y abajo
00:10:08
Igualito
00:10:09
Vamos a quitarlo de ahí
00:10:10
Y vamos a quitarlo de aquí
00:10:12
Porque es igualito
00:10:15
Igualito
00:10:17
Y lo voy a poner aquí al final
00:10:17
¿Verdad?
00:10:20
No tendría más sentido
00:10:24
Si ese código es igualito
00:10:25
A ver
00:10:27
No te pongas nervioso
00:10:29
Retrotraemos
00:10:30
Ok
00:10:33
Vamos a ver
00:10:37
Tú tienes
00:10:38
Imagínate que tú tienes un
00:10:38
If no sé qué
00:10:39
System printout
00:10:41
Hola
00:10:42
Else
00:10:42
System printout
00:10:43
Hola
00:10:44
Pues hombre
00:10:44
Si hago lo mismo
00:10:45
Vaya por elif
00:10:47
Por elelse
00:10:47
Pues pongo el system printout
00:10:48
Hola
00:10:49
Fuera
00:10:49
Ya está
00:10:50
Es lo que quiero decir
00:10:50
Simplemente
00:10:51
Solo eso
00:10:52
¿No?
00:10:52
Si yo
00:10:53
Esas líneas
00:10:54
Las hago igual
00:10:55
Al final del if
00:10:56
Que al final del else
00:10:57
Que son iguales
00:10:58
Las saco
00:10:58
A eso vamos
00:10:59
¿Vale?
00:11:03
Entonces
00:11:03
A lo que vamos
00:11:04
Yo aquí tengo
00:11:05
Un if
00:11:06
Que
00:11:07
Me hace una cosa
00:11:08
Y en el else
00:11:10
Me hace lo mismo clavado
00:11:11
Pues lo saco fuera
00:11:12
Porque
00:11:14
Me refiero
00:11:15
Que esa cosa
00:11:16
La va a hacer igual
00:11:16
Vaya por if
00:11:17
Que por elelse
00:11:18
Pues la saco fuera
00:11:18
¿Verdad?
00:11:19
Así funciona
00:11:20
El if y el else
00:11:20
¿No?
00:11:21
Esto es lo mismo que decir
00:11:22
Por si alguien
00:11:24
Imaginaos que tenemos
00:11:25
Aquí un
00:11:26
Vamos a hacer un método cualquiera
00:11:28
¿No?
00:11:31
Imaginaos que tenemos aquí
00:11:33
Pues eso
00:11:34
Un if condición cualquiera
00:11:35
Uno igual a dos
00:11:38
Que no me ponga error de compilación
00:11:41
Cualquier condición idiota
00:11:43
Si se cumple esta condición
00:11:44
Pues entonces
00:11:47
Me haces
00:11:48
Int n
00:11:50
Igual a uno
00:11:52
Y luego además
00:11:54
Me saludas
00:11:56
Ala
00:11:57
Y si no
00:11:58
Pues en ese caso
00:11:59
Me haces
00:12:02
Int m
00:12:03
Igual a dos
00:12:04
Y además
00:12:05
Me saludas
00:12:07
Esta es nuestra situación
00:12:09
¿No?
00:12:12
Esta es nuestra situación
00:12:13
Es la misma situación de arriba
00:12:15
Tengo un if y un else
00:12:16
Y la parte del final
00:12:18
Es idéntica en ambas partes
00:12:20
Es la misma situación de arriba
00:12:22
Lo mismo
00:12:25
Tengo un if y un else
00:12:25
Y esto es igual en ambos
00:12:27
Entonces hombre
00:12:28
Este código
00:12:30
Este código es exactamente igual
00:12:31
Que si yo quito estas dos cosas
00:12:33
Y las pongo al final
00:12:35
Hago lo mismo
00:12:36
¿No?
00:12:37
Entonces digo
00:12:41
Hombre
00:12:41
¿Para qué lo haces?
00:12:42
Si se cumple la condición
00:12:43
Haz esto de aquí
00:12:44
Más esto
00:12:45
Y si se cumple
00:12:46
Haz esto de aquí
00:12:47
Más esto
00:12:48
O sea
00:12:48
Esto lo haces igual
00:12:49
Vaya por donde vayas
00:12:50
Pues hombre
00:12:51
Ponlo fuera
00:12:51
¿Vale?
00:12:52
Es lo que
00:12:53
Es decir
00:12:53
Este código
00:12:54
Y este otro
00:12:55
Y este otro
00:12:58
Son exactamente igual
00:13:02
¿Verdad?
00:13:05
Entonces pues
00:13:06
¿Para qué?
00:13:06
Meter esto en las dos ramas
00:13:07
Lo pones fuera
00:13:09
Y el efecto es el mismo
00:13:10
El efecto es que se va a hacer igual
00:13:12
Vaya por el if que por el else
00:13:14
¿Vale?
00:13:16
¿Vale?
00:13:17
Es la situación que se nos está dando
00:13:17
En el for de arriba
00:13:19
¿Vale?
00:13:20
En el for de arriba
00:13:20
Este código
00:13:21
Era idéntico clavado
00:13:22
Idéntico clavado
00:13:24
Aquí al final
00:13:25
Y aquí al final
00:13:27
Era idéntico clavado
00:13:28
Entonces si era idéntico clavado
00:13:29
Sácalo fuera
00:13:30
¿Vale?
00:13:32
Hasta ahí tiene sentido
00:13:33
¿No?
00:13:34
¿Sí?
00:13:36
Claro
00:13:37
Pero ahora
00:13:38
Lo sacamos fuera
00:13:39
Y esta c
00:13:41
Se me pone roja
00:13:43
¿Por qué esta c se me pone roja?
00:13:44
Esa es la más importante de entender
00:13:49
Claro
00:13:51
Porque esta c
00:13:54
Es la variable cliente
00:13:55
Que yo la he declarado
00:13:57
Aquí
00:14:00
En la parte del if
00:14:01
O aquí en la parte del else
00:14:02
La tengo declarada aquí
00:14:05
Y recordad que una variable
00:14:06
Solo es visible
00:14:07
En el bloque
00:14:09
En el que está declarada
00:14:11
Y en los bloques que
00:14:13
Hay adentro de ese
00:14:16
Si es que hay alguno
00:14:17
Con lo cual
00:14:18
La variable c
00:14:19
Solo es accesible
00:14:20
Desde este bloque
00:14:21
Y este bloque acabó
00:14:22
Ese bloque acabó
00:14:23
Con lo cual
00:14:25
Desde aquí fuera imposible
00:14:26
Acceder a c
00:14:28
Aquí lo mismo
00:14:28
Esta variable c
00:14:30
Solo es visible
00:14:31
Desde este bloque
00:14:32
Dentro de él
00:14:33
Y este bloque acabó
00:14:35
Desde el momento
00:14:36
En que este bloque acabó
00:14:37
Todo lo que está declarado aquí
00:14:38
Email c
00:14:40
Aquí no existe
00:14:41
Con lo cual
00:14:42
No puedo poner aquí el c
00:14:44
Porque el c está declarado aquí
00:14:45
Y está declarado aquí
00:14:46
¿Cómo lo arreglo?
00:14:49
¿Vuelvo a meterlo adentro?
00:14:50
Pues vaya
00:14:51
No, ¿cómo lo podemos arreglar?
00:14:51
Jolín, qué perra tenéis con los métodos
00:14:56
Si el problema es
00:14:58
Que al declararla dentro del bloque
00:15:00
Solo es visible dentro del bloque
00:15:02
Y yo quiero que sea visible fuera
00:15:03
Pues la declaramos fuera
00:15:04
La declaramos fuera
00:15:06
Entonces esto
00:15:08
Esto es el trabajo
00:15:09
Todo el rato
00:15:10
Todas estas cuestiones
00:15:11
Que van surgiendo
00:15:12
Que vamos resolviendo
00:15:13
Este es el trabajo
00:15:13
Claro, mi problema es
00:15:15
Anda
00:15:17
Pues oye
00:15:18
No
00:15:19
Las vamos a declarar
00:15:19
Fuera
00:15:21
¿Vale?
00:15:21
Las vamos a declarar
00:15:23
Fuera
00:15:24
¿Vale?
00:15:24
Vale
00:15:39
Pero claro
00:15:40
Al sacarla fuera
00:15:46
¿Cuál es el problema que nos aparece?
00:15:49
Que aquí está declarada
00:15:51
Como cliente tienda
00:15:55
Y aquí está declarada
00:15:56
Como cliente online
00:15:58
Conclusión
00:15:59
Aquí como la declaramos
00:16:02
Como cliente tienda
00:16:07
O como cliente online
00:16:08
A ver, la puedo declarar como ambas
00:16:10
Efectivamente
00:16:16
O sea, dos
00:16:17
¿A qué te refieres?
00:16:17
Sí
00:16:18
Claro
00:16:18
La tengo que declarar como dos
00:16:19
Lo que pasa es que entonces
00:16:21
Aquí efectivamente
00:16:22
Esto lo tengo que destengar
00:16:23
Con un if
00:16:24
¿Vale?
00:16:25
Entonces aquí efectivamente
00:16:26
Hasta que no aprendamos
00:16:28
Un poquito más
00:16:29
Aquí el problema es que
00:16:30
Oye
00:16:32
C
00:16:33
¿Qué es?
00:16:33
¿Cliente tienda o cliente online?
00:16:35
Depende
00:16:37
Depende de donde esté
00:16:37
Depende de donde esté
00:16:39
Entonces
00:16:40
Vamos a declarar efectivamente
00:16:42
Un cliente tienda
00:16:45
Y vamos a declarar
00:16:46
Un cliente online
00:16:48
¿Vale?
00:16:51
Cliente tienda o cliente online
00:16:58
Y ahora
00:17:00
Este es cliente tienda
00:17:00
Este es cliente tienda
00:17:04
Esta de aquí
00:17:09
Y este es cliente online
00:17:13
Que ya le quito la declaración
00:17:16
Este es cliente online
00:17:17
Este es cliente online
00:17:18
¿Vale?
00:17:19
Entonces tengo
00:17:23
Un cliente tienda y un cliente online
00:17:24
¿Qué me han dicho cliente tienda?
00:17:26
Construyo el cliente tienda
00:17:28
Ya está, construido
00:17:30
Construido
00:17:31
¿Qué me han dicho el cliente online?
00:17:33
Construyo el cliente online
00:17:35
Ya está, construido
00:17:37
¿Vale?
00:17:38
Entonces o construyo el tienda
00:17:39
O construyo el online
00:17:40
Uno de los dos
00:17:41
¿Vale?
00:17:42
Y ahora ya
00:17:43
Ahora ya
00:17:44
Y solo una vez
00:17:45
Porque me da igual ir por el if
00:17:46
Por el elif
00:17:47
Que esto lo voy a hacer
00:17:48
En ambos casos
00:17:48
Y ahora ya
00:17:49
Hago el array
00:17:50
Lo amplio
00:17:51
¿Y qué meto en la posición adicional?
00:17:52
CO o CT
00:17:54
Pues depende
00:17:55
Depende de si el tipo es uno
00:17:56
O es otro
00:17:57
¿Vale?
00:17:58
Entonces ¿Qué metemos aquí?
00:17:59
Pues aquí depende
00:18:00
Aquí simplemente hacemos
00:18:01
Si tipo es igual a uno
00:18:04
Entonces meto cliente tienda
00:18:06
Y si no
00:18:11
Meto cliente online
00:18:12
Y listo
00:18:14
¿Vale?
00:18:15
Eh
00:18:17
Eh
00:18:17
Ahora el rojo
00:18:18
Ahora os pregunto por qué sale
00:18:22
Pero primero vamos a entender
00:18:23
Lo que hemos hecho
00:18:23
¿Vale?
00:18:24
Bueno, más o menos
00:18:33
Entonces ahora la estructura
00:18:34
Nos ha quedado
00:18:36
Yo tengo mis dos posibles objetos
00:18:36
El de tienda online
00:18:39
Si el cliente de selección o tienda
00:18:40
Construyo el de tienda
00:18:43
Pero si el cliente seleccionó online
00:18:44
Construyo el de online
00:18:47
¿Vale?
00:18:48
Construyo el de online
00:18:48
Depende el que haya seleccionado
00:18:50
Lo construyo
00:18:51
Y ahora ya
00:18:53
Me da igual cual he construido
00:18:54
Ya lo que me falta
00:18:55
En ambas ramas
00:18:56
Lo que me falta ya es esto
00:18:57
Que es meterlo en el array
00:18:58
¿Vale?
00:18:59
Pues para meter el array
00:19:01
Lo de siempre
00:19:02
Lo único es que
00:19:03
¿Cuál meto en la adicional?
00:19:04
Este o este
00:19:06
No lo sé
00:19:07
Depende de la condición
00:19:07
Este o este
00:19:08
No lo sé
00:19:09
¿Vale?
00:19:10
Pero esa sentencia está bien
00:19:11
Si el tipo era uno
00:19:12
Tendré que meter el CT
00:19:15
Que es el que habré construido en el if
00:19:16
Y si el tipo es dos
00:19:17
Tendré que meter el CO
00:19:18
Que es el que construyo en el else
00:19:19
¿Vale?
00:19:21
Tiene sentido
00:19:22
Y el método estaría muy bien
00:19:23
Y ya he hecho añadir cliente
00:19:24
En el array que me han pasado
00:19:26
Como parámetro, etc.
00:19:27
Y ahora
00:19:29
Antes de poner la manita
00:19:30
Yo os preguntaría
00:19:33
¿Por qué tampoco le gusta el compilador?
00:19:36
Que es tan pesidero
00:19:42
¿Por qué creéis?
00:19:43
Claro, nosotros sabemos
00:19:48
Porque nosotros conocemos
00:19:50
El funcionamiento de nuestro programa
00:19:51
Que si tipo es igual a uno
00:19:53
Sabemos
00:19:55
Que habrá entrado aquí
00:19:56
Habrá hecho el CT
00:19:58
Con lo cual CT tendrá algo
00:19:59
Y también sabemos
00:20:01
Que si tipo es igual a dos
00:20:03
Habrá entrado aquí
00:20:04
Y el CO tendrá algo
00:20:05
Pero el compilador no mira
00:20:06
Contenidos de variables
00:20:08
El compilador mira
00:20:09
Las combinaciones que hay
00:20:10
De if y de while
00:20:12
Y él dice
00:20:12
A ver
00:20:13
CT
00:20:14
Solo va a tener algo
00:20:15
Si has entrado en el if
00:20:17
¿Yo cómo sé que has entrado en el if?
00:20:18
Yo no me pongo a mirar
00:20:20
En condiciones on true o false
00:20:22
Eso ya dependerá
00:20:23
De la ejecución concreta
00:20:24
Yo solo sé
00:20:25
Que la existencia de CT
00:20:27
Es condicional
00:20:28
No puedes
00:20:31
No tengo la garantía
00:20:32
De que CT siempre tenga un valor
00:20:33
Y ahora estás tratando
00:20:35
De usarla en una asignación
00:20:37
Y eso no le gusta
00:20:38
El compilador
00:20:40
Cuando usamos una variable
00:20:42
Para asignarla a algo
00:20:43
Dice
00:20:44
Oye
00:20:45
Esto está en un if
00:20:45
¿Cómo sé yo?
00:20:46
Que has entrado en ese if
00:20:48
Y que esa variable tiene algo
00:20:50
¿Cómo lo puedo saber?
00:20:51
Porque no mira condiciones
00:20:53
Porque dependen de la ejecución
00:20:54
¿Cómo lo puedo saber?
00:20:56
Entonces te dice
00:20:58
No
00:20:58
Para ahorrarnos problemas
00:20:58
No te dejo
00:21:00
Que en una asignación
00:21:02
Uses una variable
00:21:03
Que podría no tener nada
00:21:04
Podría no tenerlo
00:21:06
Si tú no has entrado en el if
00:21:07
Podría
00:21:08
Bueno
00:21:09
Pues se soluciona muy fácil
00:21:10
Tranquilo
00:21:11
No pasa nada
00:21:12
Yo cuando declaro
00:21:13
Te lo inicializo un valor
00:21:14
A cualquiera
00:21:15
Me da lo mismo
00:21:16
Porque es que luego yo sé
00:21:16
Que vas a entrar en el if
00:21:17
Y se va a dar un valor
00:21:18
Etcétera
00:21:20
Vale
00:21:21
Pues cuál es el valor
00:21:22
Que usamos para inicializar
00:21:23
A lo que sea
00:21:24
Un objeto
00:21:25
El null
00:21:26
Pues ya está
00:21:27
Como si ponéis
00:21:28
Un new cliente
00:21:32
Tienda vacío
00:21:33
Pero lo más bonito
00:21:34
Y lo normal
00:21:35
Es inicializarlo a null
00:21:35
¿Vale?
00:21:36
Pues entonces
00:21:48
Nuestro método
00:21:51
En principio
00:21:52
Ya está completo
00:21:53
Y menos mal
00:21:54
Que hemos hecho un método aparte
00:21:56
Porque hacer esto
00:21:57
En el switch case
00:21:58
¿Vale?
00:21:59
Entonces
00:22:00
Haz cliente
00:22:01
Le pasamos la cajita
00:22:02
Para meter los clientes
00:22:03
Se la pasamos
00:22:04
¿Qué hace?
00:22:05
Te pide el tipo de cliente
00:22:06
Te pide los datos comunes
00:22:08
Luego
00:22:10
Prepara un objeto
00:22:11
Para meter el cliente
00:22:13
El online o tienda
00:22:14
Depende del que tú quieras
00:22:15
Lo deja ahí preparado
00:22:16
Lo deja ahí preparado
00:22:17
Ahora
00:22:18
Que el tipo es igual a 1
00:22:19
Pido el dato adicional
00:22:20
Y construyo a este
00:22:22
Adiós
00:22:24
Que no es igual a 1
00:22:26
Pido el dato adicional
00:22:27
Y construyo el otro
00:22:29
Y ahora
00:22:30
Si el tipo era igual a 1
00:22:32
Asigna ct
00:22:34
A la posición adicional
00:22:36
Y si no
00:22:37
Asigna ceo
00:22:39
¿Vale?
00:22:39
En principio
00:22:41
El método
00:22:42
Hasta donde yo sé
00:22:42
Ya está
00:22:45
¿Vale?
00:22:46
Quito esto de aquí
00:22:47
Y ya está
00:22:48
Pero me está dando
00:22:48
En el momento
00:22:52
Para ejecutarlo
00:22:53
O en el compilador
00:22:54
Pero que error te da
00:22:55
De compilación
00:23:01
¿Qué te dice?
00:23:01
¿Se lo has pasado
00:23:13
Como parámetro?
00:23:13
Vale
00:23:18
Bueno pues ya está
00:23:22
Este método
00:23:26
Mete un cliente
00:23:27
Independientemente del tipo que sea
00:23:28
Pues ya
00:23:30
Nuestro main
00:23:31
Pasará a la cajita
00:23:32
Y meterá al cliente
00:23:34
Vale
00:23:35
Entonces
00:23:35
Esta aplicación
00:23:38
La estamos haciendo
00:23:40
En lugar de como la anterior
00:23:40
Que la anterior
00:23:42
La estábamos haciendo
00:23:43
Hacer
00:23:44
Bueno es que yo aquí
00:23:45
La tengo
00:23:47
La tengo a medio tiempo
00:23:47
Hacer un array de 100
00:23:48
Y luego una variable posición
00:23:49
Y rellenando
00:23:51
Pues esta ya es más bonita
00:23:53
Esta nueva que estamos haciendo
00:23:54
Es un array
00:23:56
Esto no es
00:23:57
Esta nueva que estamos haciendo
00:24:00
Es un array que se va estirando
00:24:02
Inicialmente tiene cero clientes
00:24:04
Inicialmente tiene cero
00:24:06
Y luego ya vamos metiendo en él
00:24:06
Con lo cual esta variable post
00:24:08
Nos sobra
00:24:09
Esta que yo he puesto aquí
00:24:10
Con esta opción nos sobra
00:24:11
Vale
00:24:13
Insertar cliente
00:24:14
Bueno
00:24:16
Hasta ahí
00:24:16
Vale
00:24:18
Entonces ahora vamos a
00:24:18
A meter una segunda funcionalidad
00:24:21
A nuestro
00:24:26
A nuestra
00:24:29
A nuestra aplicación de gestión
00:24:31
Que es
00:24:33
Enviar pedido a un cliente
00:24:35
Dado su NIF
00:24:37
Vale
00:24:38
Vale
00:24:39
Vamos a meter
00:24:47
Una segunda funcionalidad
00:24:48
Que es
00:24:49
Oye
00:24:49
Yo te doy el NIF
00:24:50
De un cliente
00:24:52
Y
00:24:54
Tienes que enviarle el pedido
00:24:55
Por email
00:24:57
Por dirección
00:25:00
Pues yo que sé
00:25:01
Como sea
00:25:02
Ambos tienen la opción
00:25:02
De enviar pedido
00:25:03
¿Verdad?
00:25:04
Enviar pedido en cliente tienda
00:25:05
Funciona de una manera
00:25:06
Y en cliente online
00:25:07
Funciona de otra
00:25:09
Pero ambos tienen su método
00:25:09
Enviar pedido
00:25:11
Porque lo hemos hecho
00:25:11
¿Verdad?
00:25:12
Bueno
00:25:14
Vamos a incorporar esa funcionalidad
00:25:15
Yo te doy un NIF
00:25:16
Y me busco
00:25:17
Pues venga
00:25:18
Vamos a hacer el caso 2
00:25:19
Vale
00:25:21
Pues vamos a hacerlo también
00:25:27
A través de un método auxiliar
00:25:29
Operaciones
00:25:30
Donde le vamos a llamar
00:25:33
Enviar pedido
00:25:36
Tendrá que solicitar un NIF
00:25:43
Recorrer el array de clientes
00:25:45
Entonces
00:25:48
Vamos a dejar ahora vacío
00:25:49
Que le vamos a pasar a este parámetro
00:25:53
Hasta que luego lo decidamos
00:25:55
Entonces vamos a
00:25:56
Construir
00:25:58
Bueno
00:26:00
Si lo pedimos dentro de enviar pedido
00:26:01
No
00:26:03
Hay dos opciones
00:26:03
Que lo pidamos aquí
00:26:04
Introduzca el NIF
00:26:05
Y luego se lo pasemos
00:26:05
O que dentro del propio enviar pedido
00:26:06
Hagamos
00:26:08
Introduzca NIF
00:26:08
Entonces no haría falta
00:26:09
Depende de la opción que tomamos
00:26:10
¿Vale?
00:26:12
Vamos a suponer
00:26:12
Para que esto nos quede más cortito
00:26:13
Que nuestro método enviar pedido
00:26:14
Este de aquí
00:26:17
Public
00:26:18
Static
00:26:19
Void
00:26:20
Enviar pedido
00:26:22
Este dentro de aquí
00:26:23
Pues este ya va a solicitar el NIF
00:26:26
Va a decir
00:26:31
Introduzca NIF
00:26:31
Lo lee él y todo eso
00:26:32
Introduzca NIF del cliente
00:26:34
Al que va a enviar el pedido
00:26:39
Pues nada
00:26:41
Leería el NIF
00:26:43
Entonces no hay que pasárselo por parámetro
00:26:44
Porque lo lee él dentro
00:26:46
Leer NIF que es cadena
00:26:48
Vale
00:26:55
Pero claro
00:26:56
Ahora que tiene que hacer este método
00:26:57
Tiene que ponerse a recorrer
00:26:59
El array de clientes
00:27:01
Hasta encontrar el cliente con ese NIF
00:27:03
Y cuando lo ha encontrado
00:27:05
Llamar al método enviar pedido de ese cliente
00:27:06
Porque recordad que el cliente
00:27:09
Tanto si es de tienda
00:27:12
Como si es online
00:27:14
Tiene su método enviar pedido
00:27:15
Que hemos hecho para enviarle su pedido
00:27:18
Ambos tienen esa opción
00:27:19
Bueno pues este método entonces
00:27:20
Ahora tendrá que buscar el array
00:27:23
Nuevo
00:27:25
Que necesita que se le pase por parámetro
00:27:26
El array
00:27:29
No el NIF
00:27:32
Si lo siguiente que tiene que hacer
00:27:33
Es buscar
00:27:37
En el array de clientes
00:27:38
Estamos en la misma situación de arriba
00:27:40
Como
00:27:43
¿Eh?
00:27:44
La de
00:27:46
¿Eh?
00:27:47
O sea que se lo tendremos que pasar por parámetro
00:27:48
Pues eso
00:27:51
La misma situación
00:27:52
Entonces
00:27:53
¿Qué es lo que nos falta?
00:27:53
¿Qué necesita este método?
00:27:55
El NIF no porque lo lee desde dentro
00:27:56
Pero la caja de clientes para buscar
00:27:57
La necesita ¿no?
00:28:00
Yo no puedo buscar un cliente
00:28:01
En una caja que tengo fuera
00:28:02
Me tendrán que meter la caja
00:28:03
Yo ya busco el cliente
00:28:04
Y te hago lo que sea
00:28:05
Pero si no me la das
00:28:06
Pues lo mismo
00:28:07
Claro porque no tiene acceso a esa variable
00:28:09
Esa variable es una variable local de otro método
00:28:13
Entonces no puedes acceder a una variable local de otro método
00:28:15
Entonces no puedes acceder a una variable local de otro método
00:28:17
Entonces no puedes acceder a una variable local de otro método
00:28:17
Entonces si
00:28:17
Se la tienes que pasar
00:28:18
Si no se la pasas
00:28:20
Vale pues entonces le tendremos que pasar la cajita
00:28:21
Se la tendremos que pasar
00:28:27
Y ahora ya aquí buscará
00:28:29
Vale ahora ya
00:28:32
Ahora ya podemos buscar el array
00:28:47
Porque el array nos lo han pasado
00:28:49
Nos lo han pasado por aquí
00:28:51
Y ahora ya nuestro main
00:28:52
Lo pasará por aquí
00:28:54
Clientes
00:28:56
Vale
00:28:57
Y a nosotros ya pues muy chulos
00:29:02
Pues hacemos venga
00:29:05
Si clientes de i
00:29:06
Si clientes de i.getNIF
00:29:09
Si clientes de i.getNIF
00:29:13
Si clientes de i.getNIF
00:29:13
Si clientes de i.getNIF
00:29:13
Si clientes de i.getNIF
00:29:13
Si clientes de i.getNIF
00:29:15
El NIF que acabo de leer
00:29:17
El NIF que acabo de leer
00:29:21
Estupendo ya hemos encontrado el cliente
00:29:22
Para el cual hay que enviar el pedido
00:29:26
Entonces yo me hago clientes de i
00:29:28
E intento darle al método
00:29:29
Enviar pedido
00:29:32
No porque hemos dicho
00:29:33
Este array tiene objetos
00:29:39
Cliente tienda cliente online
00:29:40
Del tipo que sea
00:29:42
Me caben los dos en el array
00:29:43
Porque hemos dicho que es un array de la clase
00:29:45
Cliente
00:29:47
Con lo cual le caben objetos
00:29:48
De cualquiera de las subclases
00:29:50
Bueno pues entonces
00:29:52
Yo no sé que tiene este array
00:29:54
Pero sé que tiene
00:29:56
Clientes tienda clientes online
00:29:57
Sé que los tiene
00:29:59
Y cliente tienda tiene enviar pedido
00:30:00
Que se lo acabo de ver aquí
00:30:03
Y cliente online tiene enviar pedido
00:30:04
Ambos lo tienen
00:30:07
Claro entonces
00:30:08
Entonces este objeto me está diciendo
00:30:10
Lo siento
00:30:14
Enviar pedido no existe
00:30:17
Es lo que nos está diciendo
00:30:17
Enviar pedido no existe
00:30:18
Vale
00:30:20
Entonces esto diríamos
00:30:22
Jolín pero que absurdo
00:30:23
Claro que el objeto este lo tiene
00:30:24
Por supuesto que lo tiene
00:30:27
Porque este objeto no hay tu tía
00:30:29
O es cliente tienda o es cliente online
00:30:31
Yo sé que lo tiene
00:30:34
Yo sé que lo tiene
00:30:35
Claro tú lo sabes
00:30:36
Pero el compilador no
00:30:38
Que fastidia
00:30:40
El compilador dice yo no sé que has metido tú ahí
00:30:42
Pero yo sé
00:30:45
Que este array clientes
00:30:47
Es de la clase cliente
00:30:48
Y eso significa
00:30:50
Que cualquiera que herede de cliente
00:30:52
Puede llamar al método
00:30:55
Cliente tienda por supuesto
00:30:57
Cliente online por supuesto
00:30:59
Pero cualquier otro
00:31:00
Y como tengo yo la garantía de que ese cualquier otro
00:31:02
Tenga un método de enviar pedido
00:31:05
No la tengo
00:31:06
Entonces lo que te dice es
00:31:07
Oye ojo
00:31:09
Si tú te haces un array de la clase cliente
00:31:09
El método al que llames
00:31:12
Que esté declarado en la clase cliente
00:31:15
No solo en las subclases
00:31:16
También en la superclase
00:31:21
Porque qué pasa
00:31:23
Si luego yo le hago un parche a la aplicación
00:31:24
Y me hago un cliente
00:31:27
No sé qué
00:31:29
Y ese cliente no sé qué no tiene enviar pedido
00:31:30
Pues he quitado la coherencia de la aplicación
00:31:32
Porque ese cliente no sé qué
00:31:35
Podría caer en el array perfectamente
00:31:37
Porque es una subclase
00:31:39
Podría caer
00:31:40
Pero ese no tiene enviar pedido
00:31:40
Entonces la obligación que tenemos
00:31:42
Ahora es que
00:31:45
Ahora es
00:31:46
Oye si tú quieres llamar a un método
00:31:47
Enviar pedido
00:31:49
Y teniendo en cuenta que este array
00:31:51
Está declarado de clase cliente
00:31:54
Ese método tiene que estar en la clase cliente
00:31:57
Lo siento
00:32:00
No hay otra
00:32:00
Si no te haces dos arrays
00:32:01
Te haces un cliente tienda
00:32:03
Y ahí podrás llamar sin ningún problema a enviar pedido
00:32:05
Porque el array está declarado como cliente tienda
00:32:07
Y te haces luego un cliente online
00:32:09
Y ahí podrías llamar a enviar pedido
00:32:11
Porque enviar pedido está en cliente online también
00:32:13
Pero como te hagas un parche a la aplicación
00:32:15
Y haces un array cliente
00:32:16
Solo puedes llamar a lo que esté en cliente
00:32:17
Y ahí no hay ningún enviar pedido
00:32:21
Pues eso es lo que nos está diciendo
00:32:23
¿Vale?
00:32:25
Y tiene sentido que se proteja
00:32:26
Entonces nosotros empezamos a buscar la solución
00:32:27
Y decimos
00:32:30
Vale pues ven
00:32:32
Vamos a hacer enviar pedido en cliente
00:32:33
Para que te calles
00:32:35
Entonces nos metemos aquí a hacer un enviar pedido
00:32:37
Public void
00:32:40
Enviar pedido
00:32:43
Enviar pedido
00:32:46
Y aquí ya
00:32:50
Otra vez nos quedamos atascados
00:32:52
Enviar pedido
00:32:55
Vamos a ver
00:32:57
En esta clase cliente enviar pedido
00:32:58
Pero como si no tengo información
00:33:00
Esta es la clase genérica
00:33:01
Que solo tiene el mismo nombre
00:33:04
Aquí no hay dirección, aquí no hay tienda, aquí no hay presencial
00:33:05
Enviar pedido ¿Qué hago con enviar pedido?
00:33:08
No puedo
00:33:12
No tengo información
00:33:12
Es que no sé
00:33:13
No tengo dirección, no tengo email
00:33:14
No tengo información
00:33:16
No tengo, no puedo hacerlo
00:33:16
O sea me obligas a hacer un método para poder llamarlo
00:33:18
Y cuando me voy a hacerlo
00:33:20
Es que no tiene sentido
00:33:22
Porque enviar pedido tiene sentido
00:33:24
Que se haga en las subclases
00:33:26
Cuando ya sé si es de tienda o es online
00:33:27
Pues efectivamente no tiene sentido
00:33:30
No puedo hacerlo
00:33:33
Luego ¿Qué hago?
00:33:34
Lo dejo vacío
00:33:36
Lo dejo vacío porque no puedo hacerlo
00:33:36
No tengo información
00:33:40
Lo dejo vacío, genial
00:33:41
Lo dejo vacío
00:33:43
Y ahora este ya se queda tan ancho
00:33:44
Ay que bien
00:33:46
Tienes ya un enviar pedido en cliente
00:33:47
Te dejo que lo llames
00:33:49
Y ahora me diríais
00:33:51
Jue, pues vaya tontería
00:33:55
¿Y ahora qué va a pasar?
00:33:56
¿Se va a llamar el enviar pedido de cliente?
00:33:58
Entonces no va a hacer nada
00:34:00
Pues no
00:34:01
Porque en el momento de ejecutar
00:34:03
Al método que se llama
00:34:07
Es al de la subclase
00:34:09
Luego
00:34:11
Tenéis que distinguir
00:34:14
Fasa de compilación
00:34:16
Tiempo de compilación que se llama
00:34:18
Uno está desarrollando su código
00:34:20
Y ahí tiene que seguir las reglas del juego
00:34:22
Tiene que seguirlas
00:34:24
Y las reglas del juego me dicen
00:34:26
Oye yo tengo que fijar unas reglas
00:34:28
Y si tú me has dicho que en este array
00:34:31
Puede haber cualquier tipo de cliente
00:34:33
Cualquier tipo
00:34:35
Yo tengo que asegurarme
00:34:36
De que en cualquier tipo de cliente
00:34:37
Hay un método de enviar pedido
00:34:39
Porque si no
00:34:41
¿Cómo sé yo que luego no vas a meter un objeto
00:34:41
De un tipo?
00:34:45
Cualquier cliente que lo tenga
00:34:46
¿Cómo lo sé yo?
00:34:47
Me tengo que asegurar
00:34:48
Mi única manera de asegurarme
00:34:49
De que en todo va a haber enviar pedido
00:34:51
Es que me lo hagas en la superclase
00:34:52
Porque si me lo haces en la superclase
00:34:54
Te lo darán todas
00:34:55
Es mi única forma de asegurarse
00:34:56
Entonces tienes que seguir las reglas del juego
00:34:57
Vale, la sigo
00:34:59
Y me hago un enviar pedido en cliente
00:35:00
Tiempo de compilación
00:35:02
Ahora ya pasamos al tiempo de ejecución
00:35:04
Esta aplicación se ejecuta
00:35:05
Ahora ya el compilador ya no entra en juego
00:35:07
Se acabó
00:35:11
Ahora entra en juego la máquina virtual
00:35:11
La máquina virtual empieza a ejecutar
00:35:13
La máquina virtual empieza a ejecutar
00:35:16
La máquina virtual empieza a ejecutar
00:35:16
La máquina virtual empieza a ejecutar
00:35:16
Y ahora ya como estamos en tiempo de ejecución
00:35:16
Ya el array tiene cosas
00:35:19
Ya tiene cosas
00:35:20
Ya tiene objetos concretos
00:35:22
Tiene a lo mejor 3 clientes tienda
00:35:24
Luego 2 clientes online
00:35:26
Luego otro cliente tienda
00:35:27
Ya tiene objetos
00:35:28
Porque ya estamos en tiempo de ejecución
00:35:29
Y ahora está la máquina virtual jugando
00:35:31
El compilador ya dejó de jugar
00:35:34
Porque ya hemos compilado todo perfecto
00:35:36
Ahora está la máquina virtual
00:35:37
La máquina virtual ya tiene un array concreto
00:35:39
Y empieza a recorrerlo
00:35:42
Dice venga
00:35:43
Este cliente coincide es un if
00:35:43
Muy bien
00:35:46
Pues voy a llamar al método de enviar pedido
00:35:47
Pero la máquina virtual lo que hace es decirse
00:35:49
Oye
00:35:51
Este objeto concreto
00:35:51
Cuando se ha creado
00:35:53
¿De qué tipo se ha creado?
00:35:55
¿Se ha creado como tienda o como online?
00:35:57
Porque yo voy a llamar
00:36:01
Al método que esté en la versión de la clase
00:36:02
Como se ha creado
00:36:05
Como se ha creado
00:36:06
Porque la máquina virtual juega ya en tiempo de creación de objetos
00:36:08
De ejecución
00:36:11
Luego
00:36:12
Si clientes de ahí coincide
00:36:15
Que se creó y existe
00:36:17
Como cliente tienda
00:36:19
Porque en el momento de crearse
00:36:20
Se creó como cliente tienda
00:36:22
La versión de enviar pedido a la que se llame
00:36:23
Será la que esté en cliente tienda
00:36:26
Pero si clientes de ahí
00:36:29
Coincide que se creó en el momento de añadirlo
00:36:31
Se creó como cliente online
00:36:33
La versión de enviar pedido
00:36:35
A la que llama la máquina virtual
00:36:37
Es a la que hay en cliente online
00:36:38
¿Vale?
00:36:40
Luego distinguir la fase de compilación
00:36:42
Se juega con unas reglas
00:36:45
Y la fase de ejecución
00:36:47
Y tiene todo el sentido del mundo
00:36:48
Que esté así hecho la cosa
00:36:50
¿Vale?
00:36:51
Entonces, aunque aquí haya un enviar pedido
00:36:55
En blanco
00:36:57
Este enviar pedido
00:36:59
Está hecho simplemente
00:37:01
Para generar una obligación
00:37:02
Y dices
00:37:04
Yo cliente te obligo
00:37:06
A cliente tienda
00:37:08
Cliente online, cliente patatín
00:37:10
Cliente patatón
00:37:12
Te obligo a que hagas un método enviar pedido
00:37:13
Y tú ya le rellenas como te dé la gana
00:37:16
Yo te doy
00:37:18
Te genero la obligación
00:37:20
De alguna manera
00:37:22
No es que sea una obligación
00:37:23
Te doy las pautas de que si eres un cliente
00:37:24
Hombre, pues si eres un cliente
00:37:27
Interesa que tengas un enviar pedido
00:37:29
Pero yo aquí lo dejo en blanco
00:37:30
Pero hago como una especie de plantilla
00:37:32
Y digo, todos los clientes
00:37:36
Tiene sentido que tengan un enviar pedido
00:37:38
Pues yo aviso de eso
00:37:40
Aviso de eso
00:37:42
Poniéndolo en blanco
00:37:42
Y ahora ya, cuando el programador
00:37:43
Se pone a heredar de cliente
00:37:46
Dice, me voy a hacer mi propia versión
00:37:48
De enviar pedido
00:37:50
Ahora yo me hago mi propia versión
00:37:51
Entonces esto es una especie de marco
00:37:52
De significado de las cosas
00:37:56
Si hemos acordado que a los clientes
00:37:58
Les pueden enviar pedidos
00:38:00
Pues vamos a indicar eso de alguna manera
00:38:01
Poniéndolo en la superclase
00:38:04
Y entonces ya las subclases
00:38:06
Cada una da su propia versión
00:38:08
Cada una da su propia versión
00:38:10
Cliente online da su versión
00:38:12
Que es esta
00:38:16
Y cliente tienda da su versión
00:38:17
Que es esta
00:38:20
Y luego ya la máquina virtual
00:38:20
Cuando ya entre a jugar la máquina
00:38:22
Porque ya esto se está ejecutando
00:38:24
Pues la máquina virtual ya
00:38:26
Ya decidirá
00:38:28
Dirá, venga, este, ¿qué es?
00:38:31
Este se instanció o se creó como tienda
00:38:34
Pues llama a la versión que está en tienda
00:38:37
Se instanció como no sé qué
00:38:39
Pues llama a la versión
00:38:41
De la tienda
00:38:42
De no sé qué
00:38:42
¿Vale?
00:38:43
Bueno, pues esto es importantísimo entenderlo
00:38:49
Esto es lo que se llama
00:38:51
La sobrescritura de métodos
00:38:52
El método está en la clase padre
00:38:55
Y se hereda
00:38:58
Pero se hereda vacío
00:39:00
Que tú lo quieres tener vacío
00:39:01
En tu clase heredera
00:39:03
Pues lo dejas vacío
00:39:03
Pero que tú quieres tu propia versión
00:39:05
De enviar pedido
00:39:07
Pues la sobrescribes
00:39:08
Y sobrescribirlo es
00:39:10
Hacer uno igualito
00:39:12
Con la misma cabecera
00:39:14
Hacer uno igualito
00:39:15
Entonces te haces tu propia versión
00:39:16
Como subclase te haces tu propia versión
00:39:18
Con lo cual estás pisando el heredado
00:39:21
Si yo no me hiciera esta versión
00:39:22
De aquí
00:39:25
En cliente tienda
00:39:26
En cliente online que estoy
00:39:29
Si yo no me la hago
00:39:32
Esta tiene la heredada
00:39:34
La tiene
00:39:35
Porque se hereda todo
00:39:36
Y la heredada sería
00:39:37
Estaría heredando un vacío
00:39:39
Vale, pues se hereda un vacío
00:39:40
Pero normalmente
00:39:41
Normal es que las subclases
00:39:42
Quieran ya dar un funcionamiento
00:39:44
Concreto a las acciones
00:39:46
Y entonces la cliente tienda dice
00:39:47
O cliente online dice
00:39:49
No, no, no
00:39:51
Oye
00:39:51
Yo quiero mi propia versión
00:39:52
De enviar pedido
00:39:54
Entonces me hago ese método
00:39:55
Con la misma cabecera
00:39:57
Y ya le meto
00:39:57
Lo que yo quiero en concreto
00:39:58
Y ahora ya
00:40:00
Cuando los objetos
00:40:02
Llamen a enviar pedido
00:40:03
Aunque se han declarado como cliente
00:40:04
Si en el momento de crearlo
00:40:06
Se han creado
00:40:08
Como cliente tienda
00:40:09
La versión del método
00:40:10
Que se llama
00:40:12
Es el método de enviar pedido
00:40:12
Que pasa esto
00:40:12
Vale
00:40:13
Entonces hemos sobre escrito el método
00:40:14
Y este es el famoso
00:40:16
Polimorfismo de la programación
00:40:19
En todo objeto
00:40:20
Es esto
00:40:21
Entonces uno se pone a estudiar
00:40:23
Polimorfismo es esto
00:40:24
Bla, bla, bla, bla, bla
00:40:25
Pues viene de esta motivación
00:40:26
Viene
00:40:28
De que
00:40:28
Este método
00:40:30
Enviar pedido de aquí
00:40:32
Nos parece
00:40:34
Que estamos llamando
00:40:35
Al mismo código
00:40:37
Por hacer esta llamada
00:40:38
No
00:40:40
¿A qué código estamos llamando?
00:40:40
Depende de la forma
00:40:42
De ahí la palabra
00:40:44
Polimorfismo
00:40:45
Del objeto que lo llama
00:40:46
Que este objeto es cliente tienda
00:40:47
Este se va al código de cliente tienda
00:40:50
Que este objeto adopta otra forma
00:40:54
Y ahora es cliente online
00:40:56
Este método
00:40:57
Es el de cliente online
00:40:58
Esto es el concepto de polimorfismo
00:41:00
De la programación de antavos objetos
00:41:04
Una llamada a un método
00:41:05
De la clase cliente
00:41:07
O es
00:41:08
Una forma en concreto
00:41:10
O es otra forma
00:41:12
En función del objeto que lo llame
00:41:13
Porque cada objeto
00:41:15
Lo habrá sobrescrito a su manera
00:41:16
¿Vale?
00:41:17
Vale, bueno
00:41:22
Pues vamos a dejarlo aquí
00:41:23
Entonces
00:41:25
Todo por favor
00:41:27
Yo luego cuando llegue a casa
00:41:29
Subo las grabaciones y el proyecto
00:41:31
Y todo lo
00:41:33
Estoy
00:41:36
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 11
- Fecha:
- 2 de febrero de 2024 - 18:16
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 41′ 38″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 189.50 MBytes