Ejemplo Ajencia de Viajes - 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:
Voy a grabar esta clase, si habláis durante la clase me autorizáis automáticamente a que vuestra voz sea grabada, ¿vale?
00:00:00
Entonces, new class, hemos dicho que vamos a intentar hacer un sistema, una serie de objetos, ¿vale?
00:00:12
Que hablarán entre ellos y trabajarán entre ellos para crear una simulación de una agencia de viaje, un aeropuerto
00:00:22
Ahora veremos por donde va
00:00:29
Empezamos con
00:00:30
Vuelo, objeto vuelo
00:00:32
El objeto vuelo representa
00:00:35
Un vuelo posible
00:00:37
A nivel de
00:00:39
Cuando vosotros vais al aeropuerto por ejemplo
00:00:40
Y miráis el vuelo FR471
00:00:42
Es un vuelo
00:00:46
Que tiene una fecha
00:00:47
La fecha no, porque luego se repite
00:00:48
Pero tiene un horario
00:00:51
No se, vale
00:00:53
Entonces vamos a intentar modelizar
00:00:54
Ese concepto
00:00:57
Y a ver que hacemos, no tiene main, vale
00:00:58
Es un objeto que lo hago utilizar
00:01:00
De alguna forma
00:01:03
Aquí lo tengo, ¿qué es interesante
00:01:03
De un vuelo?
00:01:07
Venga, decídmelo
00:01:08
String
00:01:10
Compa...
00:01:17
Compa...
00:01:18
Compa...
00:01:19
String
00:01:20
Número vuelo
00:01:25
Bueno, hagamos un int vuelo
00:01:28
Hacemos un
00:01:31
Identificador
00:01:32
Normalmente es un código
00:01:33
Dos letras y luego un número
00:01:40
Pero haremos que la compañía
00:01:42
Serán estas dos letras
00:01:44
Ya está, sucio, ¿no?
00:01:45
Int
00:01:47
Num modulo
00:01:48
Más
00:01:50
Int
00:01:52
Asientos disponibles
00:01:58
Asientos, sí
00:02:03
Asientos disponibles
00:02:03
qué más me encantáis ahora salida del vuelo como lo
00:02:07
definimos interesa todo excepto de dónde está la hora de salida es que no sabía
00:02:16
cómo utilizarla ahora mismo con lo que tenéis vosotros que lo ponemos un string
00:02:29
Le ponemos la hora con un número
00:02:33
En los minutos con otro número
00:02:36
O creamos un tipo de fecha
00:02:37
O creamos un tipo de hora
00:02:41
Pero ahora lo dejamos por ahí, ¿vale?
00:02:42
No me interesa, hay un vuelo cada día
00:02:44
Destino
00:02:46
Ring, destino
00:02:48
Ring, origen
00:02:51
No, venga, que lo quito
00:02:55
Aprovecho para recordar
00:02:58
Las variables
00:03:02
siempre empiezan por minúsculas
00:03:04
si son dos palabras
00:03:06
pues entonces la segunda
00:03:07
o tres o cuatro, pues las siguientes
00:03:09
empiezan con mayúsculas, ¿vale?
00:03:11
os recuerdo también que las clases en vez
00:03:14
empiezan por mayúsculas
00:03:16
y os recuerdo también que las
00:03:17
los métodos empiezan
00:03:19
por minúsculas
00:03:22
y los
00:03:23
las constantes son
00:03:24
todo mayúsculas
00:03:28
¿sí?
00:03:30
bueno, yo creo que eso
00:03:31
suficiente, por ahora
00:03:34
este de aquí
00:03:36
yo lo relleno
00:03:38
tendré que tener
00:03:39
un constructor que me construya eso
00:03:42
¿cómo hago el constructor?
00:03:44
¿os acordáis? public vuelo
00:03:50
y le pongo aquí la información
00:03:52
que yo quiero
00:03:54
entonces un string
00:03:54
compañía
00:03:57
un
00:04:00
int
00:04:01
número
00:04:03
Un int
00:04:05
Bueno, hacemos que cada vuelo
00:04:07
Tendrá siempre un cierto número
00:04:10
De asientos disponibles
00:04:12
Que se lo pongo yo en automático, ¿vale?
00:04:13
Todos los aviones son iguales
00:04:15
Para simplificar, ¿eh?
00:04:17
Luego estará un string
00:04:19
Destino
00:04:20
Y un string
00:04:24
Origen
00:04:25
Esto es feo, ¿eh?
00:04:27
No se debería poner así, ¿eh?
00:04:30
Se debería poner con algo que se entienda
00:04:32
estaría bien también poner directamente
00:04:33
esto, tanto no lo sabemos
00:04:36
para que luego la gente
00:04:37
sepa que es cada uno de estos
00:04:42
que es de, no lo sé, que es destino
00:04:44
pues sí, el destino no lo sé
00:04:45
vale
00:04:48
y entonces ahora asigno
00:04:48
todo lo que tengo que asignar
00:04:51
dis.compañia
00:04:54
es igual a compañía
00:04:57
dis.compañia
00:05:02
NumVuelo es igual a NumVuelo
00:05:06
Y ese punto
00:05:09
Asientos disponibles
00:05:15
Es igual a asientos disponibles
00:05:16
Ah no, esto habíamos dicho
00:05:17
Cinco
00:05:18
Son aviones pequeños
00:05:20
¿Vale?
00:05:24
¿Por qué hago aviones pequeños?
00:05:25
Bueno
00:05:34
¿Qué sentido?
00:05:34
Cinco, si es pequeño
00:05:42
Pero un INTA puede llegar a
00:05:44
Miles y miles y centinares de miles
00:05:46
Lo hago pequeño porque si quiero que esto tenga algún sentido
00:05:48
Ahora lo veremos, estamos inventando, por lo tanto no lo sé
00:05:53
Pero si quiero que haya algún sentido
00:05:56
En plan, que cuando alguien intenta comprar un billete
00:05:57
Si no hay asientos disponibles
00:06:00
Le diga, no puedes comprar este billete
00:06:01
¿Vale?
00:06:03
En un cierto sentido, pues
00:06:05
No puedo poner 500
00:06:07
Porque si no lo hago, no lo voy a probar
00:06:08
Tengo que hacer 500 billetes antes que me diga que no
00:06:10
Entonces pongo un número bajo
00:06:13
Así luego si hago 5 billetes
00:06:15
ya me dirá, has comprado
00:06:18
y luego después cuando esto
00:06:20
entre en producción, este de aquí
00:06:22
dependerá del avión
00:06:23
en el que está conectado
00:06:25
que se yo, y cuantos plazas tiene, no lo sé
00:06:27
pero por ahora
00:06:30
pongo un número bajo
00:06:32
5, 3, vale
00:06:34
para probar
00:06:35
vuelo
00:06:37
mira, para
00:06:40
para lo que quiero
00:06:43
hacer yo, yo lo dejaría
00:06:46
hasta así, esta clase, ¿vale?
00:06:48
en el sentido que esto representa un vuelo
00:06:50
no me
00:06:52
interesa tanto decir
00:06:54
que hora sale el vuelo, hora aterrizado
00:06:55
hora
00:06:58
no sé qué, ¿vale?
00:06:58
esto a lo mejor lo hará otra persona
00:07:01
podría añadir aquí un estado
00:07:03
un string estado que me dice
00:07:05
en tierra
00:07:07
despegado, viajando
00:07:09
o cosa por el estilo, ¿vale?
00:07:12
no lo sé, pero
00:07:13
Pero como mi perspectiva es más bien de una agencia de viaje, cuando la agencia de viaje te vende el billete, no sabes si despega o no despega. La hora podría ser interesante, el día también, pero repito, yo lo veo desde la perspectiva de agencia de viaje.
00:07:15
Entonces, el día tampoco me interesa mucho, o sea, el día no hace parte del vuelo. A mí me interesa que el vuelo exista, que haya la conexión Madrid-Pisa, ¿vale? Luego, la fecha no depende tanto de vosotros, sino depende de cuando queréis, o sea, no depende del vuelo, sino de cuándo queréis viajar vosotros.
00:07:37
Entonces lo pongo en otro contexto, por ejemplo
00:07:56
¿Sí?
00:07:59
O sea que esto es
00:08:01
Esto me dará una simulación
00:08:02
De cuáles son las conexiones posibles
00:08:05
Digamos así
00:08:08
Y cómo se llaman
00:08:09
Quién opera esa conexión
00:08:11
Y qué número de vuelo opera esa conexión
00:08:14
Cuando yo te compraré un billete
00:08:16
Si tú quieres ir de Madrid a Pisa
00:08:17
Tendré que buscar cuál es el vuelo que va de Madrid a Pisa
00:08:19
Y te diré
00:08:22
En tu billete te pondré
00:08:23
por ejemplo, no huele
00:08:26
la compañía para que tú te identifiques
00:08:28
¿sí?
00:08:30
¿me explico? entonces esto
00:08:32
es por ejemplo una clase
00:08:34
sin métodos
00:08:36
¿vale?
00:08:38
en la realidad de las cosas
00:08:40
en la realidad verdadera
00:08:42
es posible que
00:08:44
esta clase tenga que
00:08:46
tener getResetter
00:08:48
¿vale? los getResetter
00:08:50
son métodos especiales para
00:08:52
pillar
00:08:54
Estos valores
00:08:55
O setar o configurar
00:08:57
O dar un valor a estas variables
00:09:00
¿Vale?
00:09:02
Pero eso tiene sentido
00:09:02
Cuando nosotros empezaremos a utilizar
00:09:04
Cosas como
00:09:06
Public
00:09:07
O protected
00:09:09
Protected
00:09:11
O private
00:09:14
Que será la que nos interesará más
00:09:16
En estos contextos
00:09:19
Como nosotros esto no lo estamos utilizando
00:09:20
Tampoco los getter y los setter nos sirven de mucho
00:09:23
Entonces nosotros accederemos directamente a estas variables
00:09:26
No lo haremos a través de un método, ¿vale?
00:09:32
¿Por qué?
00:09:35
Lo descubriremos después, ¿vale?
00:09:36
Porque nos puede venir bien acceder por un método
00:09:38
Un getter y un setter, ¿vale?
00:09:40
Como todavía estamos aprendiendo la base
00:09:42
No sobrecargamos de dificultad, ¿vale?
00:09:45
Además los getter y setter
00:09:49
Si me acuerdo como se hacen
00:09:52
Hay un botón aquí que te los hace
00:09:54
En seguido
00:09:55
¿Dónde?
00:09:57
Surge
00:10:00
Ahí
00:10:01
Y aquí
00:10:03
Generate getter y setter
00:10:05
Tú pinchas aquí y ya te lo genera él
00:10:08
Porque son cosas básicas
00:10:10
Son cosas fáciles de hacer
00:10:11
Pero ¿Por qué lo hago?
00:10:13
Pues lo veremos más adelante
00:10:15
Por ahora dejámoslo así
00:10:16
Y trabajamos con esto normal
00:10:19
¿Vale? Entonces, ¿Esta clase qué hace?
00:10:22
Nada
00:10:24
¿Vale? Por ahora no hace absolutamente nada
00:10:24
Y se queda allí
00:10:29
Es una clase de soporto
00:10:31
Para mi sistema
00:10:33
Porque ahora yo haré un sistema donde crearé
00:10:34
Varios posibles vuelos
00:10:37
Y esos me acordaré que existen
00:10:39
¿Vale?
00:10:42
Y luego crearé billetes
00:10:43
A partir de eso
00:10:45
Entonces, vamos a hacer una nueva
00:10:46
Clase
00:10:49
¿Vale?
00:10:50
Esta nueva clase
00:10:55
Será la que
00:10:56
Eh
00:10:59
Gestiona un billete
00:11:00
O sea, un billete de avión, ¿no?
00:11:06
Billete
00:11:08
De avión
00:11:09
A ver si luego tenemos que
00:11:11
Volver a
00:11:14
A mirar cosas
00:11:17
¿Vale? Pero por ahora
00:11:20
¿Qué es un billete de avión? ¿Vale?
00:11:21
Entonces, el billete de avión
00:11:24
Es lo que yo
00:11:25
Compro, ¿vale?
00:11:26
Y tendrá dentro
00:11:29
La información para que yo ya
00:11:30
Con ese pueda viajar, ¿vale?
00:11:33
Entonces, ¿qué es la información
00:11:35
Que me sirve
00:11:36
En un billete de avión?
00:11:39
Uy
00:11:44
String
00:11:44
Nombre
00:11:47
Dejamos la nombre, ¿vale?
00:11:48
Nombre incluye también los apellidos
00:11:50
Es un identificador, podría poner
00:11:53
DNI, ¿vale?
00:11:55
El número de vuelo
00:11:56
¿Se puede enlazar?
00:12:03
Ah, perdón, perdón
00:12:11
Hagamos así
00:12:12
Vuelo, vuelo
00:12:13
¿Lo puede hacer?
00:12:16
Vuelo punto
00:12:20
No recuerdo cómo se llama la variable
00:12:21
Pues doy a asignar a este billete
00:12:24
Un objeto de tipo
00:12:26
Vuelo, para decirle
00:12:28
Oye mira, toda la información del vuelo
00:12:30
Que vas a hacer, pues la encuentras
00:12:32
En este objeto que es un objeto de este tipo
00:12:34
Entonces te encontrarás ahí dentro
00:12:36
Toda esta información
00:12:38
Si yo quiero
00:12:39
Puedes poner vuelo punto en un vuelo
00:12:45
Y encontraré esta cosa aquí
00:12:47
Por ejemplo, si quiero saber de dónde va
00:12:49
A dónde viene
00:12:51
Pues aquí tendré un
00:12:52
Vuelo punto destino
00:12:54
Vuelo punto origen
00:12:57
Si yo asigno a este billete
00:12:58
Un determinado vuelo, sé que es un billete
00:13:01
Para este vuelo
00:13:03
Por ejemplo
00:13:05
Que podría servir también para aquí
00:13:07
Eh, sí, son cosas un poco raras porque aquí
00:13:12
Esto de aquí ya me genera algún tipo de problema
00:13:26
¿Vale? Pero bueno, ya veremos qué hacemos con él
00:13:30
Eh, el número de asiento nuestro lo queremos gestionar
00:13:34
Hagamos que no
00:13:39
¿Vale? En el sentido que me da igual
00:13:40
Si me venden un billete es que hay espacio en ese avión
00:13:43
¿Vale? Luego donde me siento
00:13:46
Ya es relativo
00:13:48
Hay compañías que
00:13:50
Por ejemplo, no permiten
00:13:59
Ha habido un periodo en que ni siquiera creo Ryanair
00:14:00
Te permitía pillar el asiento
00:14:03
Tú entrabas y era
00:14:04
Y era la lucha
00:14:05
¿Vale? Nosotros estamos ahí
00:14:08
¿Vale?
00:14:10
¿Qué más podría interesar en un billete de avión?
00:14:12
El día
00:14:16
La fecha
00:14:17
Pongámosla así
00:14:19
General, ¿vale?
00:14:24
Luego ya
00:14:27
Veremos qué hacemos
00:14:28
Bueno, por ahora lo dejamos así
00:14:30
Veremos si nos sirve algo más
00:14:32
Pues modificaremos estas cosas, ¿vale?
00:14:35
Entonces, public
00:14:38
Billete
00:14:39
De avión
00:14:42
Pilla uno
00:14:45
String nombre
00:14:47
Vuelo
00:14:50
No, vuelo, vuelo, escucha
00:14:56
precios y lo que hace aquí dentro es asignar esto es igual
00:14:59
fecha
00:15:22
precio
00:15:26
es igual a precio
00:15:37
vuelo
00:15:40
es igual a vuelo
00:15:43
nombre
00:15:46
es igual a nombre
00:15:48
punto
00:15:50
vale
00:15:57
no se si he dicho algo raro
00:16:00
porque no me pone los coordines justos
00:16:11
lo descubriremos, vale
00:16:16
Que podemos hacer
00:16:18
Dejamos así también
00:16:22
Hay un error aquí
00:16:28
No sé si el billete de avión
00:16:31
Por si mismo, estos son objetos
00:16:39
Que representan datos
00:16:41
Entonces poco le podemos hacer
00:16:44
Podría hacer
00:16:47
para trabajar le voy a hacer dos constructores distintos, un constructor que no dice nada
00:16:49
De la first class
00:17:38
Entonces asume que automáticamente es falso
00:17:39
Y si en vez quiero que sea
00:17:41
De primera clase
00:17:44
Pues al final
00:17:45
Le pongo
00:17:46
Otro boolean
00:17:48
Se lo puedo pasar o no pasar
00:17:54
Si se lo paso
00:18:02
En automáticamente
00:18:06
Asume que no es primera clase
00:18:07
Si en vez le paso true o false
00:18:09
Pues dirá si es primera clase o
00:18:11
O segunda
00:18:13
O clase económica
00:18:15
¿Vale? Esto para que veáis que hay dos constructores
00:18:16
Se puede meter constructores
00:18:22
Lo importante de los constructores, si os acordáis
00:18:23
Es que no tengan la misma secuencia de parámetros
00:18:25
¿Vale? Porque yo en cada momento tengo que saber
00:18:31
Si estoy utilizando este constructor o este constructor
00:18:35
Entonces si a mi constructor le paso estos tipos de valores
00:18:37
Cuatro valores que correspondan a estos tipos
00:18:42
Estoy usando este constructor
00:18:45
Si le paso 5
00:18:47
Correspondientes a estos tipos
00:18:49
Estoy usando este otro constructor
00:18:50
Pero en ningún momento me puedo confundir
00:18:52
¿Vale?
00:18:55
Si yo quitara este de aquí y hubiera 2
00:18:56
Diría, ¿Cuál de los dos tengo que usar?
00:18:58
¿Sí?
00:19:01
¿Dudas?
00:19:03
Vale, entonces vamos a usar estas clases
00:19:07
¿Vale?
00:19:09
La nueva clase
00:19:11
Que hacemos prueba
00:19:17
Aviones
00:19:18
O agencia
00:19:20
Esta vez le pongo main
00:19:24
¿Vale? Para que haga algo
00:19:29
¿Si? Entonces
00:19:30
Primero no hago interacción
00:19:32
Con el usuario ¿Vale?
00:19:35
Me voy a
00:19:37
Gestionar las cosas
00:19:38
Yo y hacer pruebas yo
00:19:41
Luego después cambiamos un poco
00:19:43
Para que yo pueda hablar con el sistema
00:19:45
Que el sistema me responda algo
00:19:47
¿Vale? Entonces
00:19:49
El primer paso que yo haría
00:19:51
Es crear las conexiones
00:19:53
Es decir, cuáles son los vuelos posibles
00:19:54
Lo hago con el main
00:19:57
Para crearme una serie de vuelos
00:19:59
Es posible que estos vuelos
00:20:01
En la realidad ya me los den hecho
00:20:03
Lo encuentre en una base de datos
00:20:04
Lo vaya a buscar
00:20:06
En un fichero, no lo sé
00:20:08
Pero como no los sabemos usar, me las creo yo
00:20:10
Entonces la primera cosa que hago
00:20:13
Como string es
00:20:15
Crear
00:20:16
Vuelos
00:20:19
Un metodito
00:20:20
Que se llama crear vuelos
00:20:24
Vale
00:20:26
¿Qué quiero que haga crear vuelos?
00:20:27
No, yo quiero que me cree
00:20:36
Todos los vuelos posibles
00:20:37
¿Vale?
00:20:39
Sobre el que yo luego jugaré un poco
00:20:40
El concepto es que
00:20:43
¿Dónde guardo estos vuelos?
00:20:44
¿Qué hago?
00:20:46
¿Un objeto, un vuelo solo?
00:20:48
¿En qué sentido?
00:20:53
¿Cómo?
00:20:57
Es como guardo una serie de objetos
00:20:58
Como guardaba una serie de string
00:21:01
Por ejemplo
00:21:05
¿Vale?
00:21:08
Entonces si yo hago que este método de aquí
00:21:10
Sea lo que sea
00:21:12
Me devuelve
00:21:14
Un array de que
00:21:16
¿Qué hace esta cosa aquí?
00:21:18
Este método de aquí
00:21:31
Que ahora no he creado todavía
00:21:32
Lo tengo que crear
00:21:33
Lo que va a crear es
00:21:34
Una serie de objetos vuelos
00:21:37
Los guardas
00:21:39
Lo guardas en un array de vuelo
00:21:41
Y luego estos array de vuelo
00:21:45
Me los devuelve
00:21:47
Aquí
00:21:48
Entonces a partir de este punto de mi programa
00:21:50
Y asumo que tendré
00:21:53
Un array vuelos
00:21:54
Con dentro todos los vuelos que gestiona
00:21:56
Mi empresa
00:21:58
Mi agencia
00:22:00
¿Si?
00:22:01
Vale, vamos a hacer
00:22:04
Este método de aquí
00:22:06
Entonces, aquí abajo
00:22:09
Yo hago public
00:22:10
Que tiene que devolver
00:22:11
A ver, aquí
00:22:15
Tatic
00:22:25
Lo pongo o no
00:22:27
Luego tengo que poner
00:22:29
Lo que devuelve
00:22:31
Nombre
00:22:33
Parámetros
00:22:37
¿Sí?
00:22:41
Así es como declaro
00:22:46
Un método
00:22:48
¿Vale?
00:22:52
Por ahora esto
00:22:53
Lo dejamos por ahí
00:22:54
¿Hay que ponerlo estático o no?
00:22:55
Ni idea
00:22:57
¿Qué devuelve?
00:22:58
¿Estamos seguros que no devuelve nada?
00:23:02
Tiene que devolver un vuelo
00:23:05
Un vuelo
00:23:12
Tiene que devolver un vuelo
00:23:13
Tiene que devolver un array de vuelos
00:23:15
Si yo pongo esto
00:23:19
Le estoy diciendo
00:23:22
Oye, mira, tú hagas lo que hagas
00:23:26
Al final me tienes que devolver un vuelo
00:23:28
Un objeto vuelo
00:23:31
Pero yo no quiero un objeto vuelo
00:23:32
Quiero un array de vuelos
00:23:34
Entonces, ¿qué le hago?
00:23:36
Ahí está
00:23:45
Esto lo que me está diciendo es
00:23:45
Te devolveré un array de vuelos
00:23:49
¿Sí?
00:23:51
¿Cómo se llama?
00:23:56
¿Qué parámetros pilla?
00:24:02
Ninguno
00:24:09
Que yo sepa ninguno
00:24:10
¿Vale?
00:24:11
Por lo que quiera hacer con este método, ninguno
00:24:12
¿Vale?
00:24:14
Y yo no le digo nada, no le paso nada
00:24:15
Y él lo que hará es crearse una serie de vuelos
00:24:17
¿Sí?
00:24:19
Ahora veremos cómo lo hacemos dentro
00:24:20
Si luego necesitaré que me pasen algunos parámetros
00:24:22
Pues se los pediré y lo pasaré desde aquí
00:24:25
¿Vale?
00:24:27
Y ahora el problema es
00:24:28
¿Qué hago? ¿Lo hago estático o no?
00:24:30
A esto se llama crear vuelos
00:24:33
¿Vale?
00:24:35
Antes de mirar este estático
00:24:42
Sigamos un poquito más
00:24:43
Lo que voy a hacer aquí dentro es
00:24:45
Necesitaré un array de vuelos
00:24:48
¿Cuántos?
00:24:50
10
00:25:04
Quiero más, quiero menos, esto lo veremos
00:25:05
¿Vale?
00:25:11
Es para hacer pruebas
00:25:12
Y al final de todo
00:25:13
Antes de acabar, ¿qué tendré que hacer?
00:25:15
¿Vale?
00:25:23
Entonces, lo que voy a hacer aquí
00:25:24
Es lo siguiente
00:25:26
El main empieza llamando a este método
00:25:27
Crear vuelos
00:25:31
¿Qué hace este crear vuelos?
00:25:31
Pues me crea un array de vuelos
00:25:33
Lo rellenará
00:25:35
Y al final
00:25:37
Me lo pasa a mí
00:25:39
Y yo lo guardo aquí dentro
00:25:40
Entonces
00:25:42
Sustantemente este método lo que hace es crearme
00:25:44
Un array de vuelos
00:25:46
Que luego yo podré
00:25:47
Acceder desde mi mail
00:25:50
Me da un error
00:25:52
Vamos a ver que error es
00:25:56
No puedo hacer una referencia
00:25:57
Estática
00:26:07
A un método
00:26:08
Al método no estático crear vuelos
00:26:10
Desde el tipo agencia
00:26:13
¿Qué quiere decir esta cosa?
00:26:17
me dice yo soy estático estoy en un contexto estático vale dentro de agencia desde aquí
00:26:20
no puedo llamar un método que no sea estático cuidado que esto es sutil y es interesante y lo
00:26:35
veremos varias veces antes que lo entendemos os acordáis ayer en los ejemplos que hacíamos
00:26:49
Nosotros cuando llamamos
00:26:55
Un método, por ejemplo
00:26:58
Esto lo llamamos un método
00:26:59
Este método
00:27:01
¿Era estático o no?
00:27:02
No
00:27:08
Veámoslo
00:27:09
Este método de aquí
00:27:11
No es estático
00:27:13
Oye, pero
00:27:17
Lo estoy llamando desde el main
00:27:19
Que es estático
00:27:22
Entonces, ¿qué diferencia hay
00:27:23
entre este de aquí que está llamando un método no estático con respecto a este
00:27:26
de aquí que está llamando un método estático qué diferencia notáis entre
00:27:34
esto y esto no pero futbolista
00:27:38
Vale, entonces entre esto y
00:27:47
Esto
00:27:51
¿Dónde está aquí?
00:27:53
Esto
00:27:56
¿Dónde está?
00:27:57
Acelera, esto
00:27:59
¿Ahora están en la misma clase?
00:28:00
No
00:28:09
No hay nubos delante
00:28:10
Aquí
00:28:15
Dice entre este
00:28:16
Y este
00:28:20
Ideas
00:28:23
Que este de aquí
00:28:31
Se está llamando
00:28:45
Sobre un objeto
00:28:48
Yo estoy diciendo
00:28:50
Acelera del objeto
00:28:52
Big2
00:28:54
Estoy haciendo hacer
00:28:54
Una acción a este objeto
00:28:57
Entonces no es estático
00:29:00
Es un objeto
00:29:02
Concreto que hace una acción
00:29:04
Sin embargo aquí, crear vuelos, no lo estoy llamando sobre un objeto
00:29:05
Y entonces no es un objeto que crea los vuelos
00:29:11
Es crear los vuelos en general
00:29:17
Es la clase que crea los vuelos, no un objeto concreto que crea los vuelos
00:29:19
Si el método es de clase, es estático
00:29:24
Si el método es de un objeto, no es estático
00:29:29
¿Puede ser estático ser un objeto o no?
00:29:35
No
00:29:40
Luego depende de qué estás diciendo
00:29:40
¿Puede un objeto llamar un método estático?
00:29:42
Sí
00:29:45
Dentro de un método
00:29:45
Dentro de un método estático
00:29:48
Puedes llamar un método
00:29:50
Dentro de un método no estático puedes llamar un método estático si quieres
00:29:51
Y al revés, lo hemos visto aquí
00:29:54
La única cosa es que
00:29:56
Si el método que yo tengo
00:29:58
Si el método que yo he hecho
00:30:00
No es estático
00:30:02
Quiere decir que lo tendré que llamar sobre un objeto
00:30:03
Es algo propio de un objeto
00:30:06
Cada instancia ejecutará su propio método
00:30:09
Y tendrá, tendencialmente, resultados distintos
00:30:13
¿Vale?
00:30:17
Sin embargo, si lo llamo así
00:30:20
O sea, no lo llamo sobre un objeto
00:30:24
Pues entonces es un método que se define como estático
00:30:26
Es un método de clase
00:30:31
¿Sobre qué objeto se lanza este aquí?
00:30:32
Sobre ninguno
00:30:35
Como no sé sobre qué objeto lanzarlo
00:30:35
Pues no es un objeto normal
00:30:38
Es un estático
00:30:40
¿Vale?
00:30:41
Grosso modo
00:30:43
Profundizaremos sobre esto más adelante
00:30:44
Por ahora
00:30:46
Sigamos con el ejemplo así
00:30:50
Por ahora simplemente asumir que esto es estático
00:30:52
Porque si lo quito me da un error
00:30:55
Entonces lo dejo
00:30:57
¿Vale?
00:31:00
La razón de por qué estoy haciendo esto es porque esto no tiene un objeto punto crear vuelos
00:31:01
Entonces sería no estático
00:31:08
Como este de aquí es un objeto, es un método que se llama desde aquí
00:31:11
Es como una función de la que veíamos antes
00:31:16
Las funciones y procedimientos son parecidos a los métodos estáticos
00:31:19
De hecho cuando nosotros habíamos visto las funciones y los procedimientos
00:31:24
Todos los ejemplos que hemos hecho hemos siempre puesto static
00:31:28
Es desde que hemos introducido los objetos
00:31:31
Que hemos quitado el static
00:31:35
¿Si?
00:31:37
Un método static
00:31:40
Es algo que es siempre igual
00:31:41
Para toda la clase
00:31:45
No depende de un objeto
00:31:46
Mientras que un método sin static
00:31:48
Depende del propio objeto
00:31:51
¿Vale?
00:31:53
Si yo llamo cambia posición
00:31:54
Sobre el objeto A o sobre el objeto B
00:31:56
Cambiaré la posición del objeto A o del objeto B
00:31:58
¿No? De los dos
00:32:02
Entonces, dependiendo de quién llama este método
00:32:03
El resultado es distinto
00:32:06
¿Sí?
00:32:09
Después hacemos más ejemplos sobre esto
00:32:11
Con un ejemplo matemático
00:32:13
Para clarificar
00:32:15
Por ahora simplemente tenemos esto
00:32:16
Vale, entonces yo tengo un método aquí
00:32:19
Que lo que hace es crearme los vuelos
00:32:21
Y luego los tendré aquí
00:32:24
A partir de ahora los puedo utilizar
00:32:25
Vamos a implementar bien este vuelo
00:32:26
¿Qué quiero hacer?
00:32:28
Pues aquí quiero crear 10 vuelos
00:32:29
Para que luego los pueda utilizar
00:32:33
¿Vale?
00:32:35
Entonces
00:32:38
Lo voy a crear manualmente
00:32:38
¿Vale?
00:32:43
Para tener una base sobre lo que hago jugar
00:32:43
¿Vale?
00:32:46
Sobre qué jugar
00:32:46
Entonces voy a crear
00:32:47
Un vuelo de posición 0
00:32:48
Por ejemplo, ¿qué pongo?
00:32:51
¿Cómo creo un nuevo objeto vuelo?
00:32:53
¿Cómo lo creo?
00:32:55
¿Qué escribo?
00:33:09
¿Qué escribo?
00:33:13
Necesito una referencia, ya la tengo
00:33:16
¿Ves esto?
00:33:18
Esto es como haber puesto vuelo x es igual
00:33:19
Pues en vez de ponerlo en la variable x
00:33:22
Lo estoy poniendo en la posición 0
00:33:25
De este array de 10 posiciones
00:33:27
New
00:33:28
Vuelo
00:33:31
Si quiero crear un nuevo objeto
00:33:34
Necesito la new
00:33:38
¿Vale?
00:33:39
Vuelo es el constructor que tenía aquí
00:33:42
¿Vale?
00:33:44
Entonces, el vuelo pilla
00:33:46
Todas estas cosas de aquí
00:33:48
¿Vale?
00:33:50
Entonces, compañía en un vuelo, destino y origen
00:33:51
Creo que hay amantes del destino y del origen
00:33:55
Pero da igual
00:33:58
Gracias
00:33:59
Entonces, compañía
00:34:05
¿Qué compañía tiene?
00:34:07
Ahí está
00:34:09
¿Qué es?
00:34:11
Que ponemos otra
00:34:13
Venga
00:34:14
¿Qué más?
00:34:18
Número
00:34:19
¿Cómo me da?
00:34:20
Origen
00:34:24
Destino
00:34:25
Ya está
00:34:31
Este es uno
00:34:37
¿Vale?
00:34:38
Lo que estoy haciendo es crear las conexiones de posibles aviones que hay
00:34:40
Para luego poder jugar con ellas
00:34:45
¿Vale?
00:34:47
Entonces
00:34:48
¿Lo podría esto automatizar?
00:34:48
Sí
00:34:52
Ahora
00:34:52
Requeriría un poquito de trabajo, ¿vale?
00:34:53
Entonces
00:35:00
El 1
00:35:00
El 2
00:35:02
El 3
00:35:04
Y el 4
00:35:05
Hacemos que son 5 solas
00:35:06
Porque si no me aburro
00:35:09
Y cambiamos un poco cosas así
00:35:10
Este es FR
00:35:12
Esto es ahí
00:35:15
Esto es
00:35:16
Así
00:35:18
este aquí cambió así 1 2
00:35:20
entonces tenemos madrid pisa tenemos para madrid de roma tenemos
00:35:28
pisa madrid y tenemos
00:35:36
roma pisa
00:35:45
que no y tenemos roma madrid es para dejarlo sencillo
00:35:49
vale porque si no luego puede haber caos entonces tengo varios porque os
00:36:02
recuerdo que por algo que nosotros somos malvados esta es la origen
00:36:09
y este es el destino porque porque yo así lo he declarado
00:36:14
dónde está
00:36:23
Antes el destino y luego el origen
00:36:25
Si cambiara
00:36:27
Esto, origen y destino
00:36:29
Pues a lo mejor
00:36:31
Origen
00:36:32
Destino
00:36:33
Somos menos simpáticos
00:36:35
Destino
00:36:38
¿Vale? Más lógico para nosotros pensarlo así
00:36:39
Que luego nos confundimos
00:36:43
Vale, ahora este es el origen y este es el destino
00:36:44
¿Vale? Y con esto he creado
00:36:46
Una red de 5 posibles
00:36:51
Vuelos, ¿vale?
00:36:53
Que luego pasaré aquí
00:36:54
Ahora, aquí dentro hay estos cinco objetos
00:36:56
¿Vale? Son cinco objetos distintos
00:36:58
¿Sí?
00:37:01
Vale
00:37:06
¿Qué vamos a hacer ahora con esto?
00:37:06
Pues la idea es que
00:37:10
Vamos a pedir al usuario, por ejemplo
00:37:11
Dónde quiere viajar o de dónde sale
00:37:14
Y le decimos las posibilidades de dónde puede viajar
00:37:17
¿Sí?
00:37:21
Entonces habrá un string
00:37:23
Origen
00:37:24
Que por ahora la fijo
00:37:25
Luego la preguntaré al usuario
00:37:29
¿Vale? Madrid
00:37:30
¿Sí?
00:37:32
Ahora, ¿cómo hago?
00:37:36
Hacerle decir al
00:37:38
Al sistema
00:37:40
Todos los posibles destinos
00:37:43
Desde Madrid
00:37:45
Los posibles destinos
00:37:46
Desde
00:37:54
Origen
00:37:55
Son
00:37:58
¿Cómo lo hago?
00:38:05
muestra vuelos
00:38:10
muestra destinos
00:38:24
vamos a hacer
00:38:28
otro
00:38:32
que pongo
00:38:33
public
00:38:36
static
00:38:39
muestra
00:38:42
destino
00:38:49
que necesito para poder
00:38:51
mostrar los destinos
00:38:55
ah, eh, espera
00:38:56
que devuelvo, perdón
00:39:02
Puedo devolver un string y luego imprimirla
00:39:04
O puedo que imprima directamente
00:39:12
Haré que imprime directamente
00:39:13
Que así le dejo un void
00:39:16
¿Vale?
00:39:17
¿Qué necesito para que funcione?
00:39:19
Se enfada porque
00:39:23
Lo he escrito mal
00:39:24
Nuestra destino
00:39:30
Muy bien, ahora
00:39:33
¿Qué necesito?
00:39:35
El array
00:39:43
Y ¿qué más?
00:39:44
El string origin
00:39:54
Pásame todos los vuelos posibles
00:39:55
Y el origen
00:40:02
Y yo te voy a escribir desde este origen
00:40:03
Donde puedes ir
00:40:05
Entonces cuando lo llamo aquí
00:40:05
¿Qué le tengo que pasar?
00:40:10
Vuelos
00:40:16
Origen
00:40:16
Este
00:40:20
Array de aquí, que es este de aquí
00:40:26
Que contiene todas las posibles conexiones
00:40:29
Será esto
00:40:31
Aquí dentro
00:40:33
Y mi origen, que en este caso
00:40:33
en Madrid, luego la pediré al usuario
00:40:37
será esta aquí
00:40:39
¿si o no?
00:40:40
entonces ¿qué hago ahora?
00:40:44
for
00:40:48
int igual a cero
00:40:49
y menor que
00:40:54
vuelo
00:40:57
v punto
00:40:59
lenght
00:41:01
y más más
00:41:02
si
00:41:05
v
00:41:14
v de i
00:41:17
Punto destino
00:41:21
Origen
00:41:32
Es igual
00:41:36
Punto equals
00:41:41
Ya me las quitó él
00:41:46
Entonces, ¿qué hago?
00:41:56
¿Sí?
00:42:16
Voy recorriendo todos estos arrays de aquí
00:42:18
¿Dónde están? Aquí
00:42:21
Todo este array de aquí, ¿vale?
00:42:22
Si la origen
00:42:24
Es igual a esto que me has dado tú
00:42:26
En este caso sale Madrid
00:42:29
O sea, si Madrid es igual a Madrid
00:42:32
Entonces escríbeme el destino
00:42:33
Entonces me escribirás Pisa
00:42:36
¿Este es igual? Sí
00:42:38
Entonces escríbeme Roma
00:42:40
¿Este es igual? No, no escribo nada
00:42:41
¿Este es igual? No, no escribo nada
00:42:43
¿Este es igual? No, no escribo nada
00:42:45
Y al final habré escrito o Pisa o Roma
00:42:46
Que son los dos destinos al que puedo llegar
00:42:50
Desde Madrid
00:42:52
¿Sí o no?
00:42:53
¿Sí o no?
00:42:57
Lo repito
00:42:58
Lo repito
00:43:00
Entonces, lo que estoy haciendo es
00:43:03
Yo tengo
00:43:06
Este array que he creado
00:43:07
Que tiene cinco posiciones
00:43:09
Que son estos cinco objetos
00:43:11
Dentro de estos objetos
00:43:12
Este es el origen, este es el destino
00:43:15
Entonces lo que estoy haciendo yo es
00:43:17
Por un índice
00:43:20
Y que recorre
00:43:22
Todos estos valores de aquí
00:43:23
Vete a ese índice de allí
00:43:25
Por ejemplo estamos en cero
00:43:27
Vete a v de cero
00:43:28
Vete a mirar la variable origen de esta posición
00:43:29
Entonces me voy a v de 0, me voy a origen y encuentro esto
00:43:37
Si esto es igual a lo que me has dado tú
00:43:42
Entonces escribe por pantalla lo que hay en destino
00:43:50
O sea esto
00:43:57
Si no, no
00:43:58
Cuidado con esto, punto origen, punto equals, ¿vale?
00:44:03
Esto sería igual a ponerlo así.
00:44:07
Si estoy de aquí, punto origen, porque es un objeto,
00:44:12
o sea, estoy en un objeto, entonces cuando accedo a esto, ¿vale?
00:44:18
Estoy aquí, tengo mucha información, de esta información accedo a este campo,
00:44:21
al campo que se llama origen, ¿vale?
00:44:26
Si este es igual, igual a lo que me has dicho tú de buscar,
00:44:29
pues entonces escribo su correspondiente destino.
00:44:32
Solo que os recuerdo que cuando hay un string por un lado
00:44:35
Lo veis todos que este es un string
00:44:40
Porque si yo accedo a esto
00:44:42
¿Qué es esto? ¿Qué tipo es esto?
00:44:45
VDI, ¿qué tipo tiene?
00:44:52
¿Qué ha metido dentro de VDI?
00:45:04
¿Un objeto? ¿De qué tipo es ese objeto?
00:45:07
Por lo tanto, este señor, ¿qué tipo tiene?
00:45:15
Vuelo
00:45:19
De hecho, si yo voy a ver el tipo vuelo, ¿vale?
00:45:20
La clase vuelo que me define su tipo
00:45:24
Sé que cualquier objeto de tipo vuelo
00:45:26
Luego dentro tiene todas estas cosas aquí a las que puedo acceder
00:45:28
Y entonces de todas las cosas que yo pueda acceder
00:45:32
Voy a acceder al campo origen
00:45:35
Fijaos que si yo hago esto
00:45:39
Aquí él me dice, vale, muy bien
00:45:43
¿A qué quieres acceder?
00:45:47
Y entre las varias cosas que puede tener un objeto vuelo
00:45:48
Tiene origen, destino, compañía, número vuelo, asiento disponible
00:45:53
¿Sí o no?
00:45:57
Vale
00:46:00
Entonces yo accedo a este campo de aquí
00:46:01
Origen
00:46:04
Ahora tengo que comprobar si lo que he seleccionado
00:46:04
La origen de este vuelo
00:46:10
¿Vale?
00:46:12
Es igual a la origen que me han dado aquí
00:46:13
Entonces
00:46:16
Me saldría de ponerle el igual igual
00:46:18
Pero no puedo ponerle el igual igual
00:46:21
Porque cuando se comparan
00:46:23
Dos strings
00:46:25
No se compara con igual igual
00:46:26
Se compara con
00:46:28
Punto equals
00:46:29
Este es un método
00:46:31
¿De qué clase?
00:46:34
Pregunta para vosotros
00:46:41
¿Dónde está
00:46:43
Definido este método de aquí?
00:46:44
Sí
00:46:52
¿Pero a qué clase pertenece?
00:46:52
O sea, cuando yo llamo este de aquí
00:46:55
¿En qué clase busco para este método?
00:46:56
String
00:47:01
Porque lo estoy llamando sobre un string
00:47:02
¿Vale?
00:47:04
Entonces, en realidad este señor de aquí
00:47:07
No pertenece a string
00:47:09
Si no me equivoco, pertenece a object
00:47:11
A object
00:47:13
Pero no sabemos qué es
00:47:14
Pero yo iré a mirar la implementación de string
00:47:16
Porque estoy haciendo
00:47:20
Lo estoy llamando sobre un objeto
00:47:21
¿Qué objeto es?
00:47:23
Sobre el que lo estoy llamando
00:47:24
Este objeto
00:47:25
Porque este señor de aquí
00:47:28
Si va a mirar que es
00:47:33
Su string
00:47:34
String es un objeto
00:47:37
Entonces
00:47:39
En la
00:47:42
Definición de string
00:47:43
En la clase string
00:47:47
Estará definido el objeto equals
00:47:48
Y yo llamo
00:47:51
Un objeto
00:47:52
Punto equals
00:47:54
Que lo veo mal
00:47:55
Lo hago por pasos
00:47:57
String
00:47:59
Un posible origen
00:48:00
¿Cómo se llama?
00:48:10
O1
00:48:11
O
00:48:12
O
00:48:12
¿Sí?
00:48:13
Es igual a esta cosa aquí
00:48:15
Y si esta cosa de aquí
00:48:17
Es igual a
00:48:26
O
00:48:28
Así lo veis mejor
00:48:28
Primero hacer al vuelo
00:48:31
Mira
00:48:36
Todavía más por pasos
00:48:36
Vuelo, mi vuelo
00:48:38
Es igual a
00:48:41
V de Y
00:48:43
Mi vuelo
00:48:43
Esto lo está haciendo pasito a pasito
00:48:50
Primero acedo a la posición
00:48:55
Y de la array
00:48:57
Y me saco un objeto vuelo
00:48:59
Vale, lo tengo aquí, este es un objeto vuelo
00:49:01
Vale, desde este objeto vuelo
00:49:03
Acedo a su
00:49:06
Atributo origen
00:49:07
Que es un string, y me lo guardo en un string
00:49:08
Vale, lo tengo aquí
00:49:11
Si ahora este origen
00:49:13
Es igual a la que me has dado tú
00:49:14
Entonces
00:49:17
Aquí podría poner
00:49:19
Ory
00:49:22
No, mi vuelo
00:49:24
Entonces accede a este objeto de aquí
00:49:25
Que estabas considerando
00:49:32
Y mira su destino
00:49:33
¿Sí?
00:49:34
Estos todos divididos pasito a pasito
00:49:39
Pero claro, no lo necesito hacer así
00:49:42
¿Vale?
00:49:44
Y entonces ¿Cómo lo hago?
00:49:47
V de I
00:49:55
Esto
00:50:04
¿Sí?
00:50:06
Que sería esto
00:50:09
Entonces, punto origen
00:50:10
Todo esto
00:50:12
Es esta cosa aquí
00:50:16
¿Vale?
00:50:19
Punto equals
00:50:21
O, entonces accede a
00:50:23
V de I
00:50:26
Estas dos cosas hacen la misma
00:50:27
Hacen lo mismo, ¿vale?
00:50:30
Solo que esto lo va
00:50:32
Descomponiendo el acceso
00:50:33
A los varios
00:50:36
Objetos, trocito a trocito
00:50:37
Mientras que este de aquí
00:50:40
Lo hace de golpe
00:50:42
Así es como se usa
00:50:43
Así no
00:50:47
Dudas
00:50:49
Entonces, este de aquí lo hace para todos
00:50:52
Estos vuelos de aquí
00:50:59
Y me saca
00:51:01
Solo los destinos
00:51:02
Cuyo origen
00:51:05
Sea Madrid
00:51:07
Vamos a ver si funciona
00:51:08
Los posibles destinos
00:51:13
Desde Madrid son Pisa
00:51:20
Y Roma
00:51:22
Entonces yo ahora
00:51:23
Pediré al usuario
00:51:32
Elige un destino
00:51:33
Y él lo pondré
00:51:35
Dentro de destino
00:51:40
Luego se lo preguntará a él
00:51:42
Pero por ahora voy a poner aquí
00:51:50
Yo directamente los valores
00:51:52
Para hacer pruebas
00:51:54
Porque así cada vez que
00:51:55
Lanzo el programa, no tengo que escribir nada
00:51:57
Se prueba
00:52:00
¿Vale?
00:52:01
Si cada vez me dice, ¿de dónde vienes?
00:52:03
De Madrid, tengo que escribir Madrid
00:52:06
¿De dónde vas? Pues pisa, pues tardo mucho tiempo
00:52:07
¿Sí?
00:52:10
Vale
00:52:16
Entonces, ¿qué hago ahora?
00:52:16
La origen ya la tengo
00:52:27
Tengo origen y destino
00:52:29
Billete
00:52:31
¿Por qué tengo que mostrar el origen?
00:52:32
La origen ya la sé
00:52:37
No lo sé, decidme vosotros
00:52:38
Soy una agencia, viene un señor
00:52:43
Me dice, ay, yo quiero salir de Madrid
00:52:45
Vale, desde Madrid podéis ir a Pisa, Roma
00:52:48
Vale, quiero ir a Pisa
00:52:49
¿Y ahora qué hago? Hasta luego
00:52:51
Tendrá que construirle el billete
00:52:52
Con esta base de aquí
00:52:55
¿Cómo construyes el billete?
00:52:56
Hagámoslo aquí
00:53:02
Para variar
00:53:03
¿Qué necesito para un billete?
00:53:05
Estas cosas de aquí
00:53:11
Nombre
00:53:12
¿Vale?
00:53:13
Entonces, aquí le preguntaré su nombre
00:53:16
Luego se lo preguntaré
00:53:18
Todas estas cosas, ¿vale?
00:53:23
Eh, pésalo
00:53:25
Vale, hecho, lo tengo
00:53:26
¿Qué más quiero? El vuelo
00:53:30
¿Cómo saco el vuelo?
00:53:32
¿Cómo lo hago?
00:53:45
Tengo que hacer otro método parecido a eso
00:53:51
¿Se puede hacer de forma más eficiente?
00:53:53
Pues probablemente sí, eh
00:53:55
Pero bueno, por ahora la eficiencia
00:53:56
Es el último de mis problemas
00:53:58
¿Vale? Entonces aquí
00:54:01
Ahora yo le diré que
00:54:02
El vuelo que yo busco
00:54:04
¿Cómo lo encuentro?
00:54:05
Amente con busca vuelo
00:54:13
¿Quién me dice cómo se hace
00:54:15
Busca vuelo?
00:54:26
Public, static
00:54:30
¿Quién me tiene que devolver?
00:54:32
Vuelo
00:54:43
Busca vuelo
00:54:44
¿Qué necesito
00:54:47
Para buscar un vuelo?
00:54:51
Por ejemplo, el destino, ¿no?
00:54:59
Cuidado
00:55:08
En la realidad, eso sería un poquito más
00:55:08
Complejo, porque podría tener
00:55:10
Varios vuelos
00:55:12
Varias compañías que hacen el mismo vuelo
00:55:14
¿Vale? Pero lo simplificamos, ¿eh?
00:55:16
Aquí busco el primero que encuentro
00:55:18
Y ya está
00:55:20
Entonces, cuando lo busco
00:55:20
Desde aquí, ¿qué le tengo que pasar?
00:55:24
¿Dónde tengo el origen?
00:55:26
¿Os acordáis?
00:55:34
Tenía el origen, el origen, el destino, el destino
00:55:34
Por lo tanto
00:55:37
Antes lo que estaba buscando
00:55:39
Eran
00:55:41
Los posibles vuelos
00:55:42
Desde una determinada origen
00:55:46
¿Sí?
00:55:48
Ahora yo quiero un vuelo concreto
00:55:49
El que va desde aquí hasta aquí
00:55:51
¿Le tengo que pasar algo más?
00:55:54
¿Os acordáis?
00:56:09
¿Le tengo que pasar todos los vuelos?
00:56:11
Porque lo tengo aquí
00:56:13
¿O no?
00:56:15
Como antes cuando buscaba un origen
00:56:18
No le pasaba solo el origen
00:56:21
Y él buscaba
00:56:23
Le pasaba todas las posibles conexiones
00:56:24
Y de este búscame
00:56:27
Solo la que tiene un determinado origen
00:56:29
Ahora en vez de lo que hago es
00:56:30
Búscame
00:56:33
En todas las conexiones
00:56:34
La que tiene un determinado origen o un determinado destino
00:56:38
¿Cómo?
00:56:41
¿Cómo?
00:56:45
Ah
00:56:49
Porque como devuelvo algo
00:56:49
Pues entonces se enfada
00:57:02
¿Vale?
00:57:03
Es decir, que yo ahora tendré un vuelo
00:57:05
Mi vuelo
00:57:08
Y al final
00:57:11
Tendré que devolver este mi vuelo
00:57:15
Al principio
00:57:18
Este es nul
00:57:27
¿Vale?
00:57:29
Vamos a ver que hacemos aquí
00:57:31
Como hago para buscar dentro de este array
00:57:35
La que tiene
00:57:39
Origen O y destino D
00:57:40
Ah, fijamos que me he equivocado
00:57:43
O y D
00:57:45
Es igual a aquel otro
00:57:47
Solo que ahora
00:57:53
Lo que me interesa es que
00:58:03
Además que la origen sea O
00:58:06
El destino
00:58:08
Sea
00:58:16
D
00:58:19
Este if de aquí
00:58:22
Me está diciendo
00:58:27
Vete por todo la ray
00:58:29
Que teníamos nosotros, ¿vale?
00:58:32
Y pregúntate si
00:58:34
La posición actual la que estás mirando
00:58:36
Esta de aquí, ¿vale?
00:58:38
Por ejemplo
00:58:40
El origen se corresponde
00:58:40
Y el destino se corresponde
00:58:44
Entonces este es el objeto que yo quiero
00:58:46
¿Vale?
00:58:48
Si no, no
00:58:51
Y si este es el objeto que yo quiero
00:58:52
¿Qué tengo que hacer?
00:58:55
¿Qué estoy buscando?
00:59:13
He encontrado que este es el vuelo correcto
00:59:15
VDI es el vuelo correcto
00:59:17
Pues ¿qué hago?
00:59:18
Me guardo dentro de esta variable de aquí
00:59:24
El vuelo
00:59:26
Que he encontrado en este momento
00:59:28
Así que cuando salgo del for
00:59:30
¿Qué hay dentro de mi vuelo?
00:59:32
Dos opciones
00:59:39
Si lo he encontrado
00:59:40
Me ha devuelto el objeto correcto
00:59:43
Si no lo he encontrado
00:59:46
Tengo null
00:59:48
¿Si o no?
00:59:50
El resultado
00:59:57
Me lo devuelve aquí
00:59:58
Y me lo pone aquí dentro
01:00:01
O sea que yo ahora aquí dentro tengo
01:00:02
O el vuelo que estoy buscando
01:00:05
O un null
01:00:07
If
01:00:09
Vuelo
01:00:14
Not null
01:00:16
Siga adelante
01:00:18
Si o no
01:00:28
Si
01:00:29
Veamos que hago
01:00:32
Entonces, ahora tengo el nombre y el vuelo
01:00:38
El, donde está, no, el billete
01:00:41
Nombre, vuelo
01:00:45
Necesito precio, fecha
01:00:47
Y si afiscas, vale
01:00:49
Entonces
01:00:51
Pinta precio
01:00:52
Es igual que la gente hace en dólares
01:00:55
Siempre
01:00:57
Que más tenía
01:00:57
Fecha
01:01:00
Tring
01:01:02
Fecha es igual
01:01:06
Al 25
01:01:09
De diciembre de 2022
01:01:11
Siempre
01:01:13
Viajamos por navidad
01:01:14
Y
01:01:16
Fresh class
01:01:18
Fals
01:01:20
Esto todo lo podré preguntar al usuario
01:01:27
Hacer métodos que me lo calculan
01:01:33
Todo lo que te da gana
01:01:36
¿Vale? Pero por ahora, para hacerlo más sencillo
01:01:37
Le doy yo, siempre es
01:01:39
Que costa 100 euros
01:01:41
Siempre vamos por Navidad
01:01:42
Y siempre vamos que falte
01:01:44
¿Vale?
01:01:46
Ok, ahora tengo que crear
01:01:49
El billete, tengo todos los datos
01:01:51
Tengo
01:01:53
La origen, tengo el vuelo, perdón, aquí
01:01:55
El nombre de quien vuela
01:01:59
El vuelo
01:02:01
Que va a pillar
01:02:02
Tengo el precio, la fecha
01:02:04
Y si haces caso, no
01:02:08
Entonces ya puedo crear el billete
01:02:09
¿Cómo creo el billete?
01:02:11
Billete
01:02:25
De avión
01:02:25
No todos a la vez, por favor
01:02:27
¿Cómo creo un objeto, señores?
01:02:35
Esto ya no es la primera vez que lo hemos visto
01:02:39
Billete es igual a qué?
01:02:41
New
01:02:46
¿De qué?
01:02:46
De billete de avión
01:02:48
¿Os acordáis?
01:02:52
El constructor
01:02:56
¿Vale?
01:02:58
¿Qué le pongo aquí dentro?
01:03:00
Nombre
01:03:03
Este nombre de aquí
01:03:04
Vuelo
01:03:06
Este vuelo de aquí
01:03:10
¿Vale?
01:03:12
Porque acordaos que
01:03:15
Si estoy aquí dentro, esto no es nul
01:03:17
Por lo tanto es un objeto
01:03:19
Vuelo válido
01:03:21
¿Si?
01:03:22
Precio, fecha, Fsclass
01:03:25
Y ya está, ya me he creado
01:03:26
Mi objeto billete
01:03:37
Ahora para ver
01:03:38
Que esto ha hecho algo
01:03:47
Hagamos lo siguiente
01:03:49
Creamos
01:03:51
En billete de avión
01:03:53
Un método
01:03:55
Un toString, un imprime
01:03:57
¿Vale? Algo por el estilo
01:03:59
Quiero un método que si lo llame
01:04:01
Sobre un billete, me escriba
01:04:05
Algo de este billete, me escriba
01:04:07
Todas estas cosas bonitas
01:04:09
¿Vale?
01:04:10
Entonces, public
01:04:12
¿Qué más?
01:04:15
¿Estático o no?
01:04:17
¿Es un método
01:04:20
Que depende de la clase
01:04:21
Y será siempre igual independientemente
01:04:22
Del billete que yo llamo
01:04:24
O depende del billete sobre el que yo llamo
01:04:26
Depende del billete
01:04:28
Por lo tanto no es estático
01:04:31
Dos billetes distintos
01:04:32
Escribirán cosas distintas
01:04:35
Que devuelve
01:04:37
Hasta void
01:04:39
Puedo devolver un string
01:04:40
Depende de donde lo quiero imprimir
01:04:41
Hagamos void que es más sencillo
01:04:43
Imprimir
01:04:45
Y me dirá
01:04:47
Si eso
01:04:52
El
01:04:54
El día
01:04:57
Más
01:05:00
No, porque tú lo llamarás
01:05:03
Sobre su objeto
01:05:11
Y el objeto tendrá sus datos
01:05:11
¿Qué datos estos?
01:05:13
Entonces lo puedo llamar directamente
01:05:15
El día
01:05:16
Fecha
01:05:20
Voy a viajar
01:05:23
De
01:05:30
Más origen
01:05:31
A
01:05:36
Más destino
01:05:39
En el vuelo
01:05:44
Interesante
01:05:49
¿Cómo lo hago?
01:06:09
Lo que quiero yo es
01:06:21
Compañía en un vuelo
01:06:23
¿Vale?
01:06:26
Pongamos así, en el vuelo
01:06:27
Y el número del vuelo
01:06:29
¿Cómo saco el número del vuelo desde aquí?
01:06:30
Yo tengo aquí
01:06:33
Vuelo, que es un vuelo
01:06:36
Por lo tanto puedo acceder
01:06:39
Desde aquí
01:06:41
A vuelo
01:06:42
Este es un objeto vuelo
01:06:45
vale punto todas las características de un objeto vuelo incluidos en un vuelo
01:06:47
sí sí porque no origen el destino no están aquí verdad a jornadas que origen el destino no
01:07:04
pertenecen a billete pertenecen a este vuelo se me ha pasado a mí vale entonces aquí no hay origen
01:07:11
Aquí no hay destino
01:07:20
El origen y el destino están dentro de un objeto vuelo
01:07:21
Aquí
01:07:24
Origen y destino
01:07:24
Por lo tanto, para accederlo desde aquí
01:07:27
Lo que tengo que hacer es acceder
01:07:30
A mi campo vuelo
01:07:32
Y luego desde mi campo vuelo
01:07:34
Al origen y el destino
01:07:39
¿Sí o no?
01:07:40
De hecho, mirad, si yo lo dejo así con destino
01:07:45
Se enfada, ¿eh?
01:07:47
Me dice, destino no existe
01:07:49
Marcado en rojo
01:07:50
Me dice, destino cannot be resolved
01:07:52
To a variable
01:07:55
No es posible encontrar una variable
01:07:55
Que se llama destino, no existe destino aquí
01:07:59
Verdad, culpa mía
01:08:01
Tienes que ir a vuelo.destino
01:08:03
Ahora sí
01:08:05
En el vuelo o en un vuelo
01:08:06
Vale, dejámoslo así, podría sacar más información
01:08:12
Pero
01:08:14
Entonces
01:08:15
Si ahora llamo imprime
01:08:18
Imprimir
01:08:20
Me debería decir toda esta información
01:08:21
Por lo tanto, desde la agencia, después de haber creado el billete
01:08:24
Hago que el billete se imprima
01:08:30
¿Cómo hago que el billete se imprima?
01:08:32
Llamando el método, imprimir
01:08:37
Pero el método de imprimir es estático
01:08:38
No, por lo tanto no lo puedo llamar así
01:08:42
Lo tengo que llamar sobre un objeto
01:08:46
Billete.imprimir
01:08:49
dudas
01:08:53
veamos si esto funciona
01:08:56
aquí es cuando yo había puesto Madrid
01:09:00
me dice que los destinos son Pisa y Roma
01:09:07
luego he elegido Pisa
01:09:09
entonces el día 25 este de aquí
01:09:10
voy a viajar de Madrid a Pisa
01:09:13
en el vuelo este de aquí
01:09:15
parece funcionar
01:09:17
voy a hacer otra prueba
01:09:22
y si le pongo
01:09:24
Pisa
01:09:26
Madrid
01:09:27
el día no se que no se que
01:09:29
va a volar desde Pisa a Madrid
01:09:37
en el vuelo 1111
01:09:39
el otro vuelo
01:09:41
si
01:09:45
estos datos de aquí no cambian porque siempre lo ha dejado igual
01:09:46
pero esto
01:09:49
si que cambia
01:09:51
y si voy a Roma
01:09:52
Pisa-Roma
01:09:56
no me acuerdo si hay Pisa-Roma
01:09:57
o Roma-Pisa
01:10:01
si no está
01:10:02
los posibles vuelos desde Pisa son Madrid
01:10:05
Y como cuando he buscado Pizaroma
01:10:09
No he encontrado ninguno
01:10:12
Entonces cuando he llegado aquí
01:10:14
Vuelo
01:10:17
Seguía siendo null
01:10:17
Y por lo tanto esta cosa de aquí no la he hecho
01:10:19
Y no he hecho nada
01:10:22
Podría poner un
01:10:24
Y eso
01:10:26
Lo sentimos
01:10:33
Nuestra
01:10:36
Agencia
01:10:38
Agencia no se escribe así
01:10:40
Agencia
01:10:42
No gestiona vuelos de origen a destino
01:10:44
Entonces, si ahora pongo algo que no es
01:11:03
Dice, lo sentimos, nuestra agencia no gestiona vuelos de pisarro
01:11:08
Entonces, vamos ahora a
01:11:11
Completar este ejercicio
01:11:19
lo dejamos de en vez que este de aquí lo lea lo ponga yo directamente pues que
01:11:22
interactúe con el usuario vale entonces al principio le diré
01:11:30
dime la origen y leo la origen para leer la origen llamaré un método que es leer algo
01:11:39
Vamos a crearle el algo
01:11:59
Aquí al fondo
01:12:01
Public
01:12:02
Porque todo es otro public
01:12:05
¿Qué pongo? ¿Static o no?
01:12:06
Leer algo
01:12:13
¿Lo estoy llamando sobre un objeto o no?
01:12:14
No
01:12:21
Por lo tanto static
01:12:22
¿Qué me tiene que devolver?
01:12:23
Miradlo aquí
01:12:27
¿Qué me tiene que devolver?
01:12:28
String
01:12:32
¿Cómo se llama?
01:12:32
Lee algo
01:12:36
¿Pilla parámetros? No
01:12:37
¿Y qué hace?
01:12:39
Scanner scan
01:12:42
Es igual
01:12:44
A new
01:12:45
Scanner
01:12:47
De system.in
01:12:49
Return
01:12:51
Scan.nextline
01:12:55
Por ejemplo
01:13:00
Te lee una línea
01:13:04
Y te la devuelve
01:13:07
Como esto lee una string
01:13:09
Pues el resultado de esta operación
01:13:11
Te la devuelve
01:13:13
Entonces aquí he leído algo
01:13:14
Para el origen
01:13:18
Y aquí que haré
01:13:20
Leer algo también
01:13:23
Cada vez que llamo leo algo
01:13:29
Me leerá una línea
01:13:30
O no
01:13:32
Antes le tendré que decir algo
01:13:34
Bueno podría ponerle aquí
01:13:38
Mirad esto de dime la origen
01:13:40
Se lo pongo aquí
01:13:42
Y esto
01:13:44
Lo pongo dentro de
01:13:47
Lealgo
01:13:52
Así
01:13:53
Bring mensaje
01:13:54
Imprime mensaje
01:13:59
Ahora yo tengo una función
01:14:03
Lealgo que le doy un parámetro
01:14:06
Un mensaje, lo que hace él es escribir
01:14:08
Este mensaje, luego solicitarme algo
01:14:11
Por lo tanto, aquí le diré
01:14:13
Lealgo de dime la origen
01:14:18
Y aquí le diré
01:14:20
Le algo
01:14:22
Le dime el destino
01:14:23
Y ahora ya puedo trabajar
01:14:25
Con esto
01:14:33
Lanzo este de aquí
01:14:34
Ahora me dice
01:14:40
Dime la origen
01:14:42
Digo Madrid
01:14:44
Y me dice
01:14:46
Los posibles destinos
01:14:49
Desde Madrid
01:14:55
Son Pisa y Roma
01:14:56
Dime el destino
01:14:58
¿Dónde queréis ir?
01:15:00
Pisa
01:15:04
Pisa
01:15:05
El día 25 no sé qué
01:15:06
Voy a viajar de Madrid a Pisa
01:15:09
En el vuelo 8458
01:15:11
Vale
01:15:13
Cambiamos
01:15:13
¿Dónde queréis ir?
01:15:15
Dime el origen
01:15:17
Pisa
01:15:18
Desde Pisa puedo viajar solo a Madrid
01:15:22
Dime el destino
01:15:25
Madrid
01:15:27
¿Vale?
01:15:28
Voy a viajar de Pisa a Madrid
01:15:30
Vale
01:15:31
Roma
01:15:32
O Roma
01:15:35
Origen, Roma
01:15:36
A Roma puedo viajar a Pisa o Madrid
01:15:38
¿De dónde voy?
01:15:41
A Genova
01:15:45
Lo sentimos
01:15:46
Nuestra agencia no gestiona vuelos
01:15:48
De Roma a Genova
01:15:52
- Idioma/s:
- Autor/es:
- Stefano Chiesa
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial
- Visualizaciones:
- 25
- Fecha:
- 22 de noviembre de 2022 - 13:25
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 1h′ 15′ 56″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 345.99 MBytes