Ejercicio Herencia-abstract-polimorfismo - 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:
Estoy grabando, por tanto todo lo que decís será grabado en mis vídeos
00:00:00
Vale, entonces estamos creando este producto
00:00:07
Tiene estas características, tiene un método que es una descripción del producto en general
00:00:10
Y luego tiene un coste, vale
00:00:15
Este coste es abstracto, para repasar que quiere decir abstracto, vale
00:00:19
El hecho de que la clase sea abstracta quiere decir que no puedo crear una instancia de esta clase, vale
00:00:24
Y que esta clase tendrá algunos métodos que son abstractos a su vez
00:00:31
Este abstracto es como si yo estuviera creando un contrato, vale
00:00:36
En el que digo, vale, existe este método, el método coste
00:00:41
Pero yo no te digo cómo se implementa
00:00:45
No hay una implementación real del método coste, vale
00:00:48
Cuando alguna clase
00:00:53
Futuramente
00:00:54
Extenderá mi clase producto
00:00:55
Si es la clase que extiende producto
00:00:59
Es una clase
00:01:01
No abstracta
00:01:03
Tendrá necesariamente que
00:01:05
Implementar este método, vale
00:01:08
Es como si
00:01:12
Una forma para estar seguro
00:01:13
Que cualquier clase que extiende producto
00:01:16
Y que no sea abstracta
00:01:18
Pues tiene que implementar este método
00:01:20
Tendrá este método seguramente
00:01:22
Porque si no, no se va a poder hacer nada
00:01:23
Daría un error
00:01:24
Vale
00:01:24
Es una generalización
00:01:26
Es decir, todos los productos tendrán una forma de pedir su coste
00:01:28
Pero como no sé de qué producto estamos hablando
00:01:32
No te puedo decir cómo se hace esta cosa
00:01:35
Entonces, la dejo al futuro
00:01:37
La dejo a cuando extenderé esta clase
00:01:40
Creando una clase más concreta
00:01:44
Esa clase concreta tendrá un método concreto para calcular su coste
00:01:45
Y lo tendrá que implementar
00:01:50
¿Se entiende esto?
00:01:51
Sí
00:01:52
¿Sí?
00:01:52
Pues nada
00:01:54
Entonces veis que está a punto de coma aquí
00:01:55
No tiene cuerpo
00:01:57
Pues está vacío
00:01:58
¿Sí?
00:02:00
Ok
00:02:01
Voy a extender un poquito esto
00:02:02
¿No?
00:02:06
Que chulo
00:02:07
Nuevo
00:02:07
Clase
00:02:16
Creo una clase
00:02:17
Que es una subclase de esto, ¿vale?
00:02:18
Que es la clase servicio
00:02:20
Vale
00:02:24
La clase servicio
00:02:26
Para mí
00:02:28
Extends
00:02:29
Producto
00:02:30
Ok, fijaos que me da un error
00:02:33
Y este error es
00:02:39
El tipo servicio tiene que implementar
00:02:42
El método abstracto heredado
00:02:45
Que es producto.coste
00:02:49
¿Sí?
00:02:51
Fijaos que si esta fuera abstracta también
00:02:52
Este problema no está
00:02:54
¿Sí?
00:02:57
Yo a este punto estoy heredando este método abstracto
00:02:59
Pero no necesariamente tengo que implementarlo
00:03:02
Podría implementarlo
00:03:07
Podría ser servicio que lo implementa
00:03:08
Y luego tenga otros métodos abstractos
00:03:10
Podría
00:03:12
Si la clase producto tuviera cinco métodos abstractos
00:03:12
Podría ser que la clase servicio implemente tres de estos
00:03:17
Dos los deje abstractos
00:03:21
Y añade dos que son abstractos para sus hijos
00:03:23
No sé si me explico lo que quiero decir
00:03:26
¿Vale?
00:03:28
No hay una limitación de
00:03:29
Ah, no, como es extendido y eres abstracta
00:03:30
Pues tienes que implementar todo
00:03:32
Y luego poner otros
00:03:33
O no puedes poner otros
00:03:34
Puedes hacer un poco lo que necesites
00:03:36
¿Sí?
00:03:38
Pero en nuestro caso no es abstracta
00:03:39
Es concreta esta clase
00:03:41
¿Vale?
00:03:44
Entonces por algún lado aquí tendré que
00:03:44
¿Cómo se dice?
00:03:47
Implementar el método que hemos dicho
00:03:50
¿Vale?
00:03:52
El método que hemos dicho
00:03:53
El método está aquí
00:03:53
El coste
00:03:54
Vale, aquí no he creado un constructor
00:03:55
Por lo tanto si os fijáis aquí no se queja del constructor
00:04:00
Primeramente si yo hiciera aquí public int coste
00:04:03
Return 1
00:04:09
Pues ya está
00:04:12
Él ahora está contento
00:04:13
¿Vale?
00:04:15
Puede utilizar el constructor
00:04:16
Le he implementado el coste que era abstracto antes
00:04:18
Y ahora es concreto
00:04:21
Por lo tanto he hecho
00:04:23
He cumplido con el contrato en un cierto sentido
00:04:24
Que me decía la clase abstracta
00:04:28
Y ya está
00:04:29
¿Vale?
00:04:30
Sin embargo necesitaría rellenar estas cosas
00:04:32
¿Vale?
00:04:35
Entonces aquí creo un constructor
00:04:36
Public
00:04:38
Producto
00:04:40
Bueno, hagámoslo de otra forma
00:04:42
Botón derecho
00:04:45
Este es source
00:04:47
Generate constructor using fields
00:04:53
Lo que quiero construir es un constructor que use
00:04:57
El nombre, el precio y la descripción
00:05:01
El código no
00:05:07
¿Vale?
00:05:07
Y él me crea
00:05:15
Producto con estas cosas aquí
00:05:16
¿Por qué el código no?
00:05:18
Porque me gustaría que el código fuera único
00:05:20
¿Vale?
00:05:22
Que fuera algo que no me viene dado desde el constructor
00:05:23
Que luego a lo mejor crea un producto y lo crea mal
00:05:28
¿Vale?
00:05:30
Sino que cada producto tenga su propio valor distinto de los demás
00:05:31
¿Vale?
00:05:37
Fijaos en una cosa interesante que es
00:05:38
Oye, mira, esta es una clase abstracta
00:05:41
Y yo no puedo crear objetos producto
00:05:43
Sin embargo tiene un constructor
00:05:46
Constructor
00:05:48
El objetivo del constructor es
00:05:50
Crear objetos de ese tipo
00:05:52
Es una cosa un poco rara
00:05:54
¿Vale?
00:05:56
Pero no es absurda en el sentido
00:05:57
Este de aquí no lo usaré nunca directamente
00:06:00
Pero sí lo podré usar desde las subclases
00:06:03
Como super constructor
00:06:06
¿Sí?
00:06:07
Por eso tiene sentido que esté aquí
00:06:09
¿Dudas?
00:06:11
Vale, ¿cómo?
00:06:13
Creo
00:06:16
El código
00:06:16
Para que sea único
00:06:19
Pues, por ejemplo, me puedo hacer una
00:06:22
Una variable
00:06:26
Estática
00:06:27
De producto
00:06:30
static int
00:06:32
O de
00:06:35
Que al principio vale cero
00:06:40
¿Vale?
00:06:42
Y aquí
00:06:46
This.código
00:06:47
Es igual a 0
00:06:50
Es igual a 0
00:06:51
Es igual a 0
00:06:51
Es igual a 0
00:06:51
Es igual a 0
00:06:51
Es igual a 0
00:06:51
Es igual a 0
00:06:51
Es igual a 0
00:06:52
Es igual a 0
00:06:52
Es igual a 0
00:06:52
Es igual a 0
00:06:52
Es igual a 0
00:06:53
Es igual a 0
00:06:53
Es igual a 0
00:06:54
Es igual a 0
00:06:55
Ten en cuenta que código
00:06:58
Es un
00:07:00
String
00:07:02
Por lo tanto transformo este valor de aquí
00:07:03
En comillas
00:07:07
En un string
00:07:08
Y para que sea siempre distinto
00:07:11
Y para que alguien desde fuera
00:07:13
No me moleste
00:07:19
Me seguís
00:07:22
Si yo lo dejo así
00:07:25
Cualquiera puede acceder a producto.code
00:07:28
Y volver a ponerlo a cero
00:07:30
Y entonces ya no tengo los productos únicos
00:07:32
Si lo pongo así
00:07:34
Private
00:07:36
Ahora esta cosa de aquí solo se puede modificar
00:07:37
Internamente en esta clase de aquí
00:07:40
Y solo se modifica aquí
00:07:42
Sumando uno, cada vez que creo un producto nuevo
00:07:44
Por lo tanto
00:07:46
No debería tener problemas
00:07:47
¿Si?
00:07:49
Tened en cuenta también que todas estas de aquí
00:07:50
También deberían ser privados
00:07:53
Probablemente para no ser accedido desde fuera
00:07:55
Y hacer cosas raras
00:07:58
O como mínimo
00:07:59
Protected
00:08:00
Para que mis hijos
00:08:01
Si la puedan utilizar y modificar
00:08:04
Pero fuera de la
00:08:06
Cadena de herencia y fuera del
00:08:09
Package que estoy produciendo yo
00:08:10
Pues no, no sea posible modificar
00:08:12
Estos datos de aquí
00:08:14
Para simplicidad por ahora lo dejamos así
00:08:15
Que si no luego tendríamos que hacer gettys
00:08:18
Set y cosas por eso
00:08:20
Vale
00:08:21
Ahora me da problemas
00:08:23
Aquí
00:08:28
Porque al haber hecho la creación
00:08:29
De este producto aquí, de este constructor
00:08:32
Pues he quitado el constructor
00:08:34
Por defecto, al haber quitado el constructor
00:08:36
Por defecto
00:08:38
Pues no puedo utilizar
00:08:39
Aquí el constructor por defecto mismo
00:08:42
Porque el constructor por defecto de servicio
00:08:44
Llamaría a super
00:08:46
Sin parámetros
00:08:48
Entonces tengo que acceder a un public
00:08:49
Servicio
00:08:52
Que pilla la cosa
00:08:53
Vale
00:08:57
Tened en cuenta también que servicio
00:08:59
Decíamos que tiene una cosa que es
00:09:02
Tiempo
00:09:04
Que
00:09:05
Sostancialmente es
00:09:08
Cuantos meses
00:09:09
Dura este servicio
00:09:11
Yo digo tres meses
00:09:15
Tres meses
00:09:19
Tres meses
00:09:19
Pues si tiempo es tres
00:09:19
Que este servicio ha sido contratado por tres meses
00:09:21
¿Sí?
00:09:23
Entonces
00:09:25
¿Qué recibe
00:09:26
Servicio como constructor?
00:09:27
Pues
00:09:31
Tened en cuenta que yo no crearé nunca
00:09:32
Un producto
00:09:35
Siempre crearé un servicio por ejemplo
00:09:36
Si quiero un servicio
00:09:39
Entonces estas cosas aquí las necesito
00:09:40
Y también
00:09:44
Intertiempo
00:09:46
¿Sí?
00:09:49
¿Qué hará este servicio?
00:09:50
Llamar super
00:09:55
De nombre
00:09:56
Precio
00:09:58
Y desk
00:09:59
Ahora estoy llamando
00:10:02
El constructor de la super clase
00:10:07
Con estos parámetros de aquí
00:10:10
Que se referirá a este constructor
00:10:11
Por lo tanto se hará esta cosa de aquí
00:10:14
¿Vale?
00:10:16
¿Vale?
00:10:17
Y luego
00:10:17
Pasaré a modificar
00:10:21
Las cosas propias
00:10:25
Del servicio
00:10:27
¿Sí?
00:10:28
Como por ejemplo
00:10:29
Dis.tiempo
00:10:30
Es igual a tiempo
00:10:32
Cosas que no estaba
00:10:33
En el mundo
00:10:37
Anterior
00:10:39
En producto tiempo no existe
00:10:40
¿Vale?
00:10:42
Por lo tanto me creo
00:10:43
Esto es como decir
00:10:44
Haz todo lo que harías para un producto
00:10:45
Porque esto es un producto
00:10:47
O sea, acuérdate que
00:10:49
Servicio es un producto
00:10:49
Y luego después
00:10:51
Esto de aquí
00:10:52
¿Vale?
00:10:53
Y también
00:10:54
Quiero hacer otra cosa
00:10:55
Que es
00:10:57
Dis.código
00:10:57
Es igual a
00:10:58
Dis.código
00:11:01
Se llama código
00:11:02
Dis.código
00:11:04
Pero no me lo pilla
00:11:11
Por alguna razón
00:11:12
Lo haremos así
00:11:13
Se haga así
00:11:13
Pero delante
00:11:14
Del código
00:11:17
Le sumo
00:11:18
Un S
00:11:21
Es decir
00:11:22
Que el producto es único
00:11:25
Y tendrá 1, 2, 3, 4, 5, 6, 7
00:11:26
Pero si hago un servicio
00:11:28
Le pongo una S delante
00:11:31
Entonces si me habéis puesto
00:11:33
El número 3
00:11:34
Ahora mi código
00:11:35
El código de este servicio
00:11:37
No es 3
00:11:38
Es S3
00:11:38
¿Sí?
00:11:40
De esta forma
00:11:43
En un cierto sentido
00:11:44
El código tendrá delante
00:11:45
Una letra
00:11:46
Que me hace
00:11:47
Saber
00:11:49
Si es un servicio
00:11:50
Si es un
00:11:51
Material
00:11:52
Si es un
00:11:54
Lo que sea
00:11:55
¿Sí?
00:11:56
Vale
00:11:58
Ok
00:11:59
Coste
00:12:01
¿Cómo se calcula el coste?
00:12:02
¿Vale?
00:12:04
De este servicio
00:12:04
Pues
00:12:06
Este coste
00:12:06
Será calculado como
00:12:07
Dis.precio
00:12:09
Multiplicado
00:12:12
Dis.tiempo
00:12:14
¿Vale?
00:12:16
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:17
¿Vale?
00:12:20
¿Sí?
00:12:21
¿Dudas?
00:12:22
Vale
00:12:32
Esta la hemos hecho
00:12:32
Servicio
00:12:36
Vamos a crear
00:12:37
Una nueva
00:12:38
Clase
00:12:39
¿Vale?
00:12:41
Siempre en nuestra jerarquía
00:12:41
De productos
00:12:43
Y cosas por el estilo
00:12:43
Que sería para mí
00:12:44
El servicio
00:12:46
Premium
00:12:47
Servicio Premium
00:12:48
Que extende que
00:12:49
Servicio en este caso
00:12:50
¿Vale?
00:12:51
Estoy siguiendo la jerarquía
00:12:51
¿Bien?
00:12:53
Entonces
00:12:53
Servicio Premium
00:12:54
Que tendrá
00:12:54
Será parecida a esto
00:12:55
Como
00:12:56
Constructor
00:12:56
¿Vale?
00:12:58
¿Vale?
00:12:59
Como
00:13:00
En este caso
00:13:02
Tiene la jerarquía
00:13:03
¿Bien?
00:13:05
Entonces
00:13:05
Servicio Premium
00:13:08
Que tendrá
00:13:09
Será parecido a esto
00:13:10
Como
00:13:11
Constructor
00:13:12
¿Vale?
00:13:13
Esa
00:13:14
Esa es la jerarquía
00:13:15
¿Vale?
00:13:16
Esa es la jerarquía
00:13:16
Pillará nombre, precio, descripción y tiempo
00:13:17
Y llamará
00:13:22
El super constructor
00:13:25
El constructor de la clase de arriba
00:13:28
Con estos cuatro parámetros
00:13:30
Porque os recuerdo que el servicio pilla cuatro parámetros
00:13:31
Y después
00:13:33
Tendrá que hacer lo que hace falta
00:13:38
Para completar
00:13:43
Lo que es un servicio premium
00:13:45
Tened en cuenta también que esto se llama servicio premium
00:13:48
¿Qué tiene de especial servicio premium con respecto a servicio?
00:13:51
Pues me lo invento
00:14:00
Que tiene unas llamadas urgentes
00:14:00
Int llamadas urgentes
00:14:03
Estas llamadas urgentes
00:14:07
Son prácticamente una serie de llamadas
00:14:10
Que tú contratas con este servicio premium
00:14:13
Y cuando
00:14:15
Te juegas una llamada urgente
00:14:15
Pues entonces vienen más rápidos
00:14:18
¿Vale? Pero pues esto cuesta más
00:14:19
¿Sí?
00:14:21
Entonces a cuando me crea un servicio premium
00:14:23
Tendré que darle también un int
00:14:25
Eh...
00:14:28
Llamadas
00:14:30
Y decir que
00:14:30
Llamadas
00:14:33
Urgentes
00:14:37
, es igual a llamadas
00:14:45
Es igual a llamadas
00:14:52
¿Sí?
00:14:53
Ahora
00:14:54
Coste
00:14:55
Está ya definido
00:14:58
¿Vale?
00:15:01
Está
00:15:03
No necesito implementarlo otra vez
00:15:03
Porque
00:15:06
Producto era abstracto
00:15:07
En servicio se ha implementado
00:15:10
Y servicio premium
00:15:12
Está importando el servicio premium
00:15:14
Está importando el servicio premium
00:15:15
Está importando el servicio premium
00:15:15
Está importando el servicio premium
00:15:15
Está importando ese servicio
00:15:15
Ese método
00:15:16
Si este cálculo del coste
00:15:18
Me vale
00:15:22
No necesito
00:15:22
Volver a escribirlo
00:15:24
¿Vale?
00:15:28
Pero hagamos que
00:15:28
El cálculo del coste de un servicio premium sea distinto
00:15:30
¿Vale?
00:15:33
¿Cómo calculo el coste
00:15:35
De un servicio premium?
00:15:38
Que además del tiempo
00:15:39
Que tú lo has pillado
00:15:41
¿Vale?
00:15:43
¿Vale?
00:15:44
Más
00:15:45
Llamadas urgentes
00:15:46
Multiplicado
00:15:55
100 euros por cada multiplicado
00:15:59
Que se yo
00:16:07
Un momento ¿Vale?
00:16:08
Entonces
00:16:11
Es la idea de que
00:16:12
El coste del servicio premium
00:16:13
Es distinto a la de un servicio premium
00:16:15
Es distinto
00:16:15
Se calcula de una forma distinta
00:16:16
¿Por qué me sirve esto?
00:16:18
Para luego trabajar con el polimorfismo
00:16:20
¿Vale?
00:16:23
Para ver que si yo llamo coste
00:16:24
Sobre un objeto
00:16:26
De tipo
00:16:28
O sea
00:16:29
Que como instancia es un servicio premium
00:16:29
Me hará esto
00:16:31
Si yo lo llamo sobre un
00:16:33
Servicio normal
00:16:35
Me hará esto
00:16:37
¿Sí?
00:16:38
¿Dudas hasta aquí?
00:16:41
Va
00:16:43
Sí
00:16:43
¿Vale?
00:16:44
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
¿Vale?
00:16:45
No, porque el precio es el precio del servicio
00:16:53
El precio del servicio es el mismo
00:16:56
Yo tengo mantenimiento
00:16:59
Mantenimiento son 50 euros al mes
00:17:01
¿Vale?
00:17:03
Y allí en precio pongo 50
00:17:04
Y tú lo puedes contratar como servicio normal
00:17:05
Entonces será 50 por los meses que tú
00:17:08
O además de los 50
00:17:10
Y a contratar un cierto número de servicios
00:17:13
Un número de llamadas urgentes
00:17:15
Entonces te costará 50 euros por los 6 meses
00:17:17
Más 100 euros por cada una llamada urgente
00:17:21
Que quieres tener en tu producto
00:17:24
Es absurdo, pero
00:17:27
Claro, el coste al final
00:17:29
Lo que dices tú del precio
00:17:37
Es el coste
00:17:39
El precio es el precio unitario
00:17:41
El coste es
00:17:42
Cuánto me viene a costar
00:17:43
Lo que tú has efectivamente
00:17:45
Que depende de
00:17:47
Cuánto tiempo
00:17:49
Y depende de cuántas horas
00:17:51
¿Vale?
00:17:53
Aquí ya había metido también un método de
00:17:54
Extender meses
00:17:56
O hacer cosas
00:17:58
Pero es que tiene
00:18:00
Tiene relativamente poco sentido
00:18:01
Para el cálculo del coste
00:18:02
Por lo tanto los dejamos fuera
00:18:03
¿Vale?
00:18:05
Tanto con esto
00:18:05
Ya algo hacemos
00:18:06
¿Sí?
00:18:07
También
00:18:09
Eh...
00:18:09
Bip, bip, bip, bip
00:18:13
Vamos a
00:18:14
Crear un nuevo
00:18:15
Clase
00:18:16
Que es para cosas
00:18:21
Que no son servicios
00:18:23
Son cosas material
00:18:24
Yo lo he llamado material
00:18:25
Pero bueno
00:18:26
Sería servicio
00:18:27
Sería producto físico
00:18:29
Sería...
00:18:31
¿Cómo queréis llamarlo?
00:18:32
Material
00:18:34
El material
00:18:34
Que yo pueda comprar
00:18:39
Tiene como característica
00:18:42
Que tiene un coste de envío
00:18:43
¿Vale?
00:18:45
Vale
00:18:45
Porque mientras los servicios
00:18:47
No tienen coste de envío
00:18:51
Porque tú contratas
00:18:52
El interés del servicio
00:18:53
Y ya lo tienes
00:18:54
Pues un material
00:18:54
Para mandártelo a tu casa
00:18:56
Pues necesito
00:18:57
Para pagar
00:18:58
Algo de envío
00:18:59
¿Sí?
00:19:00
Y entonces
00:19:00
Ah, perdón
00:19:01
Eh...
00:19:04
Material
00:19:04
Extende
00:19:05
¿Quién extiende material?
00:19:06
Producto
00:19:08
Porque no es un servicio
00:19:09
¿Vale?
00:19:12
Y
00:19:14
Public
00:19:14
Material
00:19:15
Que pillará
00:19:16
Todas estas cosas de aquí
00:19:19
¿Vale?
00:19:22
¿Vale?
00:19:22
Pillará nombre, precio, descripción
00:19:32
Tiempo, ¿no?
00:19:35
Y llamará
00:19:39
Super
00:19:40
Nombre, precio, descripción
00:19:41
O sea, el super
00:19:43
El...
00:19:45
Este super
00:19:45
Es el constructor
00:19:46
¿De quién?
00:19:47
¿De qué clase?
00:19:49
De producto
00:19:51
¿Vale?
00:19:52
Y el constructor de producto
00:19:52
Pillaba estos tres parámetros
00:19:53
¿Sí?
00:19:54
Además
00:19:56
Aquí tendré que ponerle
00:19:57
Cuánto costa el envío
00:19:58
¿Sí?
00:19:59
Y tendré que hacer
00:20:04
Que dis.envío
00:20:05
Es igual a envío
00:20:07
Y ahora
00:20:09
Cuando sobre escribo el coste
00:20:11
O sea, cuando
00:20:12
Fijaos que ahora se enfada
00:20:13
¿Por qué se enfada?
00:20:15
¿Por qué?
00:20:18
¿Por qué?
00:20:20
El método es abstracto
00:20:22
Y no lo ha implementado
00:20:24
¿Vale?
00:20:25
Aquí no se enfadaba
00:20:27
Porque yo extendiendo servicio
00:20:29
Ya el método estaba implementado
00:20:30
Pero ahora estoy volviendo
00:20:32
A extender una clase abstracta
00:20:34
Que es la clase producto
00:20:36
Entonces me está diciendo
00:20:37
Oye, mira, que te falta
00:20:39
El método abstracto este de aquí
00:20:40
Que tienes que implementar tú
00:20:42
¿Vale?
00:20:44
¿Vale?
00:20:46
Entonces yo me voy aquí
00:20:46
Y me lo implemento
00:20:48
Y digo que esto es
00:20:54
Return
00:20:56
Dis.precio
00:20:57
Más
00:21:06
Dis.envío
00:21:08
, ¿por qué?
00:21:15
¿Por qué no?
00:21:16
Pues esto es��
00:21:17
¿Por qué?
00:21:26
¿Por qué?
00:21:27
Entonces aquí se entiende
00:21:28
Que material es un objeto concreto
00:21:30
Es un producto concreto
00:21:32
¿Vale?
00:21:33
Compro un ordenador
00:21:33
Si compro 10 ordenadores
00:21:34
No es que puedo poner aquí
00:21:36
10 por esto
00:21:37
No, tengo que comprar 10 productos ordenados
00:21:38
¿Sí?
00:21:40
Es absurdo
00:21:41
Así no es como se haría
00:21:42
En una...
00:21:44
En un pedido real tú dices
00:21:45
Quiero este producto por 10
00:21:46
Pero aquí lo hacemos así para simplificar
00:21:48
Dudas
00:21:51
Entonces con esto he creado
00:21:53
Mi estructura
00:21:55
¿Vale?
00:21:58
Mi estructura tiene
00:22:03
Producto
00:22:04
Tiene servicio
00:22:06
Que hereda de producto
00:22:11
Tiene servicio premium
00:22:14
Que hereda de servicio
00:22:18
Y tiene
00:22:23
Material
00:22:24
Que hereda de producto
00:22:26
Esto es lo que he hecho más o menos
00:22:29
Se me ha olvidado algo
00:22:31
Que habíamos empezado bien con esto
00:22:33
Pero ahora lo tenemos que hacer también los otros
00:22:35
En particular
00:22:39
Si soy un material
00:22:43
Quiero poner una M
00:22:44
Y que si soy un servicio premium
00:22:47
Le pego delante
00:22:55
Una P
00:22:58
Vendría premium service
00:22:59
¿Vale?
00:23:02
Ok
00:23:08
Y con esto más o menos
00:23:08
Tengo
00:23:11
Creada la parte de los productos
00:23:14
¿Vale?
00:23:17
Si
00:23:18
No
00:23:18
Cuando llamo esto
00:23:29
Yo tenía un numerito
00:23:32
Esto es este de aquí
00:23:34
Que llama esto
00:23:36
Por lo tanto esto mete un número
00:23:37
3
00:23:39
¿Vale?
00:23:40
Le pega delante una S
00:23:40
Se vuelve S3
00:23:42
Y luego llega aquí
00:23:44
Y lo que hace es meterle una P delante
00:23:46
Premium service
00:23:48
No servicio premium
00:23:49
PS
00:23:50
O sea, si lo quisiera poner detrás
00:23:53
Pues eso es complicado
00:23:56
Debería buscar
00:23:57
Quitar la primera
00:23:59
Meter la cosa
00:24:00
Se podría hacer
00:24:01
Pero no quiero perder tiempo ahí
00:24:02
¿Vale?
00:24:04
Lo importante es que tenga una cosa distinta
00:24:04
Técnicamente yo
00:24:06
El código son todos distintos
00:24:08
No puede haber dos códigos iguales
00:24:09
Porque todo depende del producto
00:24:11
Todos llegan al producto
00:24:13
Entonces los números siempre cambiarán
00:24:14
Siempre serán productos distintos
00:24:16
Lo único es que si quiero saber
00:24:17
Si es un servicio premium
00:24:19
Un servicio o un cosa
00:24:21
A través de su código
00:24:23
La única cosa que tengo que mirar
00:24:25
Es la primera letra
00:24:26
PSOM
00:24:27
¿Sí?
00:24:28
Vale
00:24:31
Entonces
00:24:32
Ahora lo que vamos a hacer
00:24:34
Es crear otra
00:24:36
Clase
00:24:37
Que manipula
00:24:40
Que maneja
00:24:41
Algunos productos
00:24:42
¿Vale?
00:24:43
Vamos a crear un tipo de
00:24:44
De entidad
00:24:45
De mi
00:24:46
De mi programa
00:24:47
Que es la clase
00:24:48
Usuario
00:24:49
¿Vale?
00:24:50
O cliente
00:24:51
O lo que sea
00:24:52
Y luego después
00:24:53
Vamos a hacer una clase
00:24:54
Main
00:24:55
Que es la que
00:24:56
Relaciona estas cosas
00:24:57
¿Sí?
00:24:58
Entonces vamos a pillar
00:24:59
Un usuario
00:25:00
Vamos a hacer
00:25:01
Un usuario
00:25:02
Un usuario
00:25:03
Un usuario
00:25:04
Un usuario
00:25:05
Un usuario
00:25:06
Un usuario
00:25:07
Un usuario
00:25:08
Un usuario
00:25:09
Un usuario
00:25:10
Un usuario
00:25:11
Un usuario
00:25:12
Un usuario
00:25:13
Un usuario
00:25:14
Un usuario
00:25:15
Un usuario
00:25:16
Un usuario
00:25:17
Un usuario
00:25:18
Un usuario
00:25:19
Un usuario
00:25:20
Un usuario
00:25:21
Un usuario
00:25:22
Un usuario
00:25:23
Un usuario
00:25:24
Un usuario
00:25:25
Un usuario
00:25:26
Un usuario
00:25:27
Un usuario
00:25:28
Un usuario
00:25:29
Un usuario
00:25:30
Un usuario
00:25:31
Un usuario
00:25:32
Un usuario
00:25:33
Un usuario
00:25:34
Un usuario
00:25:35
Un usuario
00:25:36
Un usuario
00:25:37
Un usuario
00:25:38
Un usuario
00:25:39
Un usuario
00:25:40
Un usuario
00:25:41
Un usuario
00:25:42
Un usuario
00:25:43
Un usuario
00:25:44
Un usuario
00:25:45
Un usuario
00:25:46
Un usuario
00:25:47
Un usuario
00:25:48
Un usuario
00:25:49
Un usuario
00:25:50
Un usuario
00:25:51
Un usuario
00:25:52
Un usuario
00:25:53
Un usuario
00:25:54
Un usuario
00:25:55
Un usuario
00:25:56
Un usuario
00:25:57
Un usuario
00:25:58
Un usuario
00:25:59
Un usuario
00:26:00
Un usuario
00:26:01
Un usuario
00:26:02
Un usuario
00:26:03
Un usuario
00:26:04
Un usuario
00:26:05
Un usuario
00:26:06
Un usuario
00:26:07
Un usuario
00:26:08
Un usuario
00:26:09
Un usuario
00:26:10
Un usuario
00:26:11
Un usuario
00:26:12
Un usuario
00:26:13
Un usuario
00:26:14
Un usuario
00:26:15
Un usuario
00:26:16
Un usuario
00:26:17
Un usuario
00:26:18
Un usuario
00:26:19
Un usuario
00:26:20
Un usuario
00:26:21
Un usuario
00:26:22
Un usuario
00:26:23
Un usuario
00:26:24
Un usuario
00:26:25
Un usuario
00:26:26
Un usuario
00:26:27
Un usuario
00:26:28
Un usuario
00:26:29
Un usuario
00:26:30
Un usuario
00:26:31
Un usuario
00:26:32
Un usuario
00:26:33
Un usuario
00:26:34
Un usuario
00:26:35
Un usuario
00:26:36
Un usuario
00:26:37
Un usuario
00:26:38
Un usuario
00:26:39
Un usuario
00:26:40
Un usuario
00:26:41
Un usuario
00:26:42
Un usuario
00:26:43
Un usuario
00:26:44
Un usuario
00:26:45
Un usuario
00:26:46
Un usuario
00:26:47
Un usuario
00:26:48
Un usuario
00:26:49
Un usuario
00:26:50
Un usuario
00:26:51
Un usuario
00:26:52
Un usuario
00:26:53
Un usuario
00:26:54
Un usuario
00:26:55
Un usuario
00:26:56
Un usuario
00:26:57
Un usuario
00:26:58
Un usuario
00:26:59
Un usuario
00:27:00
Un usuario
00:27:01
Un usuario
00:27:02
Un usuario
00:27:03
Un usuario
00:27:04
Un usuario
00:27:05
Un usuario
00:27:06
Un usuario
00:27:07
Un usuario
00:27:08
Un usuario
00:27:09
Un usuario
00:27:10
Un usuario
00:27:11
Un usuario
00:27:12
Un usuario
00:27:13
Un usuario
00:27:14
Un usuario
00:27:15
Un usuario
00:27:16
Un usuario
00:27:17
Un usuario
00:27:18
Un usuario
00:27:19
Un usuario
00:27:20
Un usuario
00:27:21
Un usuario
00:27:22
Un usuario
00:27:23
Un usuario
00:27:24
Un usuario
00:27:25
Un usuario
00:27:26
Un usuario
00:27:27
Un usuario
00:27:28
Un usuario
00:27:29
Un usuario
00:27:30
Un usuario
00:27:31
Un usuario
00:27:32
Un usuario
00:27:33
Un usuario
00:27:34
Un usuario
00:27:35
Un usuario
00:27:36
Un usuario
00:27:37
Un usuario
00:27:38
Un usuario
00:27:39
Un usuario
00:27:40
Un usuario
00:27:41
Un usuario
00:27:42
Un usuario
00:27:43
Un usuario
00:27:44
Un usuario
00:27:45
Un usuario
00:27:46
Un usuario
00:27:47
Un usuario
00:27:48
Un usuario
00:27:49
Un usuario
00:27:50
Un usuario
00:27:51
Un usuario
00:27:52
Un usuario
00:27:53
Un usuario
00:27:54
Un usuario
00:27:55
Un usuario
00:27:56
Un usuario
00:27:57
Un usuario
00:27:58
Un usuario
00:27:59
Un usuario
00:28:00
Un usuario
00:28:01
Un usuario
00:28:02
Un usuario
00:28:03
Un usuario
00:28:04
Un usuario
00:28:05
Un usuario
00:28:06
Un usuario
00:28:07
Un usuario
00:28:08
Un usuario
00:28:09
Un usuario
00:28:10
Un usuario
00:28:11
Un usuario
00:28:12
Un usuario
00:28:13
Un usuario
00:28:14
Un usuario
00:28:15
Un usuario
00:28:16
Un usuario
00:28:17
Un usuario
00:28:18
Un usuario
00:28:19
Un usuario
00:28:20
Un usuario
00:28:21
Un usuario
00:28:22
Un usuario
00:28:23
Un usuario
00:28:24
Un usuario
00:28:25
Un usuario
00:28:26
Un usuario
00:28:27
Un usuario
00:28:28
Un usuario
00:28:29
Un usuario
00:28:30
Un usuario
00:28:31
Un usuario
00:28:32
Un usuario
00:28:33
Un usuario
00:28:34
Un usuario
00:28:35
Un usuario
00:28:36
Un usuario
00:28:37
si, pero no quiero usar premio otra vez porque luego me viene la pena
00:28:38
cliente
00:28:43
gold
00:28:45
claramente
00:28:47
que extiende
00:28:48
cliente
00:28:52
que tiene
00:28:56
prácticamente
00:29:02
esto
00:29:04
cliente gold
00:29:07
super
00:29:17
nombre
00:29:20
esto tiene claramente un int
00:29:22
descuento
00:29:27
coma int
00:29:28
descuento
00:29:33
distruto
00:29:34
punto descuento
00:29:37
es igual al descuento
00:29:38
vale, luego vamos a ver si lo usamos
00:29:40
para algo, la idea sería que
00:29:43
si eres un cliente
00:29:45
gold, pues lo que estás haciendo
00:29:46
es que tienes derecho a un descuento
00:29:49
sobre las cosas, entonces
00:29:51
ya veremos
00:29:53
para que nos sirve todo esto
00:29:54
vale
00:29:56
esto es
00:29:58
un poquito de repaso, un poquito de idea
00:30:00
de como se crean
00:30:03
herencia, constructor
00:30:05
el super
00:30:07
la sobre escritura de métodos
00:30:08
etc, etc, etc
00:30:10
vamos ahora a aplicarlo
00:30:11
vale, es donde vemos más
00:30:14
como funciona el polimorfismo
00:30:15
y como podemos
00:30:17
utilizarlo, vale
00:30:18
entonces creamos una clase main
00:30:21
que será nuestro sistema
00:30:23
lo llamo sistema
00:30:25
sistema
00:30:27
que tiene el main
00:30:28
vale, entonces
00:30:30
este sistema lo que
00:30:33
debería hacer es
00:30:35
me permite trabajar
00:30:36
con la gente, vale, trabajar con
00:30:38
estos sistemas
00:30:41
para poder trabajar con este sistema
00:30:42
y luego lo complicamos cuanto nos da la gana
00:30:45
voy a crear
00:30:47
algunas cosillas creadas así
00:30:48
para poder trabajar
00:30:51
vale, y luego a partir de allí
00:30:53
vemos como
00:30:55
como lo trabajamos
00:30:56
como lo extendemos, vale
00:30:59
entonces me voy a crear un par de usuarios
00:31:00
cliente
00:31:03
p1
00:31:05
c0
00:31:06
es igual a new cliente
00:31:08
que se llama
00:31:12
cliente 0
00:31:14
cliente
00:31:16
c1 es igual a
00:31:21
new cliente
00:31:23
cliente 1
00:31:25
y cliente
00:31:28
gold
00:31:32
c2
00:31:33
es igual a new cliente gold
00:31:35
de cliente
00:31:39
gold
00:31:43
2
00:31:44
coma
00:31:46
10%
00:31:48
si
00:31:50
entonces esto luego lo estoy haciendo así
00:31:53
para ir rápidamente, vale
00:31:55
podría hacerme un menú
00:31:57
donde le digo, hay la opción
00:31:59
añadir usuario, entonces mi sistema me permite
00:32:01
crear un usuario nuevo donde me pregunto
00:32:03
cuál es su nombre, si es un cliente Gold
00:32:05
se les es un cliente Gold
00:32:07
tierra de su
00:32:09
eeeep
00:32:10
el descuento y cosas por el estile
00:32:12
vale
00:32:14
por ahora no lo hago
00:32:14
adelante voy
00:32:16
voy a hacer lo que me interesa de verdad
00:32:17
luego ya
00:32:20
y luego me necesito una cantidad de
00:32:22
servicios
00:32:25
vale, esto me hace distraer a los clientes
00:32:25
se los vendìsono a los clientes
00:32:27
si
00:32:30
Por ahora lo hacemos así
00:32:33
Luego lo creamos
00:32:35
¿Vale?
00:32:35
Entonces por ejemplo
00:32:36
Tengo un
00:32:37
Producto
00:32:38
¿Si?
00:32:40
Producto X
00:32:41
Que es igual a new producto
00:32:42
¿Qué parámetros pillaba?
00:32:44
El nombre
00:32:48
Así
00:32:49
Esto es un
00:32:51
Ordenador
00:32:53
Coma
00:32:54
¿Qué más?
00:32:56
Código
00:33:00
Que pero se lo crea el solo
00:33:00
El precio
00:33:01
Precio son
00:33:03
Mil euros
00:33:04
Y ya está
00:33:06
Es descripción
00:33:07
Un ordenador
00:33:09
Muy bonito
00:33:13
Perfecto
00:33:14
¿Por qué se enfada?
00:33:18
¿Y por qué nadie me ha parado?
00:33:21
Porque producto es abstracto
00:33:25
No puedo crear un producto
00:33:28
El hecho que producto
00:33:31
Sea abstract
00:33:34
Impide que se pueda hacer
00:33:37
Una instancia de producto
00:33:39
¿Por qué no se puede hacer
00:33:41
Una instancia de producto?
00:33:42
Porque es abstracto
00:33:44
¿Por qué no se puede hacer
00:33:45
Una instancia de producto?
00:33:46
Porque si yo creara un producto
00:33:53
Cuando luego uso este método de aquí
00:33:56
Él no sabe qué hacer
00:33:58
Porque este método de aquí
00:34:01
No sabe qué hacer
00:34:01
No tiene un cuerpo
00:34:01
No se sabe
00:34:02
Qué debería hacer
00:34:04
Es un método abstracto
00:34:05
Es un método que no se puede utilizar
00:34:07
En un objeto concreto
00:34:08
Es una generalización
00:34:09
Es un contrato
00:34:12
Es una idea
00:34:14
De cómo tiene que ser un producto
00:34:15
Pero no puede nunca ser un producto real
00:34:17
Entonces no puedo crear un producto
00:34:19
Pero si lo que puedo crear
00:34:22
Es por ejemplo un material
00:34:25
Que es un ordenador
00:34:31
Que cuesta mil
00:34:33
Es un ordenador muy bonito
00:34:36
Y cuesta por envío
00:34:38
Trece euros
00:34:40
Ahora sí
00:34:42
Luego por ejemplo
00:34:45
Creo un servicio
00:34:53
Servicio
00:34:55
S1
00:34:56
S1
00:35:00
S1
00:35:01
No entiendo
00:35:01
No entiendo
00:35:13
Sí, un segundo solo
00:35:13
Servicio S1
00:35:16
Pues un servicio
00:35:20
De
00:35:22
Valores
00:35:23
No me acuerdo qué era
00:35:26
Era siempre nombre
00:35:27
Esto es
00:35:28
Entendimiento
00:35:30
Coma
00:35:31
¿Cuánto cuesta al mes el mantenimiento?
00:35:36
Claramente
00:35:39
Cento cinco
00:35:39
Cento euros
00:35:40
Coma
00:35:41
Resolvemos
00:35:44
Todos tus problemas
00:35:48
Coma
00:35:50
Y
00:35:55
¿Cuánto tiempo?
00:35:56
Vale
00:35:58
Pongamos que esto es
00:35:59
El paquete de seis meses
00:36:00
Vale
00:36:01
Luego está
00:36:01
Hagamos otro servicio
00:36:04
Servicio de actualización
00:36:07
Actualización
00:36:11
Que son diez
00:36:14
Euros
00:36:16
Actualizamos tu software
00:36:19
Y por un mes
00:36:24
Y por un mes
00:36:30
Actualizamos tu software
00:36:30
Actualizamos tu software
00:36:30
Actualizamos tu software
00:36:30
Actualizamos tu software
00:36:30
Y servicio Premium
00:36:31
Actualizamos mi site
00:36:33
Y comencemos
00:36:33
Aquí
00:36:33
Y servicio Premium
00:36:34
Chicos
00:36:40
Hola
00:36:42
Jago
00:36:44
오라
00:36:45
Servicio Premium
00:36:47
Servicio Premium
00:36:49
De
00:36:50
Eeeee
00:36:52
Que soy yo
00:36:53
O
00:36:55
Mantenimiento Plus
00:36:56
Que costa более de cien euros
00:37:00
Que parte siempre 100 euros
00:37:01
Pero resolvemos
00:37:01
Todo y más
00:37:05
Por
00:37:06
Tres meses
00:37:09
Con diez llamadas de urgentas
00:37:11
Incluidas
00:37:14
¿Sí?
00:37:16
Vale, entonces
00:37:19
Todo esto
00:37:20
Es para hacer pruebas
00:37:22
En realidad esto no se debería poner aquí
00:37:24
Aquí debería haber un interfaz
00:37:26
De algún tipo que te dice
00:37:28
Añade un utente
00:37:30
Vale, sí, crea un nuevo servicio
00:37:31
Vale, crea un nuevo servicio
00:37:34
¿Qué parámetros me das?
00:37:35
Y crea el nuevo servicio
00:37:37
Luego a lo mejor este servicio lo venda el utente
00:37:38
¿Me entendéis lo que quiero decir?
00:37:40
Pero lo quiero hacer un poquito más rápido
00:37:43
Por lo tanto me creo estas cosas de aquí
00:37:45
Y ahora las asigno a los clientes de alguna forma
00:37:47
¿Sí?
00:37:49
¿Sí?
00:37:51
Pensando en eso para ejercir
00:37:52
Para eso tendría que ser
00:37:54
Menos que
00:37:57
Luego los servicios
00:37:57
Que no lo hace
00:38:00
¿Sí?
00:38:01
Sobre los productos
00:38:01
Es esto
00:38:03
Ahora lo vamos a hacer
00:38:06
¿Vale?
00:38:10
Entonces, ahora mi sistema
00:38:11
Imaginaos que de un lado tiene
00:38:13
Un fichero
00:38:16
De donde carga todos los clientes
00:38:17
Y de otro lado tiene un fichero
00:38:21
Inventarios de donde calcula
00:38:22
Donde saca
00:38:25
Todos los materiales
00:38:26
Y servicios que puede vender
00:38:28
¿Vale?
00:38:31
¿Qué son estos?
00:38:33
Hagamos otro material
00:38:33
Por otra cosa
00:38:35
Por jugar con ello
00:38:36
¿Vale?
00:38:38
Es un portátil
00:38:39
De 2000 euros
00:38:40
Un portátil
00:38:43
Muy bonito
00:38:48
Y esto no me acuerdo que era
00:38:50
Este 13 que era
00:38:52
No me seguís
00:38:55
Le envío
00:39:00
¿Cuánto costa el envío?
00:39:01
Señores, me perdí
00:39:02
Esto costa 10 euros
00:39:03
Porque pesa menos
00:39:06
¿Vale?
00:39:08
Entonces
00:39:09
Asumamos que esto lo haya hecho
00:39:10
De alguna forma
00:39:12
¿Vale?
00:39:13
Repito que
00:39:14
Podría ser que tú lo hagas
00:39:14
Manualmente
00:39:16
Cosas así
00:39:17
No lo quiero hacer manualmente
00:39:17
Porque si no cada vez que hago un ejemplo
00:39:18
Tengo que volver a recrearme
00:39:20
Todas estas cosas
00:39:22
¿Vale?
00:39:23
Entonces me las he creado yo
00:39:23
Directamente
00:39:25
Esto lo más obvio
00:39:26
Repito
00:39:27
Sería que
00:39:28
Esta información
00:39:29
Esta información
00:39:31
La saque de algún lado
00:39:31
De una base de datos
00:39:33
De un fichero
00:39:35
Como nosotros no sabemos usar
00:39:37
Ni base de datos
00:39:39
Ni ficheros
00:39:40
¿Os acordáis el ejercicio eso?
00:39:40
Donde os daba una cadena
00:39:43
Separada por punto y coma
00:39:44
Y comas
00:39:47
Y de allí creabais
00:39:48
No me acuerdo que tipo de objeto
00:39:49
Pues eso podría ser
00:39:51
Como lo usamos nosotros
00:39:52
Nosotros nos dan un parámetro
00:39:53
Donde ponen
00:39:55
Cliente 0
00:39:56
Cliente 1
00:39:57
O sea cliente 0 punto y coma
00:39:58
Cliente 1 punto y coma
00:39:59
Cliente 2 punto y coma
00:40:00
Cliente 2 punto y coma
00:40:01
Y en base a eso
00:40:03
Yo me creé los
00:40:03
Los objetos que quiero
00:40:04
Lo veremos a lo mejor
00:40:06
Si tenemos más tiempo más adelante
00:40:07
Por ahora centramos
00:40:09
Solo que
00:40:10
Estos son los objetos
00:40:11
Con que voy a utilizar
00:40:12
¿Vale?
00:40:14
Entonces
00:40:15
¿Qué quiero hacer ahora?
00:40:16
Yo quiero
00:40:17
Y esto si que ya empiezo a hacerlo
00:40:18
Poder
00:40:20
Seleccionar un cliente
00:40:21
Y decirle
00:40:23
Oye mira
00:40:24
Este cliente
00:40:25
Asociale uno de los productos
00:40:26
Que tú tienes
00:40:28
¿Si?
00:40:29
Entonces
00:40:31
¿Cómo voy a hacer
00:40:32
Eso?
00:40:33
Primera cosa
00:40:35
A lo mejor dentro de cliente
00:40:37
Me gustaría
00:40:38
Tener un
00:40:39
Un método
00:40:40
Que yo te doy un producto
00:40:42
Y tú lo añades a tus productos
00:40:43
¿Vale?
00:40:45
Entonces creámoslo
00:40:46
Public
00:40:48
Bolean
00:40:54
Inserta
00:40:55
Producto
00:40:59
¿Qué pilla este
00:41:01
Este inserta producto?
00:41:03
Servicio
00:41:07
Material
00:41:08
¿Qué pilla?
00:41:08
Un producto
00:41:14
¿Qué es este?
00:41:30
O bueno
00:41:31
Eh
00:41:32
¡Eh!
00:41:33
¡Oh!
00:41:37
No se como decirlo
00:41:37
Representaría
00:41:39
Si se ha podido insertar
00:41:40
¿Vale?
00:41:42
Entonces insertar
00:41:43
La idea es, si hay algún problema
00:41:50
Allí no se puede insertar este producto
00:41:52
Pues que al final me diga falso
00:41:54
En el momento en que lo puedo insertar
00:41:55
Pues me diga tuvo
00:41:57
¿Si?
00:41:58
Ehh
00:41:59
¿Me sirve de algo?
00:42:00
No, probablemente no, pero en casos más avanzados, cuando veremos las excepciones, que podría explotar algo aquí dentro,
00:42:01
pues me podría servir de, oye, mira, he intentado hacerlo, pero no lo he conseguido, entonces te digo falso, ¿sí?
00:42:08
Entonces, ahora tengo que poner un nuevo producto, hemos asumido que esto está siempre, no hay null, no hay zonas null en mi producto, ¿vale?
00:42:13
Por lo tanto, lo que voy a hacer es asumir que mi producto ya está lleno, y tengo que añadirle un hueco al final, para poder añadir un nuevo producto, ¿vale?
00:42:24
Lo de siempre, for, bueno, producto, p es igual, nuevo productos, es igual a new productos,
00:42:35
de productos.length, más uno.
00:42:54
Puedo hacer una pregunta, no hay calor aquí, ¿podéis abrir un par de ventanas, o os mata?
00:43:06
Para regular.
00:43:17
Si la abres, bueno, si no, dejadla así, es solo que, vale, entonces, este nuevo producto, es un array de productos un poquito más grande del que tenía antes,
00:43:24
si antes tenía tres productos, ahora tengo cuatro, ¿sí?
00:43:48
Voy a...
00:43:52
for int i es igual a cero, i menor que productos.length, i más más,
00:43:54
nuevo productos de i es igual a productos de i, estoy copiando productos de i dentro de nuevo productos, ¿sí?
00:44:03
Al final de todo esto, productos, es igual a nuevo productos, esto ya lo hemos hecho quince veces, ¿vale?
00:44:24
Siempre lo mismo, de esta forma, ahora, en productos, en la última posición de productos, pues, tengo una posición libre, entonces, puedo decir que,
00:44:40
productos de productos.length, menos uno, es igual a p, y entonces, insertado, es igual a true, tiene poco sentido,
00:44:54
esto tendría sentido si aquí hubiese un if, o si lo puedo hacer, entonces, hazlo, no, pero bueno, mira, sí, entonces,
00:45:13
ahora, yo tengo ya un método para insertar productos, dentro de este de aquí, vale, fenomenal, entonces, ahora, yo aquí,
00:45:23
lo que voy a hacer, es, un, leer, por ejemplo, a qué cliente quiero insertar el, el producto, y, qué producto insertar, ¿vale?
00:45:34
Entonces, probamos así.
00:45:47
Voy a, empezamos con, voy a describir todos los clientes que tengo, ¿vale?
00:45:53
Es decir, cuando yo empiezo el sistema, me dice, estos son tus clientes, ¿a qué clientes quieres añadir algo?
00:46:09
¿Sí?
00:46:17
Entonces, empezamos que lo haga una vez, luego, después, lo ponemos en un while,
00:46:18
y luego, lo hacemos muchas veces, ¿sí?
00:46:23
Quiero leer cosas, entonces, scanner, scan, es igual a new scanner, de system.in,
00:46:26
scanner es este de aquí, vale, ok, ahora, yo quiero aquí, poner una descripción,
00:46:41
de cada cliente, ¿vale?
00:46:53
Con su código, sustancialmente, sería, si eso, elige, el código, cliente, dos puntos, pero, antes, de esta cosa aquí, aquí dentro, aquí,
00:46:57
quiero que me ponga, todos los códigos clientes posibles, de estos clientes de aquí, ¿se entiende?
00:47:15
¿Se entiende lo que quiero decir?
00:47:23
¿Cómo lo hago?
00:47:25
Sí, eso, vamos por parte, me voy a cliente, y me creo un toString, porque así no tengo que hacer, complicarme, después, ¿vale?
00:47:30
public string toString
00:47:41
y mi toString es return
00:47:44
return
00:47:50
nombre
00:47:50
más
00:47:54
dos puntos
00:47:58
más
00:48:00
código
00:48:02
va, perfecto, de esta forma, ahora, puedo escribir, directamente, un cliente, y me escribirá esta cosa aquí, ¿vale?
00:48:04
por ejemplo, podría hacer, si eso,
00:48:19
c1
00:48:23
y, c2
00:48:26
¿Sí?
00:48:41
Vamos a ver, ¿qué hace esto?
00:48:43
Esto me pondría, esta cosa aquí, cliente 0, tiene este código, el cliente 1, tiene este código, el cliente 2, tiene este código,
00:48:47
elige el código cliente
00:48:53
os gusta
00:48:56
señores yo entiendo que haga reír pero
00:49:08
os gusta este código aquí
00:49:10
os parece que tiene sentido
00:49:16
porque no
00:49:19
bueno pero el cliente gold
00:49:23
hereda de esto
00:49:24
y es siempre un cliente
00:49:27
desde mi perspectiva me vale
00:49:30
el problema de esta cosa aquí
00:49:31
es que como lo hemos planteado
00:49:34
yo aquí tengo que hacer
00:49:36
un system.presentln por cada
00:49:38
cliente
00:49:40
y eso es feo
00:49:42
porque si ahora aquí en vez de 3 clientes te pongo 50
00:49:43
que hago? modifico el código
00:49:50
no habría una forma de hacerlo
00:49:52
un poquito más elegante
00:49:54
vale hago un for
00:49:56
dime el for
00:49:59
control espacio
00:49:59
si subo
00:50:22
no
00:50:30
este si
00:50:32
6 0
00:50:42
no pero la variable
00:50:46
la variable es la variable 0
00:50:50
no pero la variable 0
00:50:51
¿Qué quiere decir la variable?
00:50:52
C0, minúscula
00:50:55
¿Qué me falta para poder hacer esto?
00:50:56
Un array
00:51:08
No voy a hacer un for
00:51:09
Si no tengo un array
00:51:11
¿Vale?
00:51:12
Entonces en vez de poner los clientes así feo
00:51:13
Me voy a decir
00:51:17
Vale, hagamos un array de clientes
00:51:18
En mi caso son tres
00:51:21
¿Vale?
00:51:30
Entonces en vez de utilizar esto
00:51:32
¿Qué uso?
00:51:35
Clientes
00:51:42
De cero
00:51:42
Clientes
00:51:50
De u
00:51:50
Clientes de u
00:51:51
Clientes de u
00:51:51
Clientes de u
00:51:51
Clientes de u
00:51:51
A este punto si puedo hacer esta cosa aquí
00:51:55
Que por cierto no es de args
00:52:04
Si no es de clientes
00:52:06
Y por cada uno de ellos
00:52:07
Clientes
00:52:11
Clientes
00:52:13
Ahí
00:52:13
Vale
00:52:16
Y ahora ya pueden ser mil clientes
00:52:21
Y esto ya me funciona
00:52:24
¿Si?
00:52:25
Ahora, cuidado
00:52:29
¿Le veis algo raro aquí?
00:52:30
En esta parte de aquí
00:52:42
¿Le veis algo raro?
00:52:43
Algo que hasta la semana pasada no hacíamos
00:52:48
¿Qué es esto?
00:52:50
¿Qué es esto?
00:52:50
¿Qué es esto?
00:52:50
¿Qué es esto?
00:52:50
¿Qué es esto?
00:52:50
Sí, vale
00:53:00
No, pero veis que
00:53:01
¿Qué tipo tiene este cliente?
00:53:04
Es un array
00:53:09
De cliente
00:53:11
Sin embargo le estoy poniendo dentro
00:53:12
Un objeto cliente gold
00:53:15
O sea, nosotros hasta la semana pasada
00:53:17
Tipo
00:53:20
Es igual a new
00:53:23
Un tipo distinto
00:53:24
No lo hacíamos
00:53:26
O sea, hacer una cosa como
00:53:27
Cliente
00:53:30
X es igual a new cliente gold
00:53:32
De algo
00:53:37
Esto es una cosa nueva
00:53:39
¿Por qué puede hacerlo?
00:53:43
Porque cliente gold
00:53:50
Extiende cliente
00:53:52
Porque cliente gold es
00:53:54
Un cliente
00:53:56
¿Si?
00:53:58
La instancia que se pondrá aquí dentro
00:53:59
Es cliente gold
00:54:02
Pero puede ir
00:54:04
En un array de cliente
00:54:06
Porque cliente admite
00:54:08
Un cliente gold
00:54:10
Un cliente gold es un cliente
00:54:12
¿Se entiende?
00:54:14
Y esto es interesante
00:54:16
¿Si?
00:54:17
Es interesante porque me permite
00:54:19
En mi array de clientes
00:54:21
Tener
00:54:24
Tanto clientes como cliente gold
00:54:25
Sin problemas
00:54:28
Y que cuando luego lo voy a utilizar
00:54:29
Fijaos que aquí
00:54:32
Yo estoy utilizando
00:54:34
¿Qué es esto?
00:54:35
No, esto no es un array
00:54:40
Esto es un array de clientes
00:54:41
¿Esto qué es?
00:54:43
¿Qué tipo tiene esto?
00:54:46
Cliente
00:54:49
Oficialmente, formalmente
00:54:50
Esto es cliente
00:54:54
¿Si?
00:54:56
Sin embargo, cuando lo uso con este señor de aquí
00:54:57
Es un cliente gold
00:55:01
Pregunta
00:55:03
Aquí nosotros hemos hecho el toString
00:55:09
De este señor de aquí
00:55:12
¿Vale?
00:55:14
Vale
00:55:15
Si yo
00:55:15
Tengo
00:55:18
Sobre escribo
00:55:19
Cliente gold
00:55:21
O sea, tu string aquí
00:55:22
Por ejemplo
00:55:24
Marcando al final
00:55:25
Gold
00:55:27
Que este es gold
00:55:29
¿Esto se me refleja aquí o no?
00:55:30
Me explico
00:55:42
Yo aquí estoy llamando
00:55:43
Escribe
00:55:46
Declare
00:55:48
Decliente.i
00:55:49
De i
00:55:50
¿Vale?
00:55:51
Esto sería igual a hacer esto
00:55:51
Estamos haciendo esto sustancialmente
00:55:53
¿Vale?
00:55:57
Entonces estamos llamando toString
00:55:58
Sobre una referencia
00:56:00
Que es de tipo
00:56:03
Cliente
00:56:05
Entonces la pregunta es
00:56:06
¿Se usará
00:56:09
Este toString?
00:56:11
El toString de cliente
00:56:13
¿O se usará el toString de
00:56:15
Cliente gold?
00:56:17
Cliente gold
00:56:18
Siempre
00:56:19
Vamos a verlo
00:56:20
Porque os acordáis
00:56:25
¿Cómo se llama esto?
00:56:35
Polimorfismo
00:56:39
Lo que estamos estudiando ahora
00:56:39
Y yo si estoy utilizando
00:56:42
Referencias cliente
00:56:45
Aquí
00:56:47
Aquí
00:56:48
Estoy utilizando referencia cliente
00:56:49
Pero dentro puedo poner
00:56:51
Subclases de cliente
00:56:54
Como cliente gold
00:56:57
Cuando se llamará un método
00:56:58
Sobre estos objetos
00:57:00
No se mira el tipo de la referencia
00:57:02
Mas se mira el tipo de la instancia
00:57:06
Se mira sobre que he hecho el new
00:57:08
¿Si?
00:57:11
Entonces
00:57:13
Cuando esto lo llamaré sobre este aquí
00:57:14
Me usará el toString de cliente
00:57:17
Cuando lo llamaré sobre este de aquí
00:57:19
Me llamará el toString de cliente
00:57:20
Cuando lo llamaré sobre este aquí
00:57:23
No mira esto
00:57:25
Mira esto
00:57:27
Y entonces me llamará el toString de cliente gold
00:57:28
¿Si o no?
00:57:31
Importante
00:57:35
Fijaos también
00:57:35
Que si yo se lo quito
00:57:38
Entonces
00:57:40
Cuando llega aquí
00:57:44
Y lo llamo a cliente gold
00:57:46
Y lo llamo a cliente gold
00:57:48
Y lo llama sobre este objeto
00:57:49
Es verdad que esto como instancia es un cliente gold
00:57:50
Pero no tiene sobre escrito
00:57:55
El método toString
00:57:57
Dentro la clase cliente gold
00:57:59
Y entonces usará el toString
00:58:01
De su padre que es el cliente
00:58:03
Claro
00:58:08
Pero no se ha
00:58:12
Sobre escrito
00:58:16
Entonces está utilizando
00:58:16
La implementación
00:58:18
Del padre
00:58:19
Que ha heredado
00:58:19
Veo como quieres
00:58:20
Estaría utilizando esto
00:58:30
Pero porque esto
00:58:31
La herencia es como si hubiese pillado
00:58:32
Esta cosa aquí
00:58:35
Y lo hubiese escrito aquí
00:58:36
Entonces sostancialmente
00:58:37
Está usando lo del padre
00:58:40
O sea que esto del polimorfismo
00:58:41
Afecta cuando yo estoy
00:58:45
Cuando yo sobrevivo
00:58:48
El método
00:58:49
Al sobre escribir el método
00:58:50
Uso el método más específico
00:58:51
Con respecto a la instancia
00:58:54
Sin embargo
00:58:55
Si no lo he sobre escrito
00:58:58
Pues usaré
00:58:59
El de mi padre
00:58:59
O de mi abuelo
00:59:01
O el primero que lo tenga
00:59:02
Si yo lo quito de aquí
00:59:03
Que me escribe
00:59:05
He quitado el toString de aquí
00:59:09
Que me escribe el resto de aquí
00:59:15
Esto
00:59:19
¿Y qué era esto?
00:59:26
¿De dónde sale esta cosa?
00:59:30
Porque es la implementación
00:59:41
Del método toString
00:59:44
De la clase object
00:59:46
Porque mi cliente gold hereda de cliente
00:59:49
Y cliente como no hereda de nada
00:59:54
Está heredando de object
00:59:56
Y en object está el método toString
00:59:58
Que lo que dice es
01:00:03
Pilla el tipo de la instancia
01:00:04
Arroba su dirección en la memoria
01:00:07
Entonces fijaos que los primeros dos
01:00:10
Su tipo es cliente
01:00:13
Y el tercero su tipo es cliente gold
01:00:15
¿Sí?
01:00:17
Pero estoy usando
01:00:19
El toString de mi abuelo
01:00:20
En este caso
01:00:22
De mi padre aquí
01:00:23
Y de mi abuelo aquí
01:00:24
En un cierto sentido
01:00:26
¿Dudas?
01:00:27
¿Se entiende esta cosa?
01:00:29
Vuelvo a poner aquí
01:00:34
Esto
01:00:35
¿Vale?
01:00:36
Entonces esto me sirve
01:00:39
Porque yo lanzo mi programa
01:00:40
Y me dice
01:00:41
Estos son los clientes que hay
01:00:42
Y te dice
01:00:44
Elige el código cliente
01:00:44
Entonces ahora yo elegiré
01:00:46
O esto
01:00:47
O esto
01:00:48
O esto
01:00:48
Y me dirá
01:00:49
Sobre cual cliente
01:00:53
Quiero trabajar
01:00:55
¿Vale?
01:00:56
Entonces
01:00:57
Sistema
01:00:59
Voy a leer
01:01:02
¿Vale?
01:01:04
String
01:01:06
Cliente
01:01:07
Es igual
01:01:10
A
01:01:15
Scan.next
01:01:16
He leído
01:01:19
Un cliente
01:01:24
¿Vale?
01:01:26
Perfecto
01:01:26
Sé sobre qué cliente quiero trabajar
01:01:27
¿Ok?
01:01:29
Ahora lo que debería hacer es
01:01:30
Algo parecido a este de aquí
01:01:32
Pero con todos los productos posibles
01:01:34
Para decir
01:01:37
¿Qué producto quieres añadir a ese cliente?
01:01:38
Es decir
01:01:41
Algo parecido a
01:01:42
Siso
01:01:43
Que
01:01:44
¿Qué?
01:01:47
Producto
01:01:49
Quieres añadir
01:01:51
Al
01:01:53
Cliente
01:01:53
Más
01:01:55
Cliente
01:01:58
Y aquí
01:01:59
Producto
01:02:02
¿Sí?
01:02:08
Y luego
01:02:13
Lo que tendré que hacer es
01:02:15
A este cliente
01:02:17
Añadirle
01:02:18
Añadir el producto que he seleccionado
01:02:19
Pero ahora yo aquí
01:02:20
Quiero tener
01:02:22
Un listado
01:02:23
De todos los productos
01:02:24
Para saber cuáles hay disponible
01:02:25
De elegir este
01:02:28
¿Cómo lo hago?
01:02:28
Como antes
01:02:36
¿Vale?
01:02:37
No puedo hacerlo
01:02:38
Si los tengo así
01:02:40
Entonces ¿Qué hago?
01:02:41
Me creo un array
01:02:44
¿Un array de qué?
01:02:46
De materiales
01:02:47
De servicios
01:02:47
De servicios
01:02:48
Premium
01:02:49
Hola
01:02:49
Necesitaría un array
01:02:54
Que pudiera contener
01:03:03
Todos estos tipos de aquí
01:03:04
¿Cuál es el array que puede contener
01:03:06
Todo esto?
01:03:09
Producto
01:03:10
, ¿Vale?
01:03:19
En mi caso yo tengo
01:03:20
5
01:03:21
Pongo 5
01:03:22
¿Vale?
01:03:23
Este de aquí sería
01:03:24
Productos
01:03:25
De 0
01:03:26
Fijaos que nuevamente
01:03:27
Dentro de
01:03:28
Un array
01:03:29
De tipo
01:03:30
Producto
01:03:31
Puedo poner
01:03:32
Materiales
01:03:33
De tipo
01:03:34
Producto
01:03:35
Puedo poner
01:03:36
Materiales
01:03:37
De tipo
01:03:38
Productos
01:03:39
De tipo
01:03:40
Productos
01:03:41
De tipo
01:03:42
Productos
01:03:43
De tipo
01:03:44
Productos
01:03:45
De tipo
01:03:46
Productos
01:03:47
De tipo
01:03:48
Productos
01:03:49
Productos
01:03:50
Productos
01:03:51
Productos
01:03:52
Productos
01:03:53
Productos
01:03:54
Productos
01:03:55
Productos
01:03:56
Productos
01:03:57
Productos
01:03:58
Productos
01:03:59
Productos
01:04:00
Productos
01:04:01
Productos
01:04:02
Productos
01:04:03
Productos
01:04:04
Productos
01:04:05
Productos
01:04:06
Productos
01:04:07
Productos
01:04:08
Productos
01:04:09
Productos
01:04:10
Productos
01:04:11
Productos
01:04:12
Productos
01:04:13
Productos
01:04:14
Productos
01:04:15
Productos
01:04:16
Productos
01:04:17
Productos
01:04:18
Productos
01:04:19
Productos
01:04:20
Productos
01:04:21
Productos
01:04:22
Productos
01:04:23
Productos
01:04:24
Productos
01:04:25
Productos
01:04:26
Productos
01:04:27
Productos
01:04:28
Productos
01:04:29
Productos
01:04:30
Productos
01:04:31
Productos
01:04:32
Productos
01:04:33
Productos
01:04:34
Productos
01:04:35
Productos
01:04:36
Productos
01:04:37
Productos
01:04:38
Productos
01:04:39
Productos
01:04:40
Productos
01:04:41
Productos
01:04:42
Productos
01:04:43
Productos
01:04:44
Productos
01:04:45
Productos
01:04:46
Productos
01:04:47
Productos
01:04:48
Productos
01:04:49
Productos
01:04:50
Productos
01:04:51
Productos
01:04:52
Productos
01:04:53
Productos
01:04:54
Productos
01:04:55
Productos
01:04:56
Productos
01:04:57
Productos
01:04:58
Productos
01:04:59
Productos
01:05:00
Productos
01:05:01
Productos
01:05:02
Productos
01:05:03
Productos
01:05:04
Productos
01:05:05
Productos
01:05:06
Productos
01:05:07
Productos
01:05:08
Productos
01:05:09
Productos
01:05:10
Productos
01:05:11
Productos
01:05:12
Productos
01:05:13
Productos
01:05:14
Productos
01:05:15
Productos
01:05:16
Productos
01:05:17
Productos
01:05:18
Me dice que producto quieres añadir al cliente C1
01:05:19
Y yo puedo elegir por ejemplo S2
01:05:22
Y acaba porque todavía no lo he hecho
01:05:25
Entonces
01:05:28
Cuando yo llego aquí
01:05:32
Yo tengo un código cliente
01:05:36
Que me define un cliente
01:05:40
Y un código producto que me define un producto
01:05:42
¿Qué hago?
01:05:45
¿Cómo?
01:05:49
Asumamos que sean productos correctos por ahora
01:05:57
Luego ya veremos cómo lo hacemos
01:05:59
Primero busco el cliente
01:06:01
¿Vale?
01:06:05
Busco el objeto cliente
01:06:05
¿Cómo busco el objeto cliente?
01:06:07
Pues me voy
01:06:12
Recorriendo este array de aquí
01:06:13
Y me voy a la página
01:06:18
A la búsqueda del cual es
01:06:19
Esa posición
01:06:21
Que tiene el código correcto
01:06:24
Por lo tanto
01:06:27
Chicos yo esto lo sé hacer
01:06:28
Sois vosotros que no lo sabéis hacer
01:06:35
Van algunos de vosotros
01:06:37
En vez de estar hablando constantemente
01:06:38
Voy a mirar todos los clientes
01:06:42
Sí
01:06:46
Cliente
01:06:49
De I
01:06:53
Punto
01:06:56
Código
01:06:58
Es igual
01:07:00
A clientes
01:07:04
A cliente
01:07:08
Esto
01:07:09
Es el cliente que quiero utilizar
01:07:14
¿Vale?
01:07:16
Entonces
01:07:17
O me recuerdo la posición
01:07:18
O me recuerdo el objeto
01:07:20
¿Vale?
01:07:23
Asumamos que me acuerdo
01:07:25
Que se yo la posición
01:07:27
Int post cliente
01:07:28
Es igual a menos un
01:07:32
Entonces
01:07:35
Post cliente es igual
01:07:39
Ahí
01:07:43
¿Sí?
01:07:44
Me recuerdo que
01:07:48
Cuando encuentro
01:07:49
Que el código de este
01:07:50
Del que estoy mirando
01:07:52
Es efectivamente
01:07:54
El que me han puesto antes
01:07:55
Pues entonces
01:07:56
Me acuerdo esa posición
01:07:57
Para que luego pueda sacar
01:07:59
Ese objeto cliente
01:08:01
¿Vale?
01:08:03
Ahora busco
01:08:04
El producto
01:08:05
Int
01:08:08
Post producto
01:08:09
Es igual a menos uno
01:08:11
Y algo parecido a esto
01:08:15
Productos
01:08:18
Productos
01:08:25
Producto
01:08:29
Y post
01:08:32
Producto
01:08:35
Entonces recorro
01:08:37
Toda la red de productos
01:08:40
Y si encuentro que el producto actual
01:08:42
Que estoy mirando
01:08:44
Su código es igual
01:08:45
Al que me ha dado el usuario
01:08:47
Aquí
01:08:48
Pues entonces me guardo su posición
01:08:49
¿Sí?
01:08:51
Vale
01:08:55
Entonces si llego aquí
01:08:55
Tengo aquí y aquí
01:08:57
Las dos cosas que me sirven
01:09:00
Y puedo preguntarme
01:09:02
Si
01:09:05
Post cliente
01:09:06
Es mayor
01:09:10
Igual a cero
01:09:11
Y
01:09:13
Post producto
01:09:14
Es mayor igual a cero
01:09:18
¿Para qué me sirve este if?
01:09:20
Que estoy comprobando
01:09:26
Que se haya encontrado el cliente
01:09:27
Que se haya encontrado el producto
01:09:32
Porque si no he encontrado
01:09:34
O el cliente o el producto
01:09:36
Pues se habrá quedado a menos uno
01:09:38
Y por lo tanto me dirá
01:09:40
Mira me has puesto un código que no existe
01:09:41
Y lo pondré aquí
01:09:43
Código no existe
01:09:48
¿Sí?
01:09:52
Y si no
01:09:54
¿Qué tengo que hacer aquí?
01:09:56
Post cliente
01:10:00
No perdón
01:10:02
Clientes
01:10:03
De post cliente
01:10:05
Punto
01:10:09
Inserta producto
01:10:11
De productos
01:10:14
Punto
01:10:17
No productos
01:10:18
De
01:10:23
Post product
01:10:24
¿Sí o no?
01:10:26
¿Qué estoy haciendo aquí?
01:10:30
Estoy diciendo
01:10:32
Vete al cliente este de aquí que he encontrado
01:10:33
Dile
01:10:35
Usa el método que hemos creado prima
01:10:36
Antes de
01:10:38
Insertar producto
01:10:39
¿Y qué producto vas a insertar?
01:10:41
Pues el producto
01:10:43
Que hemos visto antes
01:10:44
Entonces ahora mismo
01:10:46
Este cliente tiene asociado ese producto
01:10:48
Lo ha metido en su
01:10:51
Array de productos comprados
01:10:53
¿Sí?
01:10:56
Y ahora
01:11:07
Al final
01:11:08
Lo que podría hacer es
01:11:12
Calcularme el costo
01:11:15
Para este
01:11:18
Para este cliente
01:11:20
Pero claro tiene un producto solo
01:11:22
Lo dejamos a después
01:11:24
Cuando podemos poner más de un producto
01:11:26
¿Sí?
01:11:27
Por ahora probamos esto
01:11:29
Entonces él me dice
01:11:30
Código del cliente
01:11:33
C3
01:11:35
¿Qué productos quiere poner?
01:11:35
Quiero poner PS4
01:11:38
Pues me dice el código no existe
01:11:39
Vale
01:11:41
Si en vez le digo
01:11:43
Cliente 0
01:11:45
Código
01:11:47
Atatatá
01:11:48
El código no existe
01:11:49
Vale
01:11:50
Si en vez le digo
01:11:51
Cliente 0
01:11:53
Con
01:11:55
M0 por ejemplo
01:11:56
No me dice nada
01:11:58
Algo habrá hecho
01:12:00
Solo que acaba
01:12:01
Pero no me dice el código no existe
01:12:02
Ha encontrado los códigos
01:12:04
¿Sí?
01:12:06
Vale
01:12:08
Entonces
01:12:09
Todo esto
01:12:10
Desde
01:12:11
Desde
01:12:12
Algo
01:12:17
Aquí
01:12:18
Desde aquí
01:12:19
Desde aquí
01:12:23
Que es cuando escribe los
01:12:28
Los clientes
01:12:29
Te hace seleccionar
01:12:31
Y luego lo pone
01:12:32
Pues esto debería estar dentro de un while
01:12:33
¿Sí?
01:12:36
Entonces
01:12:39
Int
01:12:40
O boolean
01:12:42
Seguir
01:12:43
Es igual a true
01:12:46
Wille
01:12:48
Seguir
01:12:50
Hasta aquí
01:12:52
Y antes de empezar aquí
01:12:59
Porque si no seguir sería siempre true
01:13:05
Después de haber insertado algo
01:13:07
Pregunto
01:13:10
Si eso
01:13:11
Quieres
01:13:11
Insertar
01:13:14
Si eres
01:13:16
Seguir
01:13:17
Con el programa
01:13:18
Quieres
01:13:19
Que se yo
01:13:20
Insertar
01:13:21
Otro
01:13:22
Producto
01:13:23
Uno
01:13:24
Si
01:13:25
No
01:13:27
Y aquí me digo
01:13:28
Que si
01:13:29
Ah no
01:13:30
Tengo que leer
01:13:31
Int
01:13:32
No
01:13:33
No
01:13:34
No
01:13:35
No
01:13:36
No
01:13:37
No
01:13:38
No
01:13:39
No
01:13:40
No
01:13:41
No
01:13:42
No
01:13:43
No
01:13:44
No
01:13:45
No
01:13:46
No
01:13:47
Vale
01:13:48
Seguir es igual a
01:13:51
Scan punto next
01:13:55
Int
01:13:57
drag
01:13:58
Y así
01:13:59
Esto en vez de hacerlo
01:14:01
Boolean
01:14:02
O lo hago como entero
01:14:03
Le pongo aquí
01:14:04
Uno
01:14:07
Y mientras seguir es uno
01:14:08
Entonces cuando llega al final
01:14:11
Me hace esta pregunta
01:14:14
Si yo le pongo
01:14:16
Un 1
01:14:18
Entonces él pone un 1
01:14:18
Dentro de seguir
01:14:21
Vuelve aquí arriba al while
01:14:22
Seguir es 1
01:14:25
Y entra otra vez
01:14:27
Si es cualquier otro número, pues sale
01:14:28
Entonces
01:14:30
Cliente C0
01:14:34
Quiero añadir M0
01:14:38
No existe
01:14:41
¿Por qué no existe?
01:14:43
Porque es minúscula, ¿vale?
01:14:45
Pero dice, ¿quieres insertar otro producto?
01:14:47
Dile sí
01:14:49
Vale, venga, empieza otra vez
01:14:50
Elige el código cliente
01:14:52
No me ha vuelto a escribir esto
01:14:54
Lo he dejado fuera del while
01:14:56
Pues C0
01:14:57
Código producto M0
01:15:01
Pues ahora lo ha insertado, ¿vale?
01:15:03
¿Quieres insertar otro producto?
01:15:06
Sí
01:15:07
A C1
01:15:07
Quiero poner S2
01:15:09
Y luego se acabó
01:15:12
¿Vale? Saqué este menú
01:15:15
Y
01:15:16
Ya me lo está repitiendo
01:15:17
Ya estamos acabando, ¿eh?
01:15:18
Pero el while entonces tiene que ser
01:15:20
Antes de aquí
01:15:23
Para que me describa la lista de clientes
01:15:24
Vale, lo único que me queda
01:15:32
Es, vale, ok, después de haber asociado
01:15:36
Todo esto, vamos a hacer que al final
01:15:39
Cuando salga
01:15:41
Pues me diga
01:15:42
Cada cliente cuánto paga
01:15:45
¿Sí?
01:15:47
¿Cómo lo hago eso?
01:15:50
Por cada cliente
01:15:52
Entonces
01:15:54
Por
01:15:54
Cliente
01:15:57
C
01:15:59
Es igual
01:16:00
Dos puntos
01:16:03
Clientes
01:16:07
¿Cómo lo hago?
01:16:15
Por cada cliente
01:16:17
Digo
01:16:20
Ciso
01:16:21
Cliente
01:16:23
Más
01:16:26
C.
01:16:32
Código
01:16:33
¿Cómo me calculo su
01:16:34
Cuánto tiene que pagar?
01:16:38
¿Por?
01:16:43
¿Por?
01:16:44
Por
01:16:45
¿Por?
01:16:46
白ote
01:16:47
Reb issued
01:16:47
¿Por qué?
01:16:49
Si es listo
01:16:51
Uau
01:16:51
Pero
01:16:52
No
01:17:02
¿Estamos bien?
01:17:06
Entonces
01:17:07
Vamos a hacer
01:17:08
Colocas
01:17:09
El
01:17:10
Sueldo
01:17:11
bridger
01:17:12
Sí
01:17:14
¿Por qué?
01:17:16
Total
01:17:17
Más igual a qué
01:17:21
A C punto
01:17:22
Productos
01:17:26
De I
01:17:28
Punto
01:17:29
Coste
01:17:32
O sea
01:17:34
Me voy por cada cliente
01:17:39
Dentro de cada cliente
01:17:41
Por cada producto que tiene dentro cliente
01:17:42
Os acuerdo que cliente tenía
01:17:45
Un array de productos aquí
01:17:46
Que son los que le he asignado
01:17:48
Pues me va en cada uno de estos señores
01:17:49
De estos productos
01:17:53
Y calcula su coste
01:17:53
Si
01:17:56
Y me lo escribe en pantalla
01:17:59
Total
01:18:02
Dos punto
01:18:07
Más total
01:18:08
Os gusta
01:18:10
¿Veis?
01:18:13
A mí no
01:18:15
Pero funciona
01:18:18
Pero no funciona
01:18:20
A C cero
01:18:23
Le pongo el ordenador
01:18:25
Así
01:18:27
C cero
01:18:28
Le pongo el ordenador
01:18:34
Sí
01:18:36
A C cero
01:18:37
Le pongo también el mantenimiento
01:18:40
S2
01:18:43
Vale
01:18:44
Luego a C1
01:18:45
Le pongo
01:18:47
El mantenimiento plus
01:18:49
Y he acabado
01:18:51
¿Vale?
01:18:54
Entonces
01:18:55
El cliente cero
01:18:56
1613
01:18:57
El cliente uno
01:18:59
1300
01:19:01
¿Vale?
01:19:02
Esto sale de
01:19:04
El coste del ordenador
01:19:06
Más el envío
01:19:08
Y más
01:19:10
El mantenimiento por seis meses
01:19:12
¿Sí?
01:19:14
¿Dudas?
01:19:15
¿Por qué me gusta relativamente?
01:19:17
Porque os recuerdo que el cliente Gold tenía un descuento
01:19:21
Y por ahora aquí no lo he usado
01:19:24
Entonces tengo dos opciones
01:19:27
Y esto es
01:19:30
Esta parte de aquí ¿Vale?
01:19:32
La primera es
01:19:36
Si
01:19:38
Así que
01:19:40
I
01:19:45
C
01:19:48
Instancia
01:19:49
Instancia de
01:19:53
Cliente Gold
01:19:55
Si el cliente que estoy mirando es un cliente Gold
01:19:59
Al total
01:20:05
Hazle un descuento del 10%
01:20:08
Es decir que es igual a
01:20:11
Bueno
01:20:13
Menos igual
01:20:14
Total
01:20:15
Multiplicado
01:20:17
C
01:20:19
A ver
01:20:20
Multiplicado
01:20:21
Cliente
01:20:23
Gold
01:20:25
C
01:20:26
Punto
01:20:28
Descuento
01:20:34
Divido 100
01:20:35
Si ¿No?
01:20:37
Esto me está diciendo
01:20:43
Ay me he perdido un poco
01:20:44
Mira haz tus cosas
01:20:44
Cuando encuentras un
01:20:46
Si encuentras el cliente Gold
01:20:47
Pues entonces aquí
01:20:50
Haz esto ¿Vale?
01:20:52
Y esto se puede hacer
01:20:54
Ahora toda esta cosa aquí
01:20:54
Es fea
01:20:57
Muy poco elegante
01:20:58
¿Por qué?
01:21:00
¿Cómo lo haríais vosotros?
01:21:03
Que sois elegantes
01:21:05
Exacto
01:21:07
Exacto
01:21:12
Con un método
01:21:14
Public Int
01:21:16
Coste Total
01:21:20
This
01:21:23
Return Total
01:21:31
Tengo el
01:21:41
, cliente
01:21:44
Que lo que hace es
01:21:47
Entrar en sus productos
01:21:50
Y calcularse el coste total
01:21:51
Y devolver el total
01:21:54
¿Vale?
01:21:55
Entonces
01:21:56
El sistema
01:21:57
Se transformaría en
01:21:58
Int total
01:22:01
Es igual
01:22:03
A C punto
01:22:05
Coste total
01:22:07
Y que si soy un cliente Gold
01:22:09
Hago el descuento
01:22:14
Pero vosotros sois mejores que así
01:22:16
¿Vale?
01:22:19
Y entonces os dais cuenta
01:22:21
Que yo en
01:22:24
El coste total
01:22:25
Que uso en cliente
01:22:27
No puedo sobre escribir aquí
01:22:30
Public
01:22:33
Int
01:22:35
Coste total
01:22:37
Es
01:22:39
, Int
01:22:43
Sería
01:22:45
Return
01:22:48
Super
01:22:49
Punto
01:22:51
Coste total
01:22:53
Multiplicado
01:22:54
No menos
01:22:58
Por
01:22:59
10%
01:23:02
Si no
01:23:05
No, eso sería solo lo que quito
01:23:07
Ahora, nosotros tenemos que hacer dos pasos
01:23:10
Int
01:23:12
Total
01:23:13
Es igual a esta cosa de aquí
01:23:14
Y devuelvo
01:23:17
Total
01:23:23
Multiplicado
01:23:26
Total menos
01:23:27
Total multiplicado
01:23:28
Descuento
01:23:31
Dividido 100
01:23:34
cameras
01:23:43
Si el coste total es sobre cliente Gol
01:24:02
Primero me calcula más lo de antes y después hay esto le aplicará el descuento
01:24:07
Lo que implica que el sistema saldrá algo como
01:24:11
Así
01:24:12
Que es mucho más elegante con respecto a la primera versión que hemos hecho.
01:24:13
¿Y por qué esto funciona?
01:24:29
Una palabra.
01:24:32
Una palabra.
01:24:33
Ay, señores.
01:24:38
¿Cómo estáis?
01:24:40
¿Por qué esto funciona?
01:24:43
¡Polemorfismo!
01:24:45
Señores, os veo bastante sufriendo.
01:24:49
Vale.
01:24:53
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial - Compartir igual
- Visualizaciones:
- 9
- Fecha:
- 9 de febrero de 2024 - 13:45
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 1h′ 24′ 58″
- Relación de aspecto:
- 4:3 Hasta 2009 fue el estándar utilizado en la televisión PAL; muchas pantallas de ordenador y televisores usan este estándar, erróneamente llamado cuadrado, cuando en la realidad es rectangular o wide.
- Resolución:
- 960x720 píxeles
- Tamaño:
- 465.81 MBytes