1 00:00:01,899 --> 00:00:08,140 vale pues alguna cosita por ahí alguna pregunta que queráis que tengáis antes de arrancar a 2 00:00:08,140 --> 00:00:24,739 contaros yo cosas pues había pensado normalmente cuando cerramos un tema pues me gusta repasar la 3 00:00:24,739 --> 00:00:29,519 tarea ya para dejarlo concluido el tema por completo y bueno pues ahora que vamos haciendo 4 00:00:29,519 --> 00:00:35,140 la tarea pues siempre es buena oportunidad para ir repasando un poco los conceptos que hemos visto 5 00:00:35,140 --> 00:00:41,280 durante la tarea esta, así que si os parece pues resolvemos, aunque ya tenéis una versión 6 00:00:41,280 --> 00:00:47,140 también abierta incluso en el aula virtual resuelta, pues la trabajamos aquí y así 7 00:00:47,140 --> 00:00:53,000 pegamos un último repaso y la semana que viene pues ya hablamos de cosas del tema 8 00:00:53,000 --> 00:00:58,820 que justo está recién abierto esta semana. En particular, bueno, pues hay como dos bloques 9 00:00:58,820 --> 00:01:01,799 en el tema 6, uno que sigue hablando de cosas 10 00:01:01,799 --> 00:01:04,620 de Java, bueno todo es Java 11 00:01:04,620 --> 00:01:07,000 lógicamente, pero cosas más 12 00:01:07,000 --> 00:01:10,560 de clases en sí de Java, habla de la clase 13 00:01:10,560 --> 00:01:12,599 Stream con un montón de métodos que tiene 14 00:01:12,599 --> 00:01:16,299 es una clase muy interesante 15 00:01:16,299 --> 00:01:19,400 porque se utiliza muchísimo y los métodos 16 00:01:19,400 --> 00:01:21,579 nos pueden ayudar a resolver bastantes cosas 17 00:01:21,579 --> 00:01:25,620 y luego tiene otro bloque que habla de expresiones regulares 18 00:01:25,620 --> 00:01:28,680 que no es una cosa ni mucho menos exclusiva 19 00:01:28,680 --> 00:01:32,640 de Java, aunque también se pueden integrar las expresiones regulares en los programas 20 00:01:32,640 --> 00:01:36,500 de Java. Y bueno, conocerlas es también porque 21 00:01:36,500 --> 00:01:40,280 da mucha potencialidad a la posibilidad 22 00:01:40,280 --> 00:01:44,640 de hacer filtros o de hacer búsquedas, tanto 23 00:01:44,640 --> 00:01:48,640 dentro de un lenguaje como, por ejemplo, en accesos 24 00:01:48,640 --> 00:01:52,879 a base de datos, con instrucciones de consulta, 25 00:01:53,659 --> 00:01:56,739 como consultas desde lenguajes 26 00:01:56,739 --> 00:02:00,620 de programación. Conoceremos un poco las expresiones 27 00:02:00,620 --> 00:02:04,980 regulares también y como hay clases que tenemos en las librerías 28 00:02:04,980 --> 00:02:08,620 disponibles que nos permiten integrar estas expresiones regulares 29 00:02:08,620 --> 00:02:14,719 dentro de nuestro código. ¿Os parece bien el plan? ¿Arrancamos 30 00:02:14,719 --> 00:02:17,800 con la tarea del tema anterior? 31 00:02:19,639 --> 00:02:21,800 Vale, pues nadamos con ello. 32 00:02:23,460 --> 00:02:27,000 Una cosilla respecto a la tarea, ni mucho menos es bronca 33 00:02:27,000 --> 00:02:34,560 y no es que me moleste mucho. En algunas tareas, que no todas, pues bueno, pues se ve mucho la mano de ChaGPT. 34 00:02:37,009 --> 00:02:41,969 Yo que sé, a mí me resulta un poco incómodo ponerme a corregir una tarea e intentar sacar algunos comentarios 35 00:02:41,969 --> 00:02:47,370 o expresar mis puntos de vista sobre alguna de esas tareas cuando sé que en realidad se la estoy corrigiendo a ChaGPT, ¿no? 36 00:02:47,650 --> 00:02:52,849 Entonces me parece que no resulta útil en verdad para nadie, ni para quien la entrega. 37 00:02:52,849 --> 00:03:16,669 Y bueno, para mí el rato ese, bueno, no es que me importe porque al final tengo mi horario para hacer estas cosas de corrección de tareas, pero sí que me parece que resulta poco útil. Me refiero a algunos casos particulares. Simplemente lo lanzo ahí y ya está. Yo no me voy a poner a discutir con nadie, creo que tu tarea está entregada por ChagPT o no, o inteligencia artificial equivalente a ChagPT. 38 00:03:16,669 --> 00:03:20,509 entonces bueno, yo os invito a los que trabajéis las tareas 39 00:03:20,509 --> 00:03:23,569 pues que si no entendéis cosas 40 00:03:23,569 --> 00:03:25,849 pues utilizad los foros, preguntadlas 41 00:03:25,849 --> 00:03:28,650 aunque sean incluso de la propia tarea que tenemos abierta 42 00:03:28,650 --> 00:03:30,729 si no me importa, si lo útil de las tareas 43 00:03:30,729 --> 00:03:34,569 es que vayáis aprendiendo de cara a luego el examen 44 00:03:34,569 --> 00:03:38,050 que es donde de verdad sin posibilidades de herramientas adicionales 45 00:03:38,050 --> 00:03:39,449 vais a tener que escribirlo y además 46 00:03:39,449 --> 00:03:43,449 afortunado o desafortunadamente va a ser en un papel 47 00:03:43,449 --> 00:03:46,629 entonces el entrenamiento de las tareas os puede venir bien para eso 48 00:03:46,629 --> 00:03:51,189 y un copy y paste de chat GPT no va a ayudar en nada. 49 00:03:52,469 --> 00:03:55,750 Entonces, bueno, si os complican algunas de las prácticas, 50 00:03:55,990 --> 00:03:58,889 es normal, estamos ahí en el proceso de ir aprendiendo. 51 00:03:59,789 --> 00:04:01,930 Aprovechar los foros y ya os digo, 52 00:04:02,069 --> 00:04:04,370 aunque cuando lo vayamos comentando 53 00:04:04,370 --> 00:04:08,150 no pongamos el resultado total de la tarea en ese momento, 54 00:04:08,789 --> 00:04:10,750 pero bueno, pues puede resultar interesante 55 00:04:10,750 --> 00:04:13,270 para ir viendo ciertas cosas o ir avanzando en la práctica 56 00:04:13,270 --> 00:04:16,029 o ir entendiendo algunos aspectos. 57 00:04:16,629 --> 00:04:19,750 creo que para vosotros incluso puede resultar más útil. 58 00:04:21,629 --> 00:04:30,490 Bueno, ¿por qué os lo digo? Bueno, pues alguna de las tareas, pues ves cosas por ahí que salen bastante de un poco el modelo 59 00:04:30,490 --> 00:04:34,069 o un poquillo del modelo de cómo vamos viendo nosotros la programación. 60 00:04:34,069 --> 00:04:39,889 Y es cierto que algunos de vosotros podéis tener también experiencia previa y saber programar muy bien, muy bien en Java. 61 00:04:39,889 --> 00:04:43,529 entonces, bueno, pues como me descuadra un poco 62 00:04:43,529 --> 00:04:46,750 pues yo también soy capaz de coger el enunciado, ponerlo en ChagPT 63 00:04:46,750 --> 00:04:50,589 y bueno, pues ves que la propuesta que te ofrece ChagPT 64 00:04:50,589 --> 00:04:52,850 pues es muy parecida a la que a lo mejor está entregada 65 00:04:52,850 --> 00:04:54,589 cuando está incluyendo ciertas cosas 66 00:04:54,589 --> 00:04:58,389 que realmente no se ajustan al modo en el que estamos 67 00:04:58,389 --> 00:05:00,149 un poco contándolas aquí en clase 68 00:05:00,149 --> 00:05:03,189 bueno, simplemente es una reflexión 69 00:05:03,189 --> 00:05:05,250 ya os digo, hacer un poco lo que queráis 70 00:05:05,250 --> 00:05:07,509 las prácticas son para vuestro entrenamiento 71 00:05:07,509 --> 00:05:25,329 A mí no me, bueno, me cuesta un rato, lógicamente, corregirlas, pero forma parte de mi trabajo, con lo cual, bueno, pues lo hago gustosamente. Pero quien se base un poco en esta línea, pues realmente no va a sacar el rendimiento que de verdad podría sacar trabajándolo con la práctica. 72 00:05:25,329 --> 00:05:38,730 Pero bueno, dicho esto, simplemente por expresarlo. Vamos al ataque, a leer el enunciado y vamos a ver cómo planteamos el ejercicio. 73 00:05:41,720 --> 00:05:57,040 Mirad este ejercicio, lo hemos enunciado un momento así de forma rápida, tiene un poquito de blablabla por aquí, una calle peatonal, en definitiva, hay tres tipos de actividades en academias, de música, inglés y baile. 74 00:05:58,779 --> 00:06:09,839 Proponemos que cada una de las actividades tenga dos horarios los sábados, que son de 10 a 11 y de 11 a 12, y en cada una de las clases entra un máximo de dos personas. 75 00:06:11,180 --> 00:06:23,980 Y luego, en el total de actividades que se pueden reservar un sábado, aunque haya plazas porque no se cubran entera, de forma completa, pues proponemos que haya un máximo de cuatro alumnos. 76 00:06:23,980 --> 00:06:37,660 A lo mejor los cuatro alumnos han decidido ir a esa mañana a clase de música, repartidos en los dos horarios, y a inglés y baile no va nadie. Pero bueno, bloqueamos en el enunciado hasta un máximo de cuatro alumnos. 77 00:06:37,660 --> 00:07:05,899 Nos da dos opciones, que lo comentaba a una pregunta que me hacía un compañero ahí en el foro. Nos da la posibilidad de gestionar también el máximo este de cuatro y luego, además, para probar en línea general ese programa, metiendo cuatro alumnos en cada ejecución, nos permite probar prácticamente todas las cosas con dos o tres ejecuciones y así no nos pasamos mucho rato metiendo datos hasta un máximo de doce, 78 00:07:05,899 --> 00:07:13,319 que sería el máximo de alumnos que podría entrar dentro de las tres academias cualquiera de los sábados. 79 00:07:14,800 --> 00:07:18,759 Además propone que cuando estamos metiendo hasta un máximo de cuatro alumnos, 80 00:07:19,420 --> 00:07:25,120 pues se pueda dejar inscribir a la actividad alumnos poniendo la palabra fin. 81 00:07:25,439 --> 00:07:27,180 Bueno, pues un control más que hay por ahí. 82 00:07:27,180 --> 00:07:37,480 En el desarrollo, pues bueno, se propone que se haga en dos clases, Academia y Agenda. 83 00:07:38,079 --> 00:07:46,300 Digamos que la Agenda sería la clase donde se inicia el programa y tiene instancias, digamos, de objetos, 84 00:07:47,459 --> 00:07:54,779 instancias de la clase, de las diferentes clases Academia, y el código de la clase Academia que sea común 85 00:07:54,779 --> 00:07:59,339 y, bueno, pues podamos diferenciar una academia u otra en función de sus atributos. 86 00:08:00,079 --> 00:08:04,379 Y el nombre que en particular diferencia unas academias de otras, pues es el atributo nombre. 87 00:08:06,600 --> 00:08:13,279 Entonces, para la clase agenda, pues lo que propone es que sea desde donde inicia, aquí con el main, 88 00:08:14,560 --> 00:08:19,379 que tenga tres atributos, que tenga tres instancias, perdón, tres objetos, 89 00:08:19,379 --> 00:08:22,480 de los objetos que podemos crear en la clase 90 00:08:22,480 --> 00:08:27,399 agenda, uno para música, baile e inglés 91 00:08:27,399 --> 00:08:31,000 al cual le asignaremos en el atributo nombre 92 00:08:31,000 --> 00:08:33,919 la actividad para la que está dedicado. 93 00:08:35,379 --> 00:08:38,200 Aquí dice, ¿valora si estas referencias pueden ser estáticas? 94 00:08:39,159 --> 00:08:43,539 ¿Cuándo podrían ser estáticas? Cuando todos los posibles 95 00:08:43,539 --> 00:08:47,740 objetos de la clase tuvieran 96 00:08:47,740 --> 00:08:54,139 a ver, como os diría, si definimos 97 00:08:54,139 --> 00:08:58,139 estas referencias dentro de la clase de academia, las podríamos, agendas, las podríamos 98 00:08:58,139 --> 00:09:02,080 definir estáticas en el momento en el que todas las posibles 99 00:09:02,080 --> 00:09:05,460 agendas que existiesen tuvieran, utilizasen la misma 100 00:09:05,460 --> 00:09:10,000 academia de inglés, la misma academia de baile y la misma academia de música 101 00:09:10,000 --> 00:09:12,759 porque todas las agendas compartirían 102 00:09:12,759 --> 00:09:17,580 estas tres academias. Como solamente 103 00:09:17,580 --> 00:09:22,240 consideramos una agenda, pues ella misma es capaz de compartirlo 104 00:09:22,240 --> 00:09:25,659 con sí misma, con lo cual sería posible definir las estáticas. 105 00:09:26,360 --> 00:09:31,980 Bueno, podemos no hacerlo durante el desarrollo del ejercicio o sí. 106 00:09:33,519 --> 00:09:36,340 Pero ya os digo, como todas las agendas comparten las mismas 107 00:09:36,340 --> 00:09:41,559 academias, de hecho, en este caso es así porque solamente existe 108 00:09:41,559 --> 00:09:45,000 una agenda, entonces la comparte consigo mismo y con nadie más, 109 00:09:45,000 --> 00:09:48,720 estas academias podrían llegar a ser estáticas. 110 00:09:50,769 --> 00:09:54,110 Y luego propone que se cree un método 111 00:09:54,110 --> 00:09:59,009 MostrarAgenda que indique con esta estructura 112 00:09:59,009 --> 00:10:04,950 las reservas que se han hecho de cada una de las academias. 113 00:10:06,490 --> 00:10:10,370 Digamos que la clase Agenda es la clase conductora del programa 114 00:10:10,370 --> 00:10:14,870 y la clase Academia es de la que vamos a ir instanciando academias 115 00:10:14,870 --> 00:10:18,909 que van a ir dando, digamos, el servicio a la clase agenda, por decirlo de alguna forma. 116 00:10:20,049 --> 00:10:23,809 Y la clase academia, bueno, pues tiene aquí unos cuantos atributos que se nos ha ocurrido poner. 117 00:10:24,210 --> 00:10:32,330 El nombre, podemos aplicarle si se trata de una agencia de música, inglés o baile a través del constructor. 118 00:10:34,720 --> 00:10:36,279 Probablemente lo diga por ahí en el enunciado. 119 00:10:37,340 --> 00:10:43,620 Dos atributos que sean el número de reservas que hay en la sesión 1 y la sesión 2. 120 00:10:43,620 --> 00:11:13,600 Fijaros que estos dos atributos existirán para cada una de las instancias de academia, con lo cual podrá valer 1 o 2 y es un máximo de 2 porque así lo indica el enunciado por aquí, que en cada una de ellas habrá dos alumnos por sesión como máximo y ese es el motivo por el que creamos aquí una constante con valor 2 del número de alumnos que puede haber en cada una de las sesiones. 121 00:11:13,620 --> 00:11:17,240 de cada una de las academias 122 00:11:17,240 --> 00:11:20,220 dice que tendrá un método constructor 123 00:11:20,220 --> 00:11:21,419 que recibe un string 124 00:11:21,419 --> 00:11:24,120 en el cual indicamos el tipo de actividad 125 00:11:24,120 --> 00:11:27,320 y este tipo de actividad se terminará guardando 126 00:11:27,320 --> 00:11:29,480 en el atributo nombre 127 00:11:29,480 --> 00:11:32,320 comprobar disponibilidad 128 00:11:32,320 --> 00:11:34,340 en una determinada sesión 129 00:11:34,340 --> 00:11:37,080 para ver si esa academia en particular 130 00:11:37,080 --> 00:11:38,159 tiene disponibilidad 131 00:11:38,159 --> 00:11:40,720 o ya se han ocupado las dos plazas 132 00:11:40,720 --> 00:11:42,960 el método reservar plaza 133 00:11:42,960 --> 00:11:46,840 este método reservar plaza es en principio el que llamaremos desde 134 00:11:46,840 --> 00:11:50,679 la clase, desde métodos de la clase agenda 135 00:11:50,679 --> 00:11:56,929 y el método infosesión que para una sesión devuelve 136 00:11:56,929 --> 00:12:00,970 un string con la información de la sesión 137 00:12:00,970 --> 00:12:04,090 por la que se está preguntando para esa academia en particular 138 00:12:04,090 --> 00:12:08,669 y la idea es que este método sea el que vayamos llamando para 139 00:12:08,669 --> 00:12:12,950 ambas sesiones de cada una de las tres academias desde el método 140 00:12:12,950 --> 00:12:21,210 mostrar agenda de la clase agenda y luego bueno pues dice aquí pues desarrolla los getters y los 141 00:12:21,210 --> 00:12:27,179 setters que sean necesarios. La secuencia del programa dice se solicita el nombre de los alumnos 142 00:12:27,179 --> 00:12:32,399 por teclado, se irán introduciendo nombres hasta un número hasta un máximo de cuatro como decía por 143 00:12:32,399 --> 00:12:44,720 aquí arriba o hasta que se meta a fin por si antes de llegar a cuatro, si llegamos a cuatro ya concluye 144 00:12:44,720 --> 00:12:51,799 la entrada de datos verdad para reservar horas de la en las academias y si antes de llegar a 145 00:12:51,799 --> 00:12:58,940 4 metemos fin pues terminamos el de igual forma de introducir los reservas dice cada uno de ellos se 146 00:12:58,940 --> 00:13:04,799 le pregunta por teclado a qué actividad quiere apuntarse y en qué sesión si hay plazas disponibles 147 00:13:04,799 --> 00:13:12,470 fijaros esto lo preguntaremos a través de teclado pues clase escáner estaremos trabajando con un 148 00:13:12,470 --> 00:13:42,450 un bucle por aquí hasta que hayamos metido hasta cuatro alumnos o introduzcamos fin y para cada uno de ellos dentro del bucle le pediremos como decimos su nombre, le indicaremos a qué actividad y en qué sesión quiere apuntarse y haremos una llamada al método reservar plaza que lo tenemos disponible para la academia a la que se quiera apuntar y en la sesión a la que se quiera apuntar. 149 00:13:42,470 --> 00:14:09,110 Este reservar plaza tendrá que devolver un verdadero o falso si la plaza ha sido reservada y para ello internamente tendrá que mirar a ver si hay disponibilidad y de haberla, coger y bloquear una de las plazas para quien lo está solicitando y devolver una plaza reservada para que desde el main también, desde la clase academia, sea capaz de notificarlo por pantalla. 150 00:14:09,110 --> 00:14:33,309 Y luego después de hacer todo el recorrido para cada uno de ellos, la idea es mostrar el resumen llamando al método mostrarAgenda que hemos identificado aquí en la clase agenda y este hemos dicho que iba a recoger su información a base de llamadas al método infosesión de cada una de las academias. 151 00:14:33,309 --> 00:14:51,450 Cuando vayamos haciendo el código, fijaros que en la clase agenda lo que vamos a hacer va a ser llamadas a métodos que identifican muy bien las funcionalidades de lo que queremos. 152 00:14:51,450 --> 00:14:56,750 que va a ser reservar plaza y mostrar agenda. 153 00:14:58,549 --> 00:15:02,549 O sea, desde mostrar agenda vamos a llamar a infosesión 154 00:15:02,549 --> 00:15:07,549 y cuando lo vayamos haciendo vamos a llamar a reservar plaza, 155 00:15:07,629 --> 00:15:10,830 ¿se llama? A ver, como hemos dicho, a reservar plaza. 156 00:15:11,870 --> 00:15:14,730 Y desde la clase agenda, que puede estar siendo desarrollada 157 00:15:14,730 --> 00:15:17,850 por un equipo de trabajo diferente, lo único que conoceremos 158 00:15:17,850 --> 00:15:23,850 o que deberíamos conocer de la clase academia es su interfaz. 159 00:15:24,649 --> 00:15:30,289 El interfaz es el conjunto de métodos mediante los cuales podemos comunicar 160 00:15:30,289 --> 00:15:33,269 con objetos de la clase academia. 161 00:15:34,610 --> 00:15:39,149 Entonces, a través de esos métodos, nosotros pedimos que vayan pasando ciertas cosas. 162 00:15:39,309 --> 00:15:40,649 Por ejemplo, resérvame una plaza. 163 00:15:42,490 --> 00:15:46,049 Fijaros que desde quien esté haciendo el desarrollo de la clase agenda, 164 00:15:46,049 --> 00:16:00,690 Si no estamos haciendo en conjunto una sola persona o un solo grupo de trabajo todo el ejercicio, no tendríamos por qué saber cómo se las arregla para ver si hay plazas disponibles y para hacer una reserva. 165 00:16:00,889 --> 00:16:15,009 Simplemente tendremos a través de la interfaz que llamando a este método, indicándole la sesión y un nombre de quien quiera hacer la reserva, esperamos que se haga la reserva porque en la otra clase estará programado. 166 00:16:16,049 --> 00:16:23,610 Esto es una de las características propias de la programación orientada a objetos, que es la capacidad de encapsulación y de ocultación del código. 167 00:16:24,509 --> 00:16:35,330 ¿Qué superventaja tiene esto? Pues mirad, pensad que las academias pudieran funcionar para hacer las reservas en base a ver información en unos ficheros. 168 00:16:36,009 --> 00:16:45,769 Pues vale, nosotros desde la clase agenda llamaríamos a reservar plaza y sin saber desde la clase agenda cómo se está consultando si hay plazas libres, 169 00:16:45,769 --> 00:16:51,129 obtendríamos un resultado Boolean diciendo si ha hecho la reserva o no se ha hecho. 170 00:16:52,750 --> 00:17:00,250 Pensad que en la clase academia de repente hay un cambio de tecnología, se instala una base de datos 171 00:17:00,250 --> 00:17:06,730 y ya no hacemos la lectura a través de unos ficheros, sino que necesitamos hacer unos accesos a la base de datos. 172 00:17:07,490 --> 00:17:12,009 Lógicamente reservar plaza y comprobar disponibilidad tendríamos que modificarlo 173 00:17:12,009 --> 00:17:34,930 porque ahora tienen que acceder a una base de datos en lugar de un fichero, pero al tener encasulado el código y ocultado para las otras clases, dando información solamente de nuestra interfaz de acceso, como esta no cambia, seguimos llamando a reservar plaza a través de la, indicando la sesión y el nombre desde el método main de agenda, 174 00:17:34,930 --> 00:17:39,829 el resto de clases no se verían afectadas, es decir, es un cambio 175 00:17:39,829 --> 00:17:41,910 que quedaría encerrado 176 00:17:41,910 --> 00:17:47,490 justo en el código de la clase Academia 177 00:17:47,490 --> 00:17:51,970 es un proyecto gigantesco que necesita hacer accesos a la Academia para las Reservas 178 00:17:51,970 --> 00:17:54,309 desde muchos puntos diferentes 179 00:17:54,309 --> 00:17:59,150 el nuevo mantenimiento, en este caso perfectivo, para modificar 180 00:17:59,150 --> 00:18:03,390 el acceso a las Reservas, que antes era un fichero y ahora ha pasado a ser 181 00:18:03,390 --> 00:18:08,349 un acceso a una base de datos, se trabaja únicamente y exclusivamente en una parcela muy clara del código. 182 00:18:08,829 --> 00:18:16,089 Eso, claro, pues es una ventaja. Imaginaos que esto no fuese así y que el cambio de fichero a base de datos 183 00:18:16,089 --> 00:18:24,730 implicase que, de forma desparramada por ahí por todo el código, tuviéramos que estar haciendo pequeñas actualizaciones 184 00:18:24,730 --> 00:18:30,309 en muchos sitios, que a lo mejor ese cambio luego pudiese tener implicaciones en algunos otros. 185 00:18:30,309 --> 00:18:59,690 Pues claro, se complicaría mucho el análisis para ver dónde hay que tocar, la actualización, la necesidad de volver a probar muchos módulos de código en lugar de única y exclusivamente la clase academia y sería muchísimo más complicado que si trabajamos con esta característica de la aprobación orientada a objetos que es la encasulación y el ocultamiento de la información mostrando cómo interactúo yo con el resto de programas 186 00:18:59,690 --> 00:19:02,769 a través de lo que es el interfaz, que viene a ser aquellos métodos 187 00:19:02,769 --> 00:19:07,390 y aquellos atributos que no tienen propiedad privada, 188 00:19:07,490 --> 00:19:11,650 private, y que son accesibles desde otros puntos del código. 189 00:19:13,490 --> 00:19:15,089 Bueno, dicho esto y contado esto, 190 00:19:16,190 --> 00:19:19,230 vamos a programarlo y vamos a estar haciendo hincapié 191 00:19:19,230 --> 00:19:27,880 incluso en esto que os cuento. Vamos a arrancar Eclipse. 192 00:19:41,200 --> 00:19:43,980 Dudas que os puedan surgir me vais diciendo, 193 00:19:43,980 --> 00:19:59,339 según estemos trabajando, se toma su tiempo 194 00:19:59,339 --> 00:20:07,930 vamos a cerrar aquí estos ficheros de practicar de otros días 195 00:20:07,930 --> 00:20:13,980 entiendo que no me habéis dicho nada, los vídeos podéis acceder bien, ¿verdad? 196 00:20:14,039 --> 00:20:27,890 de las tutorías que vamos grabando, pues nada, vamos a poner aquí tarea 5 197 00:20:27,890 --> 00:20:52,019 creamos la clase agenda 198 00:20:52,019 --> 00:21:07,670 y la clase academia, la agenda es la que tiene 199 00:21:07,670 --> 00:21:11,450 el inicio del programa, así vamos a crear el método main 200 00:21:11,450 --> 00:21:48,880 Vale, como atributos, cosas que pueden caracterizar una agenda, aquí recordando un poco los ámbitos de las variables, aquí podríamos definir todos los métodos que tengan, todas las variables que tengan que ver con cualquier método incluso y como estarían definidas en este ámbito las tendríamos disponibles. 201 00:21:48,880 --> 00:22:08,200 Pero la idea de los atributos de clase es definir aquellos atributos, aquellas características que tienen que ver justo con la clase que estamos definiendo. En este caso, ¿qué cosas podría definir una agenda en el contexto de nuestro programa? 202 00:22:08,200 --> 00:22:13,299 pues bueno, las academias con las que podemos ir formando las reservas. 203 00:22:13,500 --> 00:22:17,440 Por ejemplo, una variable que en un momento dado, una variable de tipo entero, inti, 204 00:22:17,599 --> 00:22:23,900 que luego vamos a ir utilizando para recorrer un bucle, pues esta variable no caracterizaría una agenda. 205 00:22:24,640 --> 00:22:29,180 Si la ponemos aquí y la utilizamos en el main, nos va a compilar y el programa va a funcionar, 206 00:22:29,519 --> 00:22:32,019 pero no tendría sentido a nivel de diseño. 207 00:22:32,019 --> 00:22:43,740 entonces por nada, definimos aquí los 208 00:22:43,740 --> 00:22:47,660 los objetos de la clase academia 209 00:22:47,660 --> 00:22:54,430 podemos poner academia, mi música vamos a poner 210 00:22:54,430 --> 00:22:55,869 la academia de música 211 00:22:55,869 --> 00:23:07,019 podemos definir un objeto de la clase academia 212 00:23:07,019 --> 00:23:08,920 para la academia de música 213 00:23:08,920 --> 00:23:13,940 para la segunda de las academias había una de inglés 214 00:23:13,940 --> 00:23:28,029 verdad pues inglés y para la de baile recordad que bueno ahora me compila directamente fijaros 215 00:23:28,029 --> 00:23:33,789 que en la clase academia no tengo nada definido aún así el constructor por defecto siempre está 216 00:23:33,789 --> 00:23:38,829 disponible para bueno pues para permitirnos aunque no definamos ningún constructor en la 217 00:23:38,829 --> 00:23:44,829 clase de la que instancia mos objetos pues para que para que aquello compile en el momento que 218 00:23:44,829 --> 00:23:50,029 definamos cualquier constructor tanto el que no tiene parámetros como cualquier otro el de por 219 00:23:50,029 --> 00:23:55,250 defecto dejaría de funcionar. Entonces sí que es cierto que hemos dicho que una de las cosas que 220 00:23:55,250 --> 00:24:02,750 vamos a tener en las academias va a ser el atributo de nombre. Si aquí en la clase academia 221 00:24:02,750 --> 00:24:13,079 definimos un string ese nombre, pues este nombre habíamos propuesto en el enunciado que se cargase 222 00:24:13,079 --> 00:24:19,839 a través del constructor. Vamos a definir el constructor de momento por aquí. Fijaros, los 223 00:24:19,839 --> 00:24:23,720 atributos, le podemos indicar, aparte del tipo, 224 00:24:24,619 --> 00:24:27,660 le podemos indicar el alcance que tenga. Este, recordad, podría ser 225 00:24:27,660 --> 00:24:30,079 private, protective, 226 00:24:32,279 --> 00:24:35,240 package, para que tuviera acceso a todo el paquete si no decimos nada, 227 00:24:35,240 --> 00:24:39,019 o public, para que esté accesible desde cualquier sitio. 228 00:24:40,220 --> 00:24:43,619 Lo ideal es siempre restringir 229 00:24:43,619 --> 00:24:47,160 al máximo el acceso, que dé el servicio que se 230 00:24:47,160 --> 00:24:51,220 precisa de los atributos y los métodos al programa, pero bueno, 231 00:24:51,299 --> 00:24:55,119 ¿para qué vamos a dejar, no sé, si no tenemos necesidad, para qué 232 00:24:55,119 --> 00:24:59,119 vamos a dejar especialmente abierto un atributo para que actualizaciones 233 00:24:59,660 --> 00:25:03,140 en el código pudieran llegar a hacer cosas imprevisibles en nuestros atributos? 234 00:25:04,299 --> 00:25:06,799 Pues mira, vamos a ponerle de momento aquí un private 235 00:25:06,799 --> 00:25:11,099 y vamos a decir que sea privado, solamente tenga acceso desde la propia clase 236 00:25:11,099 --> 00:25:15,440 y luego si durante el desarrollo del programa necesitamos desde fuera de la clase 237 00:25:15,440 --> 00:25:19,240 acceder a este, pues creamos un getter y un setter para tener controlado 238 00:25:19,240 --> 00:25:23,980 cómo asignamos el valor y cómo lo devolvemos. 239 00:25:27,140 --> 00:25:29,599 La asignación, bueno, la podríamos hacer a través de un setter 240 00:25:29,599 --> 00:25:34,019 o como lo vamos a hacer a través del constructor, pues en principio 241 00:25:34,019 --> 00:25:37,859 no vamos a definir el setter, entonces diríamos que definimos 242 00:25:37,859 --> 00:25:42,119 un método constructor, recordad, los métodos constructores no devuelven 243 00:25:42,119 --> 00:25:45,200 nada, pero tampoco se lo indicamos aquí. 244 00:25:45,200 --> 00:25:49,319 el nombre de 245 00:25:49,319 --> 00:25:54,460 el convenio para el nombre de los métodos 246 00:25:54,460 --> 00:25:58,599 siempre es que empiecen con minúscula y de las clases que empiecen con mayúscula 247 00:25:58,599 --> 00:26:02,400 con la excepción de los constructores que al coincidir el nombre 248 00:26:02,400 --> 00:26:06,299 de la clase y del método pues no puede ser a la vez mayúscula y minúscula 249 00:26:06,299 --> 00:26:09,759 y se mantiene el criterio de la clase 250 00:26:09,759 --> 00:26:13,660 y este método en particular, bueno pues lo empezamos con una mayúscula 251 00:26:13,660 --> 00:26:21,539 con el mismo nombre que la clase y justo me interesa el método es que dentro de la sobrecarga 252 00:26:21,539 --> 00:26:33,559 recibe un nombre. Entonces decimos que la variable de clase ese nombre queremos que tenga el valor 253 00:26:33,559 --> 00:26:43,319 del nombre. Los constructores en línea general son aquellos métodos que utilizamos para inicializar 254 00:26:43,319 --> 00:26:48,920 los objetos cuando van a empezar a funcionar, a formar parte del programa. Fijaros que la llamada 255 00:26:48,920 --> 00:26:54,680 los constructores siempre aparecen después del new que es el que nos hace la reserva necesarias 256 00:26:54,680 --> 00:27:01,400 en memoria ram y ha sucedido que antes me compilaba porque podíamos utilizar el constructor 257 00:27:01,400 --> 00:27:06,859 por defecto pero en el momento en el que construimos un definimos un constructor dentro 258 00:27:06,859 --> 00:27:13,619 de la clase deja de tener ya sentido el constructor por defecto y ya no funciona ese por defecto si 259 00:27:13,619 --> 00:27:18,640 necesitamos un constructor que no reciba parámetros tendríamos que definirlo en el momento que ya 260 00:27:18,640 --> 00:27:22,059 Existe otro sobrecargándolo dentro de la clase academia. 261 00:27:23,119 --> 00:27:26,720 En principio no es necesario, los tres objetos los vamos a crear pasándole el nombre, 262 00:27:26,940 --> 00:27:29,000 pues este constructor nos resulta suficiente. 263 00:27:31,250 --> 00:27:36,329 Entonces vamos a crear aquí, vamos a decirle que este es el de música, 264 00:27:37,289 --> 00:27:40,230 este es el de inglés y este es el de baile. 265 00:27:41,789 --> 00:27:46,549 Bueno, aprovechando a pasarle al constructor para que el nombre de los objetos 266 00:27:46,549 --> 00:27:50,670 lo sepamos asociar justo a la actividad que tienen 267 00:27:50,670 --> 00:27:54,029 y que se guarde en el nombre de la clase. 268 00:28:00,619 --> 00:28:04,660 Decíamos, estos objetos, los diferentes 269 00:28:04,660 --> 00:28:07,680 objetos pueden ser estáticos. 270 00:28:08,539 --> 00:28:12,200 Pues mira, si tuviéramos varias academias de música y de baile 271 00:28:12,200 --> 00:28:18,210 aquí, pues resulta que si definimos 272 00:28:18,210 --> 00:28:21,970 las cosas o si las utilizamos luego por ahí, si las 273 00:28:21,970 --> 00:28:26,789 definimos de forma estática pues bueno pues podríamos tener ciertos problemas pero como 274 00:28:26,789 --> 00:28:32,029 solamente hay uno no va a dar igual definirlo estático o no estático si lo definimos estático 275 00:28:32,029 --> 00:28:40,109 es cierto que luego podríamos acceder a mi música poniendo agenda punto mi música y si no pues lo 276 00:28:40,109 --> 00:28:49,049 ponemos así lo vamos a mantener así si os parece en el método main vamos a ir interactuando a 277 00:28:49,049 --> 00:29:00,539 a través del teclado. Pues mira, vamos a definir un objeto de la clase Scanner, ScannerMyScan, igual a New, Scanner, SystemIn. 278 00:29:02,940 --> 00:29:09,819 Fijaros que, bueno, de partida no me compila. ¿Por qué? Porque no tenemos, pertenece a una librería que está fuera del proyecto 279 00:29:09,819 --> 00:29:13,859 y no la tenemos importada, aquí nos lo ofrece Eclipse 280 00:29:13,859 --> 00:29:21,240 y decimos, si hacemos un system.out.println 281 00:29:21,240 --> 00:29:27,079 y imprimimos algo, aquí tampoco hemos importado el system.out 282 00:29:27,079 --> 00:29:29,900 y en cambio, no se me quejen, me compila 283 00:29:29,900 --> 00:29:31,640 ¿por qué es este motivo? 284 00:29:31,920 --> 00:29:34,460 pues en algún momento lo comentábamos 285 00:29:34,460 --> 00:29:37,799 todo lo que está definido en las librerías de Java 286 00:29:37,799 --> 00:29:46,859 java lang en esa colgando esa estructura es se entiende que son funciones que son tan comunes 287 00:29:46,859 --> 00:29:52,319 a todos los programas que directamente se importan de forma automática sin tener que ponerlo 288 00:29:52,319 --> 00:29:57,119 explícitamente en todos los proyectos pero lo que no pertenezca a java lang si quieres utilizarlo 289 00:29:57,119 --> 00:30:01,779 pues hay que importarlo tanto si es de un paquete en nuestro proyecto diferente al paquete en el que 290 00:30:01,779 --> 00:30:06,640 estamos como si es desde librerías de java entonces para que no funcione 291 00:30:06,640 --> 00:30:15,769 escáner cogemos y le metemos el java útil y ahí lo tenemos ya como vamos a ir 292 00:30:15,769 --> 00:30:20,930 leyendo información de aquí pues podemos definir una variable 293 00:30:20,930 --> 00:30:29,859 lectura para ir trabajando con ella fijaros recordad que decíamos que íbamos 294 00:30:29,859 --> 00:30:35,220 a ir cogiendo información de diferentes alumnos para que se apunten a las 295 00:30:35,220 --> 00:30:41,480 academias hasta un máximo de 4 o hasta que introduzcamos el texto fin, necesitaremos 296 00:30:41,480 --> 00:30:49,859 llevar un contador del número de alumnos que hasta ahora están matriculados, podríamos 297 00:30:49,859 --> 00:30:56,420 definirlo como 0 o como 1, según definamos aquí un 0 o un 1, según interpretemos que 298 00:30:56,420 --> 00:31:01,880 esta variable recoge el siguiente alumno que se va a apuntar o los que hay apuntados hasta 299 00:31:01,880 --> 00:31:06,559 el momento, pues la podríamos inicializar a 0 o a 1 y en consecuencia de cómo lo hagamos 300 00:31:06,559 --> 00:31:09,599 aquí tendremos que ir trabajando luego en los 301 00:31:09,599 --> 00:31:12,099 bucles. Vamos a ponerlo por ejemplo a cero 302 00:31:12,099 --> 00:31:17,640 inicialmente y bueno 303 00:31:17,640 --> 00:31:20,660 pues ahora luego vamos metiendo más variables según nos vaya 304 00:31:20,660 --> 00:31:25,309 demandando el programa. Entonces vamos a pedir 305 00:31:25,309 --> 00:31:28,069 para trabajar con escáner, lógicamente siempre 306 00:31:28,069 --> 00:31:30,950 habrá que ir poniendo system out en pantalla 307 00:31:30,950 --> 00:31:34,029 para que el usuario entienda lo que 308 00:31:34,029 --> 00:31:36,950 tiene que ir introduciendo. Entonces vamos a decir 309 00:31:36,950 --> 00:31:52,529 pedir al alumno información de la actividad a la que se quiere apuntar. 310 00:31:52,529 --> 00:31:56,230 Bueno, pues ponemos aquí un System. 311 00:32:03,799 --> 00:32:09,000 Podemos adornar un poquito el texto, podemos meter ahí un tabulador quizás, 312 00:32:09,200 --> 00:32:10,359 o un par de tabuladores. 313 00:32:11,480 --> 00:32:16,339 Ponemos una primera línea así que, para que nos saque aquí unos asteriscos. 314 00:32:18,789 --> 00:32:26,950 ¿Alguno de vosotros habéis metido códigos o alguno de vosotros que hacía que alguna parte se pusiera en negrita y todo esto? 315 00:32:26,950 --> 00:32:28,809 Bueno, pues muy chulo, la verdad, os ha quedado. 316 00:32:30,930 --> 00:32:46,170 Entonces, vamos a poner aquí, reservando, podemos poner 1, 2, reservando actividades para el próximo fin de sábado. 317 00:33:03,740 --> 00:33:06,720 Metemos un par de tabuladores para que quede de la misma forma. 318 00:33:07,099 --> 00:33:13,759 indica tu nombre o pulsa fin para terminar. 319 00:33:16,380 --> 00:33:19,740 Si ponemos en el System of Print el N, nos va a saltar a la siguiente línea 320 00:33:19,740 --> 00:33:23,119 para que introduzcamos por teclado el nombre o fin. 321 00:33:23,240 --> 00:33:27,680 Vamos a poner un System of Print, dejamos aquí un espacio y así se me queda la misma línea. 322 00:33:31,369 --> 00:33:34,269 Y aquí vuelvo a pegar esto y así ya me queda. 323 00:33:38,680 --> 00:33:43,119 Indica tu nombre, aquí podemos poner incluso alumno. 324 00:33:43,119 --> 00:33:55,910 para ir secuenciando el alumno con el que estamos trabajando 325 00:33:55,910 --> 00:34:00,049 podemos decir alumno y utilizamos esta variable, esta variable vale 0 326 00:34:00,049 --> 00:34:03,069 podemos poner aquí en el mensaje 327 00:34:03,069 --> 00:34:08,190 entre paréntesis decimos la variable alumno 328 00:34:08,190 --> 00:34:17,699 ahora lo repasamos, dice aquí alumno 329 00:34:17,699 --> 00:34:21,880 pues al principio dirá esto vale 0, pues dirá alumno 330 00:34:21,880 --> 00:34:25,699 1, indica tu nombre o pulsa fin para terminar y como este 331 00:34:25,699 --> 00:34:29,860 mensaje lo iremos sacando cada vez que se meta información de uno de los alumnos 332 00:34:29,860 --> 00:34:33,699 luego lo podemos meter en un método incluso y hacer una llamada al método 333 00:34:33,699 --> 00:34:37,940 esto irá incrementando cada nuevo alumno que se vaya conectando 334 00:34:37,940 --> 00:34:42,239 pues entonces cuando valga 1 nos dirá al 1 2 y después de incrementar 335 00:34:42,239 --> 00:34:45,800 otra vez irá al 1 3, de esta forma vamos gestionándolo 336 00:34:45,800 --> 00:34:53,190 bueno pues lo ponemos así que nos lo muestre y ahora 337 00:34:53,190 --> 00:34:57,550 tendremos que estar recogiendo información 338 00:34:57,550 --> 00:35:02,429 hasta que se introduzca la información de cuatro alumnos o se meta fin. 339 00:35:02,429 --> 00:35:16,880 Pues bueno, pues podemos hacer un while aquí mientras el número de alumnos sea menor de cuatro, ¿no? 340 00:35:17,679 --> 00:35:22,599 Es decir, entrará por aquí cuando sea cero, cuando sea uno, cuando sea dos y cuando sea tres. 341 00:35:26,199 --> 00:35:30,360 Y tenemos que poner doble condición porque nos tendremos que salir cuando sea fin. 342 00:35:30,360 --> 00:35:56,480 Y, bueno, aquí tendremos que utilizar la variable donde hayamos leído la información. Vamos a poner ese lectura. Recordad que string es un tipo de datos un poquito especial. Habíamos hablado de los tipos de datos referenciados y primitivos. 343 00:35:56,480 --> 00:36:01,360 los enteros, los datos numéricos, los Boolean 344 00:36:01,360 --> 00:36:04,840 son tipos de datos primitivos, tienen 345 00:36:04,840 --> 00:36:09,360 características muy particulares, que es que no es necesario hacer un new cuando definimos 346 00:36:09,360 --> 00:36:12,599 una de sus variables, digamos que se hace de forma automática 347 00:36:12,599 --> 00:36:17,320 no disponen de métodos para trabajar con ellos, como por ejemplo 348 00:36:17,320 --> 00:36:21,460 la clase Scanner que tiene el NSynth, si queremos trabajar con esos tipos de datos 349 00:36:21,460 --> 00:36:25,340 tenemos que utilizar las clases Wrapper, os acordáis de las clases envoltorios que 350 00:36:25,340 --> 00:36:28,840 cada una asociada con uno de los tipos de datos primitivos 351 00:36:28,840 --> 00:36:31,219 de Java, pues la clase string 352 00:36:31,219 --> 00:36:34,440 está un poquito a medias entre uno y otro. En realidad 353 00:36:34,440 --> 00:36:37,440 es un tipo de datos referenciado, pero 354 00:36:37,440 --> 00:36:40,519 luego tiene bastantes características que se parecen a las 355 00:36:40,519 --> 00:36:43,719 de los primitivos. Y una de las cosas 356 00:36:43,719 --> 00:36:46,300 que tienen los primitivos es que podemos comparar dos números 357 00:36:46,300 --> 00:36:49,360 con igual igual o dos variables boolean 358 00:36:49,360 --> 00:36:51,800 con igual igual, pero en cambio 359 00:36:51,800 --> 00:36:55,739 la clase string por la característica de ser referenciada 360 00:36:55,739 --> 00:36:59,619 no lo podemos hacer así. Entonces para hacer comparaciones podemos utilizar 361 00:36:59,619 --> 00:37:03,579 un montón de ellas que tienen, que vemos algunas o muchas 362 00:37:03,579 --> 00:37:07,460 de ellas ahora en el tema que tenemos abierto, pues podemos utilizar el método 363 00:37:07,460 --> 00:37:11,260 makeEquals que nos devuelve un boolean si son iguales dos cadenas 364 00:37:11,260 --> 00:37:15,539 o el compareTo que nos devuelve si una es mayor que otra 365 00:37:15,539 --> 00:37:19,460 o es menor que otra o si es igual, en ese caso devolvería un número 366 00:37:19,460 --> 00:37:23,239 que es un 0. Aquí como no queremos saber 367 00:37:23,239 --> 00:37:27,420 la ordenación, nos vale con diferenciar si es igual o no, equals 368 00:37:27,420 --> 00:37:31,420 nos resulta suficiente. Entonces decimos 369 00:37:31,420 --> 00:37:36,579 que si el número es menor que 4 y 370 00:37:36,579 --> 00:37:41,099 necesitamos comparar esto pero que no sea 371 00:37:41,099 --> 00:37:45,300 fin, esto nos dice si es fin nos devuelve un true, pues vamos a darle la vuelta 372 00:37:45,300 --> 00:37:49,139 a false. Si sean esas dos características 373 00:37:49,139 --> 00:37:53,409 pues vamos a ver aquí que es lo que tenemos que hacer 374 00:37:53,409 --> 00:37:55,269 que será intentar reservar una plaza 375 00:37:55,269 --> 00:38:00,820 a ver, no sé, me sobra 376 00:38:00,820 --> 00:38:02,199 uno, paréntesis 377 00:38:02,199 --> 00:38:07,860 y aquí otro, no 378 00:38:07,860 --> 00:38:18,130 vale, bueno, no se me están quejando los paréntesis 379 00:38:18,130 --> 00:38:20,030 se me está quejando de que 380 00:38:20,030 --> 00:38:21,789 esa lectura está sin inicializar 381 00:38:21,789 --> 00:38:22,829 vamos a poner aquí 382 00:38:22,829 --> 00:38:26,230 cuando llega esa comparación, vamos a ponerlo así 383 00:38:26,230 --> 00:38:27,369 de momento para que me compile 384 00:38:27,369 --> 00:38:30,269 esa lectura me interesa que tenga 385 00:38:30,269 --> 00:38:32,230 en este momento aquí o un nombre 386 00:38:32,230 --> 00:38:34,489 o fin, y aquí ya lo acabo de pedir 387 00:38:34,489 --> 00:38:59,630 Vamos a capturarlo. Vamos a decir que esa lectura sea igual a mi scan. Hacemos un next line. Recibo nombre de alumno o fin. Una de dos. 388 00:39:05,239 --> 00:39:11,400 Bueno, si hemos entrado aquí, quiere decir que estamos intentando recoger, está un alumno intentando apuntarse. 389 00:39:11,400 --> 00:39:16,460 Lo primero que necesitaremos será conocer a cuál de las tres actividades quiera apuntarse. 390 00:39:17,659 --> 00:39:36,739 Siguiendo un poco esta estructura, podemos separar otra línea aquí, hacer un barra N y decimos indica la actividad. 391 00:39:39,500 --> 00:39:45,559 Si lo ponemos con print lo dejamos en la misma línea en la que estamos. 392 00:39:45,559 --> 00:39:55,719 las actividades puede ser, se lo podríamos indicar también por teclado 393 00:39:55,719 --> 00:39:59,179 que sea música, baile o 394 00:39:59,179 --> 00:40:05,659 inglés. Aquí podríamos validar que la actividad es 395 00:40:05,659 --> 00:40:15,900 una de esas tres, bueno, después lo hacemos, si nos da tiempo 396 00:40:15,900 --> 00:40:19,820 antes de acabar la clase. De momento vamos a 397 00:40:19,820 --> 00:40:23,780 suponer que se mete bien el nombre de la actividad 398 00:40:23,780 --> 00:40:27,860 y bueno, pero esta actividad la tenemos que cargar 399 00:40:27,860 --> 00:40:31,059 en algún sitio, pues entonces podemos coger y definir aquí una variable 400 00:40:31,059 --> 00:40:34,860 fijaros, bueno, os cuento otra cosa, S, actividad 401 00:40:34,860 --> 00:40:41,760 el reservar memoria RAM para una variable única y exclusivamente, bueno, pues 402 00:40:41,760 --> 00:40:45,940 no supone mucho al ordenador, pero bueno, si queremos ser 403 00:40:45,940 --> 00:40:49,880 estrictos e irnos a la teoría, hay diferencias entre definir 404 00:40:49,880 --> 00:40:54,000 esta variable aquí, donde la tenemos ahora mismo, o definirla 405 00:40:54,000 --> 00:40:59,170 aquí, de la misma forma que decíamos 406 00:40:59,170 --> 00:41:06,150 O sea, en el programa antes, si mi scan yo lo defino aquí, me va a compilar y me va a ir bien porque está dentro del ámbito del main. 407 00:41:06,590 --> 00:41:09,610 Pero mi scan es algo que caracterice las agendas? No. 408 00:41:09,829 --> 00:41:13,590 Pues entonces vamos a definirla en el método main, que es una variable auxiliar a este método. 409 00:41:14,690 --> 00:41:23,510 Igual que definir escáner aquí o aquí tiene sus matices, definir string es actividad aquí o aquí, pues también lo tiene. 410 00:41:23,510 --> 00:41:31,840 mira, si la definimos aquí, esta variable 411 00:41:31,840 --> 00:41:34,179 lógicamente va a estar disponible aquí 412 00:41:34,179 --> 00:41:39,920 porque es una variable que hemos puesto dentro 413 00:41:39,920 --> 00:41:43,900 del main, pero molestaremos al sistema operativo 414 00:41:43,900 --> 00:41:47,940 en cuanto a rendimiento, probablemente sea un poquito mejor definirla aquí porque molestaremos 415 00:41:47,940 --> 00:41:51,719 al sistema operativo para hacer una única reserva 416 00:41:51,719 --> 00:41:55,059 bueno, con la clase string tendría sus matices, en la clase int 417 00:41:55,059 --> 00:41:59,619 para hacer una única reserva. Si esta variable la defines aquí 418 00:41:59,619 --> 00:42:03,960 si la defines dentro del while, cada vez estaríamos 419 00:42:03,960 --> 00:42:07,619 pidiendo al sistema operativo, oye, hazme una reserva nueva. ¿Por qué? Porque se va 420 00:42:07,619 --> 00:42:11,800 fuera del ámbito del while. Probablemente definir 421 00:42:11,800 --> 00:42:15,579 las variables aquí permitirían que el programa tuviera un pelín 422 00:42:15,579 --> 00:42:19,860 mejor rendimiento que definirlas aquí. Con el matiz 423 00:42:19,860 --> 00:42:23,300 de que string justo no es el mejor ejemplo para lo que os estoy contando 424 00:42:23,300 --> 00:42:28,639 porque al tratarse de una variable un poquito especial, justo en el tema 425 00:42:28,639 --> 00:42:32,360 que estamos viendo ahora, dice que cada vez que se le asigna un valor 426 00:42:32,360 --> 00:42:35,719 hace una reserva de memoria run, con lo cual no nos libraríamos de esto 427 00:42:35,719 --> 00:42:38,340 que os estoy comentando, pero si estuviéramos hablando de una variable 428 00:42:38,340 --> 00:42:46,699 de tipo int, long o de una variable de tipo objeto de una de las clases 429 00:42:46,699 --> 00:42:49,699 que tenemos por aquí, pues se podría dar esta circunstancia. 430 00:42:49,699 --> 00:43:02,630 Vamos a definirla aquí, esa actividad, y decimos que la actividad la vamos a capturar a través de miScan.nestLine. 431 00:43:02,949 --> 00:43:08,420 Y lo siguiente que vamos a pedirle va a ser la sesión. 432 00:43:09,320 --> 00:43:17,309 Pues definimos aquí también un int y sesión y se la pedimos también. 433 00:43:29,239 --> 00:43:37,360 Vamos a poner uno o dos, luego si acaso lo vamos modificando, que va en diferentes periodos de tiempo. 434 00:43:37,360 --> 00:43:42,260 bueno pues para hacer la lectura 435 00:43:42,260 --> 00:43:46,440 hay varias alternativas 436 00:43:46,440 --> 00:43:48,219 para hacer la lectura siempre asegurándonos 437 00:43:48,219 --> 00:43:49,719 que dejamos el buffer limpio 438 00:43:49,719 --> 00:43:52,039 una de las posibilidades podría ser 439 00:43:52,039 --> 00:43:53,960 decir isession 440 00:43:53,960 --> 00:43:55,820 punto igual 441 00:43:55,820 --> 00:43:58,059 a mi scan 442 00:43:58,059 --> 00:43:59,320 punto nest 443 00:43:59,320 --> 00:44:15,309 podríamos hacer un nesint 444 00:44:15,309 --> 00:44:17,730 ya sabéis que no soy especialmente amigo yo de esto 445 00:44:17,730 --> 00:44:19,429 porque deja el enter 446 00:44:19,429 --> 00:44:21,349 en el buffer pero si que es verdad 447 00:44:21,349 --> 00:44:23,670 que luego puede limpiar el buffer haciendo un nestline 448 00:44:23,670 --> 00:44:27,809 dices, bueno, pues hago luego un next line y limpio el enter, aquí cargo el número 449 00:44:27,809 --> 00:44:31,909 y luego limpio el enter, y otra posibilidad, bueno, pues es 450 00:44:31,909 --> 00:44:35,730 hacer aquí un string, ese aus 451 00:44:35,730 --> 00:44:40,050 voy a decir una variable auxiliar por aquí, la leo 452 00:44:40,050 --> 00:44:50,960 con un next line 453 00:44:50,960 --> 00:44:56,510 y ahora hago un isesión 454 00:44:56,510 --> 00:45:00,769 que sea igual, fijaros, tengo el número 455 00:45:00,769 --> 00:45:04,269 cogido en una variable auxiliar, pero en realidad 456 00:45:04,269 --> 00:45:08,809 es un número escrito de forma alfanumérica. Entonces podemos hacer 457 00:45:08,809 --> 00:45:12,710 un integer.parseInt y aquí indicarle ese aus 458 00:45:12,710 --> 00:45:16,849 y ya me guarda la información como una 459 00:45:16,849 --> 00:45:20,829 variable de tipo int, que es lo que tenemos en mi sesión. 460 00:45:23,800 --> 00:45:26,659 Bueno, pues una vez que tenemos el dato, lo que vamos a hacer va a ser 461 00:45:26,659 --> 00:45:30,880 intentar reservar la plaza. Para la reserva de plaza 462 00:45:30,880 --> 00:45:35,139 lo que vamos a hacer va a ser llamar a un método de la clase academia 463 00:45:35,139 --> 00:45:41,630 entonces, a ver un momentito, como decía aquí 464 00:45:41,630 --> 00:45:47,730 reserva la plaza, recibe la sesión y el nombre de la persona 465 00:45:47,730 --> 00:45:52,170 que quiera hacer la plaza, y devuelve si ha sido capaz de reservarla o no 466 00:45:52,170 --> 00:45:55,690 vamos a decir aquí, vamos a hacer 467 00:45:55,690 --> 00:45:59,530 un public, vamos a definirla como 468 00:45:59,530 --> 00:46:04,090 bueno, sería necesario público, si agenda está en el mismo paquete, podríamos dejarlo así 469 00:46:04,090 --> 00:46:14,750 reserva plaza, devuelve 470 00:46:14,750 --> 00:46:21,400 boolean, recibe 471 00:46:21,400 --> 00:46:28,420 un int y sesión y un nombre, el nombre 472 00:46:28,420 --> 00:46:30,920 del alumno que quiera reservarlo, ese nombre 473 00:46:30,920 --> 00:46:45,090 Bueno, fijaros que lo que he hecho ha sido definir 474 00:46:45,090 --> 00:46:49,429 algo que no tiene un código que sea correcto en absoluto, nos falta por desarrollar toda la 475 00:46:49,429 --> 00:46:52,730 clase academia, pero de cara a agenda 476 00:46:52,730 --> 00:46:57,429 ya tenemos el interfaz de un método que recibe este nombre 477 00:46:57,429 --> 00:47:00,110 que nos va a devolver algo que va a ser un boolean 478 00:47:00,110 --> 00:47:05,829 y que recibe estos dos parámetros de método. 479 00:47:06,590 --> 00:47:10,329 Entonces, para el grupo de trabajo que podría ser totalmente independiente 480 00:47:10,329 --> 00:47:14,489 de la clase academia, gracias a la encapsulación puede seguir trabajando perfectamente. 481 00:47:14,489 --> 00:47:18,690 Y dicen los de la agenda, yo no es mi responsabilidad, yo les pido 482 00:47:18,690 --> 00:47:22,690 que reserven una plaza, si le paso estos dos 483 00:47:22,690 --> 00:47:26,489 atributos en la llamada, si me dice true, yo ya doy por hecho 484 00:47:26,489 --> 00:47:30,130 que la plaza está reservada. Si luego hay problemas de reserva 485 00:47:30,130 --> 00:47:34,389 que a los que han hecho el desarrollo de la clase academia, bueno, pues les pregunten cuál ha sido 486 00:47:34,389 --> 00:47:45,039 el motivo. Y los de la clase academia, bueno, según lo había 487 00:47:45,039 --> 00:47:48,980 pensado yo, la reserva plaza, o sea, 488 00:47:49,059 --> 00:47:53,079 lo primero que voy a hacer luego aquí va a ser comprobar a ver si hay disponibilidad de forma interna 489 00:47:53,079 --> 00:47:54,260 dentro de la clase Academia. 490 00:47:57,929 --> 00:48:05,179 Bueno, sí. 491 00:48:06,639 --> 00:48:07,039 Sí. 492 00:48:09,139 --> 00:48:11,239 Bueno, bueno, sí, bueno, 493 00:48:11,320 --> 00:48:13,420 es igual, ¿sabes? Es una cuestión 494 00:48:13,420 --> 00:48:15,219 de interpretación, a lo mejor, del enunciado. 495 00:48:15,579 --> 00:48:17,699 O sea, tú llamas, consideraste 496 00:48:17,699 --> 00:48:19,219 el método que se llama 497 00:48:19,219 --> 00:48:21,260 de la agenda, el de comprobar disponibilidad 498 00:48:21,260 --> 00:48:23,519 y en caso de disponibilidad, hacía la llamada 499 00:48:23,519 --> 00:48:25,559 a la reserva y yo, bueno, pues 500 00:48:25,559 --> 00:48:27,619 lo consideraba al revés. 501 00:48:27,800 --> 00:48:29,320 Pero vamos, que no está ni mejor 502 00:48:29,320 --> 00:48:31,420 ni peor pensado. Que se llame 503 00:48:31,420 --> 00:48:35,260 oye, resérvame una plaza internamente en la academia 504 00:48:35,260 --> 00:48:38,559 que haga la comprobación y si tiene la disponibilidad se la reserve 505 00:48:38,559 --> 00:48:40,579 y si no le diga que no ha sido capaz de reservarla. 506 00:48:42,239 --> 00:48:43,400 Pero bueno, más o menos, 507 00:48:44,960 --> 00:48:48,360 o sea, es una cuestión de criterio requisito, digamos, 508 00:48:48,500 --> 00:48:51,400 de cómo se engrana un poco la reserva en sí. 509 00:48:51,599 --> 00:48:53,519 Pero yo lo había pensado así, 510 00:48:53,960 --> 00:48:58,659 que el método del interfaz que la academia ofrece hacia afuera, 511 00:48:58,659 --> 00:49:04,960 hacia la clase agenda sea el método reserva plaza de hecho mi intención es que el de comprobar 512 00:49:04,960 --> 00:49:11,320 disponibilidad sea privado para que no haya acceso desde la agenda que haga la comprobación ahora 513 00:49:11,320 --> 00:49:15,900 aquí cuando me ponga a programar esto y en caso de que sea correcto de que no haya plazas que 514 00:49:15,900 --> 00:49:23,260 reservar devuelva reservar plaza un falso y si existe entonces ya coja y haga él para que ponga 515 00:49:23,260 --> 00:49:34,760 por aquí el código para concretar la reserva es como lo había pensado yo bueno entonces una vez 516 00:49:34,760 --> 00:49:40,219 aquí ya tengo la actividad a la que me quiero conectar tengo el nombre que lo he cogido por 517 00:49:40,219 --> 00:49:50,420 aquí también en estas tres variables tengo el nombre el nombre en esa lectura tengo el nombre 518 00:49:50,420 --> 00:50:05,260 pues mira lo voy a cambiar aquí voy a poner ese nombre en esta variable tengo el nombre aquí tengo 519 00:50:05,260 --> 00:50:11,710 la actividad y aquí la sesión. Pues aquí es donde puedo hacer la comprobación 520 00:50:11,710 --> 00:50:15,590 para llamar a unos. Entonces, como cada una de las tres 521 00:50:15,590 --> 00:50:19,590 academias tienen su reserva plaza, voy a diferenciar dentro de la agenda 522 00:50:19,590 --> 00:50:23,670 a quién quiero solicitar la reserva de la plaza, le indico la sesión 523 00:50:23,670 --> 00:50:28,480 y el nombre del alumno. Entonces digo sí. 524 00:50:29,780 --> 00:50:33,639 Esto, bueno, con cualquier estructura de condición lo podríais ver, con Swiss 525 00:50:33,639 --> 00:50:37,739 también lo podríais hacer. Entonces digo sí, la actividad que 526 00:50:37,739 --> 00:50:41,920 la he cargado aquí, esa actividad, punto 527 00:50:41,920 --> 00:50:44,920 recordad que para comparar utilizamos el equals 528 00:50:44,920 --> 00:50:57,960 si resulta que es música, si esa actividad que lo he cargado 529 00:50:57,960 --> 00:51:02,099 por aquí, recordad que no he hecho comprobación a ver si el dato 530 00:51:02,099 --> 00:51:05,840 que habíamos introducido era correcto, aquí si nos da tiempo luego hacemos 531 00:51:05,840 --> 00:51:09,320 una comprobación y si no pues nada, si es música 532 00:51:09,320 --> 00:51:13,840 pues sé que a la academia sobre la que tengo que trabajar es música, pues me voy 533 00:51:13,840 --> 00:51:37,880 al objeto de academia mi música, punto, porque no me deja aquí, me dice que lo meta aquí 534 00:51:37,880 --> 00:51:48,099 entre un tricatch o que la ponga static, claro, el método main es static, pero lo tengo aquí 535 00:51:48,099 --> 00:52:11,820 definido, vamos a ponerlo static, si no le ponemos ahí el tricatch, si es equals, no 536 00:52:11,820 --> 00:52:15,480 Equals no. A ver, se me ha ido el santo al cielo. 537 00:52:16,039 --> 00:52:22,139 Lo que hacemos es reservar, reservar plaza, ¿en qué sesión? 538 00:52:22,400 --> 00:52:25,019 Pues en iSesión, ¿con qué nombre? Con ese nombre. 539 00:52:26,139 --> 00:52:31,980 Esto me devolverá, me indicará si, me devolverá un verdadero o un falso 540 00:52:31,980 --> 00:52:35,860 en función de si aquí se ha concretado la reserva de la plaza o no. 541 00:52:37,079 --> 00:52:39,739 Entonces, para trabajar sobre eso, lo que vamos a hacer es definir aquí 542 00:52:39,739 --> 00:52:55,090 una variable boolean, boolean de reserva realizada, 543 00:52:55,090 --> 00:53:14,030 y lo mismo para las otras dos, si la actividad 544 00:53:14,030 --> 00:53:32,570 no venimos aquí a la de baile y por aquí a la de inglés 545 00:53:32,570 --> 00:53:44,360 alguien hizo algo que 546 00:53:44,360 --> 00:53:48,860 está curioso también, que es una posibilidad para hacerlo, algunos de vosotros 547 00:53:48,860 --> 00:53:52,699 que lo que hizo fue decir, mirad, voy a coger 548 00:53:52,699 --> 00:53:56,239 como aquí estoy comparando si es la de música 549 00:53:56,239 --> 00:54:00,519 y luego esta reserva o la otra, pues lo que hizo fue 550 00:54:00,519 --> 00:54:08,739 definir una academia auxiliar para la cual 551 00:54:08,739 --> 00:54:12,820 no hago un new ni nada, no apunta a ninguna posición de memoria de forma 552 00:54:12,820 --> 00:54:20,019 inicial, no me puedo evitar hacer la comparación 553 00:54:20,019 --> 00:54:34,179 es cierto, pero aquí en lugar de llamar a reserva 554 00:54:34,179 --> 00:54:37,139 plaza de uno, de otro o de otro 555 00:54:37,139 --> 00:54:41,800 lo que hizo fue decir que el academia aus 556 00:54:41,800 --> 00:54:45,559 resulta que si entra por aquí por la de música de forma 557 00:54:45,559 --> 00:54:51,199 queremos que Academia AUS apunte a donde está apuntando ya la de música, 558 00:54:51,300 --> 00:54:52,559 a la misma posición de memoria. 559 00:54:57,699 --> 00:55:01,179 Si es baile, que apunte a la que está apuntando ya la de baile. 560 00:55:02,800 --> 00:55:06,900 Y si es inglés, que apunte a la que está apuntando ya la de inglés. 561 00:55:08,300 --> 00:55:12,659 Con lo cual, AKAUS apunta en memoria RAM a la posición donde apunta 562 00:55:12,659 --> 00:55:17,840 el objeto de la Academia de Música, si hemos introducido como actividad música, 563 00:55:17,840 --> 00:55:21,900 a donde apunta baile, si hemos introducido baile o inglés, si hemos introducido inglés 564 00:55:21,900 --> 00:55:26,159 y en este caso, bueno, pues como está apuntando a la que toca 565 00:55:26,159 --> 00:55:28,380 ya sí que podemos poner aquí reserva plaza 566 00:55:28,380 --> 00:55:36,960 bueno, pondríamos esto una sola vez, bueno, valdrá una otra 567 00:55:36,960 --> 00:55:41,019 u otra, pero se me queja si no lo he inicializado 568 00:55:41,019 --> 00:55:45,179 ¿veis? entonces aquí llamaría una vez solamente a reserva plaza 569 00:55:45,179 --> 00:55:48,739 para una academia auxiliar que estaría apuntando 570 00:55:48,739 --> 00:55:52,639 de memoria RAM o bien a música o bien a baile o bien inglés. Es equivalente a un código 571 00:55:52,639 --> 00:55:56,559 u otro. Pero bueno, me llamó la atención que 572 00:55:56,559 --> 00:56:00,280 alguno de vosotros lo programaréis así y por compartirlo con el resto. 573 00:56:02,630 --> 00:56:05,250 Me lo cargo esto porque es lo mismo un caso que otro. 574 00:56:10,019 --> 00:56:14,039 Entonces, llegados aquí, esta variable, fijaros que aquí no tenemos nada 575 00:56:14,039 --> 00:56:17,920 programado, pero el grupo de trabajo de la clase Academia 576 00:56:17,920 --> 00:56:21,880 que ha venido a trabajar hoy de la clase Agenda, pero los de Academia todavía no han llegado, 577 00:56:21,880 --> 00:56:25,760 llegar un poquito más tarde. Están a punto de acabar con su trabajo 578 00:56:25,760 --> 00:56:29,860 gracias a que tienen una definición del 579 00:56:29,860 --> 00:56:33,539 interfaz de la clase academia donde se sabe que van a llamar 580 00:56:33,539 --> 00:56:37,679 a que existe un método con el cual pueden interactuar pasándole 581 00:56:37,679 --> 00:56:41,719 la sesión y el nombre y que devuelve un boolean. ¿Cómo lo hayan programado 582 00:56:41,719 --> 00:56:45,679 los de la clase academia? A los que están haciendo el trabajo de la clase agenda les da 583 00:56:45,679 --> 00:56:51,159 un poco igual. Luego, para que funcione todo el programa, lógicamente 584 00:56:51,159 --> 00:56:55,099 habrá que hacer este desarrollo, pero digamos que conociendo 585 00:56:55,099 --> 00:56:58,579 la interfaz en la clase agenda de la clase academia 586 00:56:58,579 --> 00:57:02,639 tienen suficiente. Entonces aquí decimos sí 587 00:57:02,639 --> 00:57:08,480 la reserva ha ido correcta 588 00:57:08,480 --> 00:57:22,789 luego ya os digo que si nos da tiempo, hacemos todo más 589 00:57:22,789 --> 00:57:36,300 bonito. Me dice inicialízalo, aunque luego lo vamos a ir modificando 590 00:57:36,300 --> 00:57:40,159 por aquí. Pero sí que es verdad que es posible que llegue el código aquí en una ejecución 591 00:57:40,159 --> 00:57:43,420 si no hemos metido ni inglés, ni música, ni baile. 592 00:57:43,639 --> 00:57:45,840 Entonces, podría llegar aquí y estar sin inicializar. 593 00:57:46,619 --> 00:57:48,480 Es por lo que se queja esto. 594 00:57:49,480 --> 00:57:51,099 Entonces, aquí diría clase reservada. 595 00:57:57,570 --> 00:58:13,909 No ha sido posible reservar la clase. 596 00:58:15,849 --> 00:58:19,150 Si hemos hecho una reserva de una clase, ¿qué es lo siguiente? 597 00:58:19,449 --> 00:58:23,369 Tenemos que mirar más alumnos hasta que sean cuatro o se introduzca a fin. 598 00:58:24,349 --> 00:58:26,949 Después de hacer aquí la primera de las reservas, 599 00:58:26,949 --> 00:58:30,030 la segunda o lo que sea según la iteración del bucle que tengamos 600 00:58:30,030 --> 00:58:33,989 pues lo que tocará será sacar otra vez este mensaje 601 00:58:33,989 --> 00:58:36,929 que luego podemos quitar, definir un método 602 00:58:36,929 --> 00:58:39,769 que sea un método menú y trabajar con él 603 00:58:39,769 --> 00:58:43,210 directamente y después de sacar 604 00:58:43,210 --> 00:58:45,630 el mensaje volver a coger el nombre 605 00:58:45,630 --> 00:58:54,949 vemos el mensaje, cogemos el nombre, se termina 606 00:58:54,949 --> 00:58:57,829 el while, nos venimos aquí, habrá que 607 00:58:57,829 --> 00:59:00,389 incrementar ahora el número de alumnos que han hecho la reserva 608 00:59:00,389 --> 00:59:03,469 y volvemos a hacer la comprobación. 609 00:59:03,849 --> 00:59:06,989 ¿En qué caso podemos incrementar el número de alumnos? 610 00:59:07,130 --> 00:59:09,849 Pues bueno, según el criterio que tengamos en el enunciado, 611 00:59:10,550 --> 00:59:14,090 si es cuatro intentos de nuevos alumnos, 612 00:59:14,489 --> 00:59:16,949 pues podríamos poner aquí un y alumno más más, 613 00:59:18,389 --> 00:59:21,329 tanto si se ha hecho la reserva de la clase como si no se ha hecho, 614 00:59:21,329 --> 00:59:26,329 y si pretendemos que sean cuatro alumnos que efectivamente han conseguido reservar, 615 00:59:26,329 --> 00:59:30,349 reservar, aunque recorramos el bucle 10 veces, pues lo podríamos 616 00:59:30,349 --> 00:59:38,880 poner aquí. Vale, pues aquí terminamos el bucle, después ejecutamos 617 00:59:38,880 --> 00:59:42,500 y ahora lo que nos dice el programa es que 618 00:59:42,500 --> 00:59:46,440 antes de terminar el método main, pues mostremos la agenda. Dice que tiene que existir 619 00:59:46,440 --> 00:59:50,300 en la clase agenda un método que sea mostrar agenda. 620 00:59:50,480 --> 00:59:58,110 Entonces, ponemos aquí mostrar agenda. Bueno, no le gusta de momento 621 00:59:58,110 --> 01:00:02,329 porque no está definido, pues vamos a definirlo. Hacemos aquí 622 01:00:02,329 --> 01:00:07,090 lo podemos definir este método estático, ya que va a ser 623 01:00:07,090 --> 01:00:10,210 único para todos los objetos de la clase agenda 624 01:00:10,210 --> 01:00:15,349 y además nos ahorra tener que instanciar un objeto de la clase agenda 625 01:00:15,349 --> 01:00:18,449 cosa que sería necesaria si no la definimos static 626 01:00:18,449 --> 01:00:21,789 para que pueda ser llamado desde un sitio estático como es el main 627 01:00:21,789 --> 01:00:24,929 entonces ponemos aquí 628 01:00:24,929 --> 01:00:30,710 un public, podemos definirlo como private, void, que no devuelva nada 629 01:00:30,710 --> 01:00:31,869 static 630 01:00:31,869 --> 01:00:37,090 y si lo pongo en su sitio sería 631 01:00:37,090 --> 01:00:43,610 mucho mejor aquí. Aquí la llamada 632 01:00:43,610 --> 01:00:52,880 y aquí aunque no lo tengamos hecho, de nuevo el 633 01:00:52,880 --> 01:00:55,880 grupo de trabajo que está desarrollando la agenda dice 634 01:00:55,880 --> 01:00:58,300 el interfaz de la clase academia me dice 635 01:00:58,300 --> 01:01:00,719 que va a tener un método que se llama 636 01:01:00,719 --> 01:01:07,860 infosesión, que recibe la sesión 637 01:01:07,860 --> 01:01:10,239 y va a devolverme un string 638 01:01:10,239 --> 01:01:16,340 con la información de la academia. Pues entonces 639 01:01:16,340 --> 01:01:20,409 infosesión, podemos poner aquí 640 01:01:20,409 --> 01:01:23,739 infosesión 641 01:01:23,739 --> 01:01:25,320 como es de la clase 642 01:01:25,320 --> 01:01:30,019 academia, pues para cada uno de ellos 643 01:01:30,019 --> 01:01:31,079 punto 644 01:01:31,079 --> 01:01:33,960 y de qué sesión me interesa 645 01:01:33,960 --> 01:01:35,539 que me devuelva, pues de la 1 646 01:01:35,539 --> 01:01:43,090 para música de la 2 647 01:01:43,090 --> 01:01:49,940 para inglés 648 01:01:49,940 --> 01:01:51,639 de la 1 649 01:01:51,639 --> 01:01:52,719 y perdón 650 01:01:52,719 --> 01:01:55,019 inglés de la 1 651 01:01:55,019 --> 01:01:59,909 y para baile de la 1 y de la 2 652 01:01:59,909 --> 01:02:04,980 también, no me compila 653 01:02:04,980 --> 01:02:06,019 lógicamente porque 654 01:02:06,019 --> 01:02:12,260 no tengo definido el método aquí, como estoy accediendo 655 01:02:12,260 --> 01:02:15,340 desde otra clase, pues voy a definirla 656 01:02:15,340 --> 01:02:20,079 con una etiqueta que podría ser, bueno, pues se podría 657 01:02:20,079 --> 01:02:24,260 package, por ejemplo, desde el mismo paquete, igual que aquí, decimos que devuelvo 658 01:02:24,260 --> 01:02:28,239 un string, el método de infosesión y que recibe la sesión 659 01:02:28,239 --> 01:02:31,159 para la que queremos que se nos muestre la información 660 01:02:31,159 --> 01:02:44,949 bueno, de momento por aquí nos compila, más allá de validar 661 01:02:44,949 --> 01:02:48,230 datos y todo esto, aquí yo creo que la clase agenda la tenemos 662 01:02:48,230 --> 01:02:51,949 prácticamente desarrollada. Vamos a ir 663 01:02:51,949 --> 01:02:56,949 metiendo información en la academia y luego la vamos poniendo más bonita. 664 01:02:59,099 --> 01:03:00,380 Bueno, la clase academia tenía 665 01:03:00,380 --> 01:03:06,000 varios atributos, nos pedía uno que fuera el nombre de la academia, 666 01:03:06,000 --> 01:03:10,099 este ya lo hemos utilizado aquí en el constructor, luego tenía 667 01:03:10,099 --> 01:03:14,119 enteros que nos permitían 668 01:03:14,119 --> 01:03:18,159 saber cuántas reservas iban 669 01:03:18,159 --> 01:03:21,219 hasta ese momento en la academia. Entonces vamos a poner 670 01:03:21,219 --> 01:03:25,820 enum al ses uno 671 01:03:25,820 --> 01:03:30,280 números, cuántos alumnos han reservado ya en la sesión 672 01:03:30,280 --> 01:03:32,460 uno, en la sesión dos. 673 01:03:33,800 --> 01:03:36,420 Lo teníamos para los nombres, string 674 01:03:36,420 --> 01:03:41,380 es enum sesión 675 01:03:41,380 --> 01:03:48,360 1, alumno 1, sesión 676 01:03:48,360 --> 01:03:55,289 1, alumno 2, sesión 677 01:03:55,289 --> 01:03:59,989 2, alumno 1 y sesión 2, alumno 2. 678 01:04:02,340 --> 01:04:05,139 Y no sé si teníamos más atributos 679 01:04:05,139 --> 01:04:09,420 identificados. Estas variables están hechas para guardar 680 01:04:09,420 --> 01:04:12,059 los nombres de los alumnos que van reservando 681 01:04:12,059 --> 01:04:17,280 en la sesión que corresponde, el primero de los alumnos y el segundo. Y para la sesión 682 01:04:17,280 --> 01:04:21,320 dos, el primero de los alumnos y el segundo. El ejercicio nos dice 683 01:04:21,320 --> 01:04:25,260 yo creo que sean privados y que vayamos, si es necesario, utilizando 684 01:04:25,260 --> 01:04:28,619 getes y setters, vamos a definir los privados 685 01:04:28,619 --> 01:04:32,260 y de momento ya tenemos aquí el código del constructor 686 01:04:32,260 --> 01:04:37,019 aunque estas variables se inicializan por defecto, por ser de tipos 687 01:04:37,019 --> 01:04:41,059 numéricos y alfanuméricos, tal cual la vamos a poner en el constructor 688 01:04:41,059 --> 01:04:43,840 vamos a ponerlas en cualquier caso y las inicializamos 689 01:04:43,840 --> 01:04:47,260 aunque sea volver a repetirlo 690 01:04:47,260 --> 01:04:49,440 si fueran valores diferentes 691 01:04:49,440 --> 01:04:51,079 pues entonces necesitaríamos sí o sí 692 01:04:51,079 --> 01:04:52,199 ponerlas en el constructor 693 01:04:52,199 --> 01:04:55,139 en este caso no lo podríamos haber ahorrado 694 01:04:55,139 --> 01:05:19,199 disculpad 695 01:05:19,199 --> 01:05:20,940 fijaros como 696 01:05:20,940 --> 01:05:23,820 como bueno, están perfectamente 697 01:05:23,820 --> 01:05:25,719 accesibles a pesar de ser privados 698 01:05:25,719 --> 01:05:27,639 porque claro, la etiqueta privado 699 01:05:27,639 --> 01:05:30,019 lo que hace es restringir el acceso a esas variables 700 01:05:30,019 --> 01:05:31,940 fuera de la clase, constructores 701 01:05:31,940 --> 01:05:33,920 de la propia clase, pues nada, sin problema 702 01:05:33,920 --> 01:05:44,920 lo acepta. Vale, pues nada, vamos a reservar plaza. 703 01:05:45,039 --> 01:05:48,679 Mirad, en reservar plaza, lo primero que se me ocurría a mí era 704 01:05:48,679 --> 01:05:52,840 comprobar a ver si hay plazas. Podemos hacer un comprobar 705 01:05:52,840 --> 01:05:58,480 plaza para una determinada sesión. ¿Para qué sesión? 706 01:05:58,599 --> 01:06:01,000 Pues para la que me están preguntando que si puedo reservar plaza. 707 01:06:02,840 --> 01:06:05,980 El método comprobar plaza, pues mirad, a ver si hay... 708 01:06:05,980 --> 01:06:10,119 Bueno, en el enunciado nos decía que definamos una... 709 01:06:10,119 --> 01:06:13,960 básicamente, bueno, no es 710 01:06:13,960 --> 01:06:18,480 estrictamente necesario, tampoco vamos a utilizar en muchos sitios 711 01:06:18,480 --> 01:06:22,679 el número de plazas, pero sí que en el enunciado, pues me preocupé de ponerlo 712 01:06:22,679 --> 01:06:26,000 para que trabajaréis también y definierais dentro de la 713 01:06:26,000 --> 01:06:30,440 tarea una variable que fuera una constante 714 01:06:30,440 --> 01:06:34,719 que fuera de tipo final, entonces ponemos final de tipo entero 715 01:06:34,719 --> 01:06:40,099 numplazas igual a 2 716 01:06:40,099 --> 01:06:50,320 recordar las variables que identificamos 717 01:06:50,320 --> 01:06:53,460 como final se convierten en constantes. Esto implica 718 01:06:53,460 --> 01:06:58,280 a diferencia de las variables que si intentamos modificarlas durante el código 719 01:06:58,280 --> 01:07:02,300 pues ya no nos deja. ¿Por qué? Pues porque hemos dicho que es una constante. Una constante no cambia 720 01:07:02,300 --> 01:07:08,139 su valor. Además, esto sí por convenio, aunque no 721 01:07:08,139 --> 01:07:11,300 por compilador de Java, se suele poner todo el nombre 722 01:07:11,300 --> 01:07:16,280 con mayúsculas. Igual que vamos teniendo por ahí pequeñas 723 01:07:16,280 --> 01:07:21,079 pistas de a qué se refieren, pues hemos dicho antes que los nombres de los métodos 724 01:07:21,079 --> 01:07:25,420 empiezan con minúscula, menos el constructor, los nombres de las clases 725 01:07:25,420 --> 01:07:28,760 empiezan con mayúscula, pues las constantes 726 01:07:28,760 --> 01:07:36,300 todas las letras en mayúscula. Estábamos, íbamos a trabajar sobre 727 01:07:36,300 --> 01:07:42,239 el método comprobar plaza, pues ponemos aquí 728 01:07:42,239 --> 01:07:47,039 lo de, lo de, comprobar plaza nos puede 729 01:07:47,039 --> 01:07:51,420 devolver un verdadero, nos devuelve un verdadero, si existe la plaza disponible 730 01:07:51,420 --> 01:07:59,039 y un falso o sea un boolean si no lo existe podemos vamos a definir la privada de tal 731 01:07:59,039 --> 01:08:04,500 forma que no formará parte del interfaz de la clase academia de caras afuera sino que 732 01:08:04,500 --> 01:08:13,289 será un método de consumo interno que de hecho lo estamos definiendo para llamarlo desde el 733 01:08:13,289 --> 01:08:20,869 método reservar plaza es privada por lo tanto entonces devuelve un boolean le damos comprobar 734 01:08:20,869 --> 01:08:24,970 plaza y recibe la sesión 735 01:08:24,970 --> 01:08:29,750 para la que queremos hacer la comprobación, ISES por ejemplo 736 01:08:29,750 --> 01:08:37,760 aquí estamos haciendo esa llamada, vamos a recoger su resultado poniendo 737 01:08:37,760 --> 01:08:41,439 aquí un boolean, B plaza disp 738 01:08:41,439 --> 01:08:47,699 en la variable plaza disp recogemos si existe 739 01:08:47,699 --> 01:08:51,039 disponibilidad de plazas todavía para esta sesión 740 01:08:51,039 --> 01:08:58,220 en la academia donde se está ejecutando reservar plaza y aquí para hacer 741 01:08:58,220 --> 01:09:02,199 la comprobación de la plaza, pues lo que podemos hacer 742 01:09:02,199 --> 01:09:04,800 es decir que si if, si 743 01:09:04,800 --> 01:09:13,140 y sesión, y ses, es igual 744 01:09:13,140 --> 01:09:17,340 a 1, recordad que estamos obligando 745 01:09:17,340 --> 01:09:21,239 estamos pidiendo por aquí, y luego si metemos algo diferente 746 01:09:21,239 --> 01:09:24,619 y nos da tiempo, hacemos comprobaciones, pero estamos diciendo que se meta un 1 o un 2 747 01:09:24,619 --> 01:09:28,699 según lo que introdujésemos aquí, pues habría que hacer las comprobaciones ahora 748 01:09:28,699 --> 01:09:32,840 si la sesión sobre la que preguntamos es 749 01:09:32,840 --> 01:09:40,489 un 1 y el número de plazas que van 750 01:09:40,489 --> 01:09:44,329 reservadas hasta ahora, para esa sesión, que parece 751 01:09:44,329 --> 01:09:49,029 para lo que tenemos esta variable por aquí, es menor 752 01:09:49,029 --> 01:09:56,189 de 2, pues quiere decir que hay plazas disponibles, ¿verdad? 753 01:09:57,069 --> 01:10:00,609 Entonces, aquí tendríamos que devolver 754 01:10:00,609 --> 01:10:04,350 un verdadero. Si ponemos aquí un return, lo he puesto 755 01:10:04,350 --> 01:10:08,409 no es incorrecto, lo acepta Java, ¿verdad? 756 01:10:08,510 --> 01:10:12,350 Fijaros, un return true, pues por aquí nos tendrá que aparecer un return 757 01:10:12,350 --> 01:10:16,289 false, que es necesario como instrucción, 758 01:10:16,369 --> 01:10:20,229 como punto de escape de un método que devuelve algo, es obligatorio 759 01:10:20,229 --> 01:10:24,250 ponerlo. Típicamente, a mí me lo enseñaron desde 760 01:10:24,250 --> 01:10:27,869 siempre, se desaconseja en métodos poner 761 01:10:27,869 --> 01:10:31,649 esparcidos a lo largo de su código diferentes returns. 762 01:10:31,649 --> 01:10:50,310 ¿Por qué? Porque estás abriendo muchas puertas de salida al método y luego ante un posible mantenimiento que tengas que hacer del código, aquí se ve muy claro porque no es nada, pero si es un método largo que hace llamadas a otros métodos y empieza a haber muchas alternativas de salida, pues muchas salidas es complicado. 763 01:10:50,310 --> 01:11:13,029 Imaginaos que, para lo que os quiero contar, estamos en un estadio y más allá de conglomeraciones porque tenga que salir mucha gente al mismo tiempo, queremos tener un control de las personas que salen. Pues si tenemos 600 puertas, pues va a ser mucho más complicado que si tenemos una puerta solo para la salida del estadio. Matices aparte, si es un estadio grande y tiene que salir mucha gente al mismo tiempo. 764 01:11:13,029 --> 01:11:23,930 En lo que respecta al control un poco y poder hacer un seguimiento del método, sobre todo si hay que hacer un mantenimiento, siempre se recomienda que la salida sea única. 765 01:11:24,750 --> 01:11:40,229 ¿Cómo podemos conseguir esto? Pues como de verdad tenemos aquí discrepancias entre lo que hay que devolver, que una vez será true y otra vez será false, pues lo que podemos hacer es poner aquí una variable auxiliar y decirle, por ejemplo, que sea false aquí al principio. 766 01:11:40,229 --> 01:11:41,550 es una de las alternativas 767 01:11:41,550 --> 01:11:44,090 y aquí 768 01:11:44,090 --> 01:11:45,729 coger y hacer un return 769 01:11:45,729 --> 01:11:46,890 ve aus 770 01:11:46,890 --> 01:11:51,960 queremos comprobar 771 01:11:51,960 --> 01:11:54,060 que si hay plaza en la sesión 1 772 01:11:54,060 --> 01:11:56,239 para esta academia, si hay plaza en la sesión 1 773 01:11:56,239 --> 01:11:58,000 es esto lo que tiene 774 01:11:58,000 --> 01:11:59,619 que pasar, pues me dice 775 01:11:59,619 --> 01:12:01,359 oye que si que hay plaza, perfecto 776 01:12:01,359 --> 01:12:03,560 y si no hubiera plaza 777 01:12:03,560 --> 01:12:05,220 si estamos hablando de la sesión 1 778 01:12:05,220 --> 01:12:06,880 ahora tenemos que meter para la sesión 2 779 01:12:06,880 --> 01:12:09,300 lo que tenemos que devolver es un false 780 01:12:09,300 --> 01:12:11,319 necesitaríamos poner aquí un false 781 01:12:11,319 --> 01:12:19,529 tendríamos que poner aquí un else para indicar false 782 01:12:19,529 --> 01:12:23,569 en caso de que no haya disponibilidad, bueno pues podríamos 783 01:12:23,569 --> 01:12:27,489 poner aquí el else en esta compruebo si hay disponibilidad true, else 784 01:12:27,489 --> 01:12:31,649 false o directamente no ponerlo y habernos asegurado que lo inicializamos 785 01:12:31,649 --> 01:12:38,949 aquí a false, de partida consideramos no hay plaza 786 01:12:38,949 --> 01:12:45,289 y ahora en caso de que la haya sobre escribimos la variable y cuando llego 787 01:12:45,289 --> 01:12:48,289 aquí si la he sobre escrito devuelvo true y si no 788 01:12:48,289 --> 01:12:51,649 informo de lo que de partida ya consideraba. 789 01:12:53,029 --> 01:12:55,329 Este método, en función de la sesión, 790 01:12:55,770 --> 01:12:57,829 me tiene que validar si hay plaza en una sesión u otra 791 01:12:57,829 --> 01:13:00,050 y aquí hemos hecho la comprobación para la sesión 1. 792 01:13:03,829 --> 01:13:05,050 Podemos poner aquí un else. 793 01:13:06,449 --> 01:13:08,210 Si la sesión es la 2 794 01:13:08,210 --> 01:13:14,600 y el número de alumnos de la sesión 2 es menor que 2, 795 01:13:17,520 --> 01:13:19,979 pues le decimos un true aquí. 796 01:13:26,979 --> 01:13:38,859 Y podríamos poner esto o esto, 797 01:13:38,859 --> 01:13:51,939 meter en un único if los dos, con un or 798 01:13:51,939 --> 01:14:01,859 si ese, si en la sesión uno o en la sesión 799 01:14:01,859 --> 01:14:09,590 dos, pues devuelvo otro, con un solo if 800 01:14:09,590 --> 01:14:11,689 lo que pasa es que nos complica en este caso 801 01:14:11,689 --> 01:14:17,689 la parte de evaluar el verdadero o falso y en este caso 802 01:14:17,689 --> 01:14:21,750 es más fácil esa parte, pero lo hemos repartido en dos comprobando 803 01:14:21,750 --> 01:14:27,170 a ver si en la sesión dos, y si no se da esa 804 01:14:27,170 --> 01:14:32,189 o esa o el conjunto de esta, pues mantenemos el valor de inicialización 805 01:14:32,189 --> 01:14:36,350 de falso y me dice que no es posible. De la comprobación 806 01:14:36,350 --> 01:14:40,090 de la plaza hemos llegado por aquí. A ver por qué 807 01:14:40,090 --> 01:14:47,720 no haya puesto el nombre bien en alguno de los dos sitios. 808 01:14:48,479 --> 01:14:52,220 Entonces aquí ya tengo si hay plaza. Si hay plaza tendré que 809 01:14:52,220 --> 01:14:56,359 hacer lo que toque y si quiere hacer la reserva y si no 810 01:14:56,359 --> 01:15:00,079 pues no hacer la reserva. Aquí diríamos 811 01:15:00,079 --> 01:15:17,449 If, si hay plaza, pues aquí tengo que hacer la reserva y me aseguraré de que reservar plaza devuelve también un verdadero. 812 01:15:17,670 --> 01:15:21,850 ¿Para qué? Para que aquí se sepa que se ha reservado la plaza en la llamada. 813 01:15:22,710 --> 01:15:23,310 Se carga aquí. 814 01:15:25,210 --> 01:15:30,470 Y si no se ha podido reservar la plaza, pues es porque no hay disponibilidad, entonces aquí tendríamos un else. 815 01:15:34,590 --> 01:15:36,869 ¿Cómo vamos a hacer para que haya un único return? 816 01:15:36,869 --> 01:15:42,779 por la misma jugada de antes. Yo cojo y digo aquí, bueno, 817 01:15:43,079 --> 01:15:48,979 este Boolean ya lo tengo aquí. Aquí cojo y digo, devuélveme 818 01:15:48,979 --> 01:15:56,899 si se ha producido plaza. Si fue posible hacerla 819 01:15:56,899 --> 01:15:59,939 si había disponibilidad de plaza, pues es porque la 820 01:15:59,939 --> 01:16:04,140 va a reservar aquí. Entonces ya devuelvo directamente bien, reservada. 821 01:16:04,720 --> 01:16:08,979 Y si no fue posible porque no había disponibilidad, pues devuelvo, no hay disponibilidad 822 01:16:08,979 --> 01:16:13,140 de plaza. Podemos hacer esto o podríamos hacer también 823 01:16:13,140 --> 01:16:20,390 lo siguiente, bueno en el else en verdad no hay nada de código 824 01:16:20,390 --> 01:16:22,710 aquí tendríamos que hacer la reserva de la plaza 825 01:16:22,710 --> 01:16:27,949 y otra posibilidad sería hacer así, mirad, if 826 01:16:27,949 --> 01:16:36,359 sí, y llamar directamente aquí al método, comprobar 827 01:16:36,359 --> 01:16:40,640 plaza, en lugar de estar definiendo una variable, esto sería 828 01:16:40,640 --> 01:16:47,430 sustituyendo a este trozo, aquí estaríamos 829 01:16:47,430 --> 01:16:50,510 diciendo, si es posible reservar plaza 830 01:16:50,510 --> 01:16:54,449 pues ya directamente me entro el if, no lo hago en dos pasos 831 01:16:54,449 --> 01:16:58,529 que es cargarlo en una variable booleana y luego hacer la comprobación 832 01:16:58,529 --> 01:17:02,729 de esa variable, es cierto que si hago esto, pues pierdo esta variable 833 01:17:02,729 --> 01:17:06,529 si usamos esta jugada, aquí 834 01:17:06,529 --> 01:17:08,329 tendríamos que hacer la reserva de la plaza 835 01:17:08,329 --> 01:17:14,329 y en caso de no poder reservarse, pues se iría por el else 836 01:17:14,329 --> 01:17:16,310 que ni siquiera existe, entonces no hacemos nada 837 01:17:16,310 --> 01:17:42,880 Entonces, bajo esta alternativa lo que haríamos sería definir una variable aquí boolean, b, plaza disp, la inicializamos a false, decimos inicial, consideramos que no hay plaza y devuelvo esto. 838 01:17:42,880 --> 01:17:47,979 si ha habido plaza, ejecutará esto. 839 01:17:48,300 --> 01:17:48,939 Entonces, ¿qué hago? 840 01:17:49,239 --> 01:17:51,600 Que será la reserva de la plaza que la vamos a hacer ahora. 841 01:17:52,180 --> 01:17:54,779 Entonces, lo que haría esto sería poner esta variable a true. 842 01:17:58,100 --> 01:18:00,479 Entonces, digo, inicialmente considero que no hay plaza, 843 01:18:00,720 --> 01:18:01,619 comprobo si hay plaza. 844 01:18:03,220 --> 01:18:05,439 Este comprobar si hay plaza no lo estoy cargando en ningún sitio. 845 01:18:05,579 --> 01:18:08,600 Si hay plaza, digo, oye, voy a sobrescribir esta variable 846 01:18:08,600 --> 01:18:10,819 que inicialmente estaba considerando que no había plaza 847 01:18:10,819 --> 01:18:11,579 y la ha habido. 848 01:18:11,680 --> 01:18:13,460 De hecho, aquí voy a hacer la reserva de la plaza. 849 01:18:13,659 --> 01:18:14,920 Y digo, ya que sí. 850 01:18:16,020 --> 01:18:17,539 ¿Que no hay plaza disponible? 851 01:18:17,680 --> 01:18:21,859 no ejecuta el if, se viene por aquí, no hay else, devuelve lo que tiene 852 01:18:21,859 --> 01:18:24,000 plaza disponible, que es directamente un false. 853 01:18:25,579 --> 01:18:29,939 O si queréis hacerlo pasito a pasito, de esto, y luego hacer la comprobación 854 01:18:29,939 --> 01:18:33,939 aquí. Ahora, está bien que lo hagáis pasito a pasito, 855 01:18:34,039 --> 01:18:37,659 a lo mejor lo veis más claro, con el tiempo os iréis ahorrando poner líneas 856 01:18:37,659 --> 01:18:41,760 cuando ya vais cogiendo más destreza, y a lo mejor haréis esta otra 857 01:18:41,760 --> 01:18:48,399 alternativa. Habíamos llamado a reservar plaza, recordad, 858 01:18:48,399 --> 01:18:54,500 comprobamos a ver si hay plaza, pues venga, si 859 01:18:54,500 --> 01:18:58,739 hay plaza, esto devuelve verdadero, que es 860 01:18:58,739 --> 01:19:02,680 lo que está haciendo esto con el return, y si es verdadero 861 01:19:02,680 --> 01:19:06,960 estamos aquí dentro del if, modificamos la variable esta que vamos a utilizar 862 01:19:06,960 --> 01:19:10,420 para el return a true, porque sí que se ha reservado la plaza 863 01:19:10,420 --> 01:19:14,260 y hacemos un return por aquí, y en 864 01:19:14,260 --> 01:19:25,359 el método reservar plaza toca reservarla aquí, hay plaza 865 01:19:25,359 --> 01:19:35,000 pues vamos a reservar. Pues venga, para hacer la reserva tenemos que mirar 866 01:19:35,000 --> 01:19:39,140 a ver en qué sesión vamos a reservar. Entonces decimos la sesión 867 01:19:39,140 --> 01:19:46,220 en la que queríamos reservar, if, si la sesión en la que queremos reservar 868 01:19:46,220 --> 01:19:52,359 es la 1, sabemos que hay plaza con toda seguridad, con lo cual esta variable 869 01:19:52,359 --> 01:19:56,500 valdrá o 1 o 2, o sea, o 0 o 1 870 01:19:56,500 --> 01:19:59,079 o no ha reservado nadie todavía, o 871 01:19:59,079 --> 01:20:07,680 hay una reserva hecha, entonces podemos decir sí, esto es igual a 0 872 01:20:07,680 --> 01:20:15,800 todavía no ha reservado nadie, el nombre de la reserva que estamos recibiendo 873 01:20:15,800 --> 01:20:19,920 lo tendremos que guardar, como todavía no hay reservas, en la variable 874 01:20:19,920 --> 01:20:37,260 sesión 1 al 1, 1, else, si el comprobar reserva estaba bien 875 01:20:37,260 --> 01:20:43,300 y hemos sido capaces de entrar aquí a reservar plaza, quiere decir que esto 876 01:20:43,300 --> 01:20:48,100 vale 0 o vale 1, o sea el else es que eso vale 1 sí o sí, entonces el nombre 877 01:20:48,100 --> 01:20:52,359 se lo aplicamos a la sesión 1 878 01:20:52,359 --> 01:20:56,420 alumno 2. Y sea el caso que sea 879 01:20:56,420 --> 01:21:03,140 lo que hacemos es incrementar esto en 1. Esto es si la sesión es la 1 880 01:21:03,140 --> 01:21:14,310 y si la sesión es la 2. No valdría un else si hemos 881 01:21:14,310 --> 01:21:17,529 hecho las comprobaciones oportunas antes. Entonces sería 882 01:21:17,529 --> 01:21:23,670 el número de alumnos de sesión 2 si es 0. Entonces 883 01:21:23,670 --> 01:21:27,810 el nombre de la sesión 2 del 884 01:21:27,810 --> 01:21:32,029 alumno 1 será ese nombre y el nombre de la sesión 2 885 01:21:32,029 --> 01:21:35,529 el alumno 2 será ese nombre. 886 01:21:41,300 --> 01:21:44,479 Y finalmente devuelvo por aquí, indico 887 01:21:44,479 --> 01:21:48,500 que true para decir, oye, la plaza se ha realizado y 888 01:21:48,500 --> 01:21:52,460 en ese caso devolveré por aquí, correcto, se ha realizado. Para aquí 889 01:21:52,460 --> 01:21:56,800 la llamada al método reserva2, pues lo considero 890 01:21:56,800 --> 01:22:05,779 por aquí. Y en la clase academia 891 01:22:05,779 --> 01:22:10,720 si no recuerdo mal lo que nos queda por implementar 892 01:22:10,720 --> 01:22:19,159 es sesión, entonces el texto 893 01:22:19,159 --> 01:22:22,819 vamos a hacer un primer mensaje así rápido, luego 894 01:22:22,819 --> 01:22:26,800 adornamos mensajes en función de como nos dé tiempo pero 895 01:22:26,800 --> 01:22:31,920 para poder acabar el ejercicio en este 896 01:22:31,920 --> 01:22:35,859 ratillo, vamos a decir si la sesión es 897 01:22:35,859 --> 01:22:43,670 la sesión 1, fijaros este método 898 01:22:43,670 --> 01:22:47,109 pues igual que los otros, va a devolver algo, va a devolver un string 899 01:22:47,109 --> 01:22:51,489 pues si va a devolver un string, lo suyo 900 01:22:51,489 --> 01:22:55,470 por lo que os comentaba antes, si queremos seguir ese criterio, es tener un único return 901 01:22:55,470 --> 01:22:59,029 pero como se va a ir construyendo el mensaje que vamos a devolver 902 01:22:59,029 --> 01:23:03,430 bajo diferentes condiciones, si fels es sesión 1, es sesión 2 903 01:23:03,430 --> 01:23:07,289 como es una cosa u otra, pues entonces lo que vamos a hacer va a ser 904 01:23:07,289 --> 01:23:10,550 definir aquí una variable, ese 905 01:23:10,550 --> 01:23:14,569 InfoDev. La información a devolver 906 01:23:14,569 --> 01:23:19,130 la podemos ir construyendo poco a poco. Entonces decimos la información 907 01:23:19,130 --> 01:23:23,149 a devolver, podemos poner, no sé si es justo el mensaje que pone el 908 01:23:23,149 --> 01:23:27,210 enunciado, vamos a poner Academia aquí, esta parte del mensaje 909 01:23:27,210 --> 01:23:33,659 es común para todos, mi nombre de Academia lo tengo guardado en ese nombre 910 01:23:33,659 --> 01:23:49,859 pues vamos a poner aquí Academia ese nombre. Sesión para la sesión 911 01:23:49,859 --> 01:24:00,149 aquí, alumno 912 01:24:00,149 --> 01:24:07,880 uno, bueno, esto vamos a dejarlo ya, si en la 913 01:24:07,880 --> 01:24:11,770 sesión uno, alumno uno 914 01:24:11,770 --> 01:24:17,210 bueno, luego vamos a ver si alumno uno lo ponemos aquí o lo ponemos a continuación 915 01:24:17,210 --> 01:24:21,069 entonces decimos, si la sesión es la uno, lo que vamos a hacer es que 916 01:24:21,069 --> 01:24:24,810 ese info dev sea igual a ese 917 01:24:24,810 --> 01:24:28,029 info dev 918 01:24:28,029 --> 01:24:33,010 para que tenga toda esta información, verdad, si es como una cualquiera de todos los 919 01:24:33,010 --> 01:24:34,430 mensajes, más 920 01:24:34,430 --> 01:24:36,729 alumno 921 01:24:36,729 --> 01:24:43,560 1, y esto lo tenemos 922 01:24:43,560 --> 01:24:45,659 sesión 1, alumno 1, lo tenemos 923 01:24:45,659 --> 01:24:53,789 aquí, más 924 01:24:53,789 --> 01:25:09,810 después 925 01:25:09,810 --> 01:25:11,909 jugamos un poco para si 926 01:25:11,909 --> 01:25:14,069 este no existe, que ponga un punto 927 01:25:14,069 --> 01:25:15,590 después del alumno 1, pues 928 01:25:15,590 --> 01:25:17,430 lo adornamos un poquito más 929 01:25:17,430 --> 01:25:19,829 si nos da tiempo, ya os digo 930 01:25:19,829 --> 01:25:21,489 que igual no, al final 931 01:25:21,489 --> 01:25:26,859 por pegar un repaso a 932 01:25:26,859 --> 01:25:29,159 tanto concepto teórico, al final 933 01:25:29,159 --> 01:25:29,500 no 934 01:25:29,500 --> 01:25:33,079 me da tiempo a cerrar el ejercicio del todo. 935 01:25:33,699 --> 01:25:37,039 Sesión 2, alumno 1, sesión 936 01:25:37,039 --> 01:25:40,680 2, alumno 2. 937 01:25:42,680 --> 01:25:44,060 Y ahora devolvemos aquí 938 01:25:44,060 --> 01:25:53,560 ese info. Bueno, vamos a hacer una ejecución a ver qué pasa. 939 01:25:54,399 --> 01:25:58,399 Esto de meter todo el código y no hacer ninguna ejecución 940 01:25:58,399 --> 01:26:02,319 parcial no es lo más recomendable, porque si ahora tenemos problemas 941 01:26:02,319 --> 01:26:06,359 pues hay muchos puntos sin validar 942 01:26:06,359 --> 01:26:09,859 antes que estaban más o menos bien y donde buscar 943 01:26:09,859 --> 01:26:13,279 los errores, siempre es más fácil ir haciendo pequeñas pruebas 944 01:26:13,279 --> 01:26:18,300 del código y así si tenemos luego un error pues es muy probable 945 01:26:18,300 --> 01:26:21,640 que sea sobre el último código que hemos metido y es más fácil de localizar 946 01:26:21,640 --> 01:26:29,600 a ver, bueno, fijaros por aquí, nos sale esto un poco descolocado 947 01:26:29,600 --> 01:26:35,500 reservado de actividades, no me ha salido 948 01:26:35,500 --> 01:26:58,920 mensaje para terminar para quitar este de aquí para que se me quede ahí lo tengo aquí indica 949 01:26:58,920 --> 01:27:11,430 el nombre de alumno 1 jose indica la estabilidad música sesión 1 esto me lo pone después vale 950 01:27:12,489 --> 01:27:41,829 pues vamos a poner fin y no me ha hecho nada con el fin vamos a ver evitar este mensaje bueno 951 01:27:41,829 --> 01:27:45,789 cuando un programa no nos funciona, una herramienta bien útil 952 01:27:45,789 --> 01:27:49,750 es ir poniendo trazas, a ver qué va pasando, vamos a poner aquí, vamos a poner trazas 953 01:27:49,750 --> 01:27:53,569 system.out.println, a ver si llega aquí 954 01:27:53,569 --> 01:28:15,760 a mostrar agenda, jose, fin 955 01:28:15,760 --> 01:28:20,319 no, la actividad ha dicho que sea esa, vamos a decirle fin aquí 956 01:28:20,319 --> 01:28:24,140 bueno, sí que pone mostrar agenda, vale, bueno, lógico 957 01:28:24,140 --> 01:28:28,319 que no haya mostrado nada, sí que llega aquí al mostrar agenda 958 01:28:28,319 --> 01:28:32,239 pero lo que hemos hecho ha sido llamar a infosesión de mi música 959 01:28:32,239 --> 01:28:35,579 efectivamente muy bien, nos ha devuelto con el return 960 01:28:35,579 --> 01:28:39,920 el infosesión, nos ha devuelto un string, correcto 961 01:28:39,920 --> 01:28:44,039 pero luego aquí no hemos hecho nada con ello, entonces es normal que no aparezca 962 01:28:44,039 --> 01:29:19,239 nada por pantalla, ahora con lo que nos devuelve a infosesión 963 01:29:19,239 --> 01:29:22,539 lo vamos a mostrar por pantalla, vamos a ver si está correcto o no, pero 964 01:29:22,539 --> 01:29:27,260 algo ya nos pretenderá mostrar por pantalla, a ver, entonces decimos aquí 965 01:29:27,260 --> 01:30:08,680 José, actividad, música, sesión 1, vamos a poner un fin, bueno y por ahí aparece José, vamos a ver, José, actividad, música, 1, Ana, música, 1, dice que no va diciendo clase reservada de momento, vamos a poner Noa, música, 1, 966 01:30:08,680 --> 01:30:12,899 y dice, no ha sido posible reservar la clase, fijaros, como solamente tenía 967 01:30:12,899 --> 01:30:23,479 dos reservas, intenta hacer una tercera, Sandra, vamos a poner música 968 01:30:23,479 --> 01:30:26,659 dos, clase reservada 969 01:30:26,659 --> 01:30:31,460 todavía me sigue ofreciendo, al final había seguido el criterio de hasta reservar cuatro 970 01:30:31,460 --> 01:30:34,100 vamos a intentar una cuarta, Rubén 971 01:30:34,100 --> 01:30:38,960 vamos a volver a hacer música, y completamos las de música, dos 972 01:30:38,960 --> 01:30:45,520 y no ha terminado, no he debido incrementar 973 01:30:45,520 --> 01:30:47,680 bien el contador. 974 01:30:48,180 --> 01:30:49,279 Vamos a poner aquí un A. 975 01:30:51,020 --> 01:30:51,579 Ah, bueno. 976 01:30:51,720 --> 01:30:53,899 Me ha pedido de nuevo el nombre. Sí que lo había considerado, 977 01:30:53,960 --> 01:30:55,640 pero me ha pedido de nuevo el nombre. Pues esto sería 978 01:30:55,640 --> 01:30:56,539 una cosa a validar. 979 01:30:57,819 --> 01:30:59,960 Fijaros, entonces me dice por aquí José y Ana. 980 01:31:01,579 --> 01:31:01,939 Rubén. 981 01:31:03,039 --> 01:31:03,640 Y aquí 982 01:31:03,640 --> 01:31:04,699 no me ha metido 983 01:31:04,699 --> 01:31:07,659 José, Ana, Rubén. 984 01:31:11,550 --> 01:31:12,729 Sandra. Sandra no me lo ha puesto. 985 01:31:13,510 --> 01:31:14,229 Música 2. 986 01:31:16,390 --> 01:31:18,310 Vale, pues vamos a revisar el código. 987 01:31:18,310 --> 01:31:23,670 en la reserva, infosesión, comprobar 988 01:31:23,670 --> 01:31:30,520 plaza, en la reserva, sesión 2 989 01:31:30,520 --> 01:31:38,630 alumno 2, sospechaba que esto lo iba a haber dejado coincidiendo 990 01:31:38,630 --> 01:31:42,029 con este, pero veo que no, no sé por qué no me ha puesto a Sandra 991 01:31:42,029 --> 01:31:46,670 ahora vemos, vamos a corregir otra de las cosas que nos ha hecho 992 01:31:46,670 --> 01:31:50,630 fijaros que después de 4, se ha quedado ahí 993 01:31:50,630 --> 01:31:54,569 y nos ha vuelto a pedir otro nombre, el A y luego ha terminado, eso es porque 994 01:31:54,569 --> 01:31:58,850 cuando ya he cuargado aquí 4, sigo pidiendo esto. 995 01:32:00,369 --> 01:32:02,510 Pues aquí tendría que poner un if, sí. 996 01:32:04,449 --> 01:32:07,770 Resulta que el número de alumnos ya es 4, que lo acabo de poner aquí. 997 01:32:09,390 --> 01:32:11,989 No me vuelvas a mostrar eso porque ya lo que quiero es terminar. 998 01:32:18,640 --> 01:32:19,800 Ese se resuelve por ahí. 999 01:32:19,800 --> 01:32:22,819 Y vamos a hacer otra ejecución. 1000 01:32:27,539 --> 01:32:30,659 Voy a poner de nombres A, B, C y D para ir más rápido. 1001 01:32:30,659 --> 01:32:33,899 música 1 1002 01:32:33,899 --> 01:32:42,289 ahora no me ha pedido el nombre 1003 01:32:42,289 --> 01:32:44,880 claro 1004 01:32:44,880 --> 01:32:47,920 vale, no me ha pedido el nombre porque he puesto 1005 01:32:47,920 --> 01:32:48,800 esto mal aquí 1006 01:32:48,800 --> 01:32:53,779 digo, muéstralo 1007 01:32:53,779 --> 01:32:55,319 si es 4 1008 01:32:55,319 --> 01:32:57,779 no, pero lo tiene que 1009 01:32:57,779 --> 01:32:58,819 mostrar mientras 1010 01:32:58,819 --> 01:33:03,470 sea menor de 4 1011 01:33:03,470 --> 01:33:05,750 para que lo muestre con 0, con 1, con 2 1012 01:33:05,750 --> 01:33:06,470 y con 3 1013 01:33:06,470 --> 01:33:14,109 ejecutamos por aquí 1014 01:33:14,109 --> 01:33:17,689 música 1 1015 01:33:17,689 --> 01:33:21,869 B, música 1 1016 01:33:21,869 --> 01:33:26,250 C, música 2 1017 01:33:26,250 --> 01:33:30,130 D, música 2 1018 01:33:30,130 --> 01:33:36,779 Vale, ahora fue, me ha pasado lo mismo que antes 1019 01:33:36,779 --> 01:33:39,220 respecto a guardar la información, vale 1020 01:33:39,220 --> 01:33:44,460 pues vamos a ver por aquí, en academia 1021 01:33:44,460 --> 01:33:48,760 puede ser en la reserva o puede ser al crear este texto 1022 01:33:48,760 --> 01:33:51,659 donde tengamos el problema, en la reserva parece que no 1023 01:33:51,659 --> 01:33:56,539 por lo que hemos visto, reservar plaza, guarda el nombre en uno 1024 01:33:56,539 --> 01:34:00,420 y guarda en otro, en el que tenemos problemas en 2 al 1 2 1025 01:34:00,420 --> 01:34:06,020 parece que está bien, pero al informar, pues tampoco 1026 01:34:06,020 --> 01:34:11,000 porque aquí 2 al 1 1, 2 al 1 2 1027 01:34:11,000 --> 01:34:21,380 1 al 1 1, 1 al 1 2, no termino de ver 1028 01:34:21,380 --> 01:34:32,159 donde tengo el error aquí, ya sesión la 2 1029 01:34:32,159 --> 01:34:51,960 sesión uno, alumno dos, sesión uno, alumno uno 1030 01:34:51,960 --> 01:35:03,520 ah, vale, sesión dos, alumno uno, sesión dos, alumno dos 1031 01:35:03,520 --> 01:35:12,949 ah, vale, bien, el problema está aquí. Fijaros, aquí estoy incrementando 1032 01:35:12,949 --> 01:35:16,909 el número de alumnos de la sesión uno y aquí el número de alumnos de la sesión 1033 01:35:16,909 --> 01:35:21,310 uno de nuevo. Dos, aquí, sesión dos 1034 01:35:21,310 --> 01:35:25,130 copia y pega, tienes dos problemas. Vamos a hacer 1035 01:35:25,130 --> 01:35:31,500 la prueba. A, música 1036 01:35:31,500 --> 01:35:35,779 1, B, música 1037 01:35:35,779 --> 01:35:40,300 1, C, música 1038 01:35:40,300 --> 01:35:42,880 2, D, 1039 01:35:44,619 --> 01:35:47,579 música 2. Vale, ahí lo tenemos ya. 1040 01:35:47,579 --> 01:35:52,939 Ya me lo muestra bien. Vamos a hacer una reserva 1041 01:35:52,939 --> 01:35:56,739 para diferentes academias. Por ejemplo, decimos 1042 01:35:56,739 --> 01:36:00,680 A, decimos música 2, 1043 01:36:00,680 --> 01:36:05,180 B, baile 1 1044 01:36:05,180 --> 01:36:09,140 C, inglés 1045 01:36:09,140 --> 01:36:12,119 2, y ahora ponemos fin 1046 01:36:12,119 --> 01:36:19,890 vale, pues ya termina por aquí, y bueno, no recuerdo exactamente 1047 01:36:19,890 --> 01:36:22,810 yo creo que hemos dicho esta distribución, yo creo que lo he hecho bien 1048 01:36:22,810 --> 01:36:33,279 el fin parece que también funciona, nos quedan 5 o 10 minutillos 1049 01:36:33,279 --> 01:36:36,880 vamos a hacer alguna pequeña corrección por aquí 1050 01:36:36,880 --> 01:36:41,380 por ejemplo vamos a validar los datos que vamos metiendo 1051 01:36:41,380 --> 01:36:45,060 lo primero que nos pide por aquí es la actividad 1052 01:36:45,060 --> 01:36:48,979 música, baile o inglés, pues aquí podríamos hacer una 1053 01:36:48,979 --> 01:36:52,960 comprobación con el Nestline hasta que la actividad con toda seguridad 1054 01:36:52,960 --> 01:36:56,060 pues sea una de esas, entonces podríamos hacer aquí 1055 01:36:56,060 --> 01:37:03,880 while mientras, mientras la 1056 01:37:03,880 --> 01:37:07,279 actividad que estamos comprobando 1057 01:37:07,279 --> 01:37:10,399 recordad como es un string hay que utilizar el compare to 1058 01:37:10,399 --> 01:37:25,180 ponemos aquí música o baile 1059 01:37:25,180 --> 01:37:40,640 o inglés, bueno compare to 1060 01:37:40,640 --> 01:37:43,859 vamos a poner equals, el problema que me está dando es que compare to 1061 01:37:43,859 --> 01:37:46,600 devuelve un número, que no se puede transformar directamente 1062 01:37:46,600 --> 01:37:48,659 a un boolean 1063 01:37:48,659 --> 01:37:52,619 entonces mientras la actividad sea o música 1064 01:37:52,619 --> 01:37:55,199 o baile o inglés, que eso es lo correcto 1065 01:37:55,199 --> 01:37:58,000 ese es el caso en el que querría salir de aquí 1066 01:37:58,000 --> 01:38:00,859 entonces lo que voy a hacer va a ser todo el conjunto 1067 01:38:00,859 --> 01:38:06,050 negarlo, entonces si es 1068 01:38:06,050 --> 01:38:10,920 si es música o es baile o es inglés 1069 01:38:10,920 --> 01:38:13,840 es true, pero como lo que quiero es que sea 1070 01:38:13,840 --> 01:38:16,880 false, lo niego y lo convierto a false, entonces me voy del while 1071 01:38:16,880 --> 01:38:19,239 y continúo, y si no es eso 1072 01:38:19,239 --> 01:38:22,880 pues lo que diré será un system.out.println 1073 01:38:24,479 --> 01:38:29,699 repite la actividad 1074 01:38:29,699 --> 01:38:31,779 y digo aquí que sea 1075 01:38:31,779 --> 01:38:41,569 música, baile, inglés 1076 01:38:41,569 --> 01:38:50,250 y vuelvo a cargar, vuelvo a leer 1077 01:38:50,250 --> 01:39:00,720 el nombre de la alumna, vamos a poner una A 1078 01:39:00,720 --> 01:39:03,359 indica la actividad, ponemos cualquier cosa por ahí 1079 01:39:03,359 --> 01:39:06,319 y se repite, nada, no le gusta 1080 01:39:06,319 --> 01:39:09,199 ponemos baile y ya le gusta, ya continúa 1081 01:39:09,199 --> 01:39:12,760 vamos a volver a repetir esta validación 1082 01:39:12,760 --> 01:39:15,539 ponemos trin trin, no le gusta, inglés 1083 01:39:15,539 --> 01:39:18,359 sí, le gusta, ponemos fin 1084 01:39:18,359 --> 01:39:23,140 y bueno, nos ha funcionado por ahí. Entonces esto nos sirve para validar 1085 01:39:23,140 --> 01:39:26,520 la actividad. Luego podríamos jugar también 1086 01:39:26,520 --> 01:39:31,060 a que se meta en mayúsculas o minúsculas. Como estamos trabajando 1087 01:39:31,060 --> 01:39:34,979 todo el rato con minúsculas, pues podríamos coger y hacer una esa actividad 1088 01:39:34,979 --> 01:39:38,359 que sea igual a ese 1089 01:39:38,359 --> 01:39:42,920 actividad.toLowerCase y nos convierta 1090 01:39:42,920 --> 01:39:49,439 a minúsculas. Lo ponemos en los dos sitios y ahora ya 1091 01:39:49,439 --> 01:39:53,779 si al meterlo ponemos la primera letra en mayúsculas o ponemos 1092 01:39:53,779 --> 01:39:56,779 todo el texto en mayúsculas, pues también le vale. 1093 01:39:57,960 --> 01:40:01,060 Decimos A, ponemos aquí música. Vale, pues le gustó. 1094 01:40:02,760 --> 01:40:06,140 B, ponemos lo que sea por ahí. Y C, esto no me gusta. 1095 01:40:06,479 --> 01:40:11,930 Vamos a poner baile, pues también le gusta. Ya con el 1096 01:40:11,930 --> 01:40:22,579 to lowercase lo convierte a minúsculas. Para validar 1097 01:40:22,579 --> 01:40:26,500 los números, la sesión que tiene que ser 1 o 2, bueno, pues podemos 1098 01:40:26,500 --> 01:40:33,069 a hacer lo mismo, fijaros, podemos coger y decir, podemos validarlo 1099 01:40:33,069 --> 01:40:36,250 o bien una vez ya siendo un número o todavía validarlo 1100 01:40:36,250 --> 01:40:41,109 siendo cadena de caracteres, entonces podemos 1101 01:40:41,109 --> 01:40:44,649 coger aquí y decir, while mientras 1102 01:40:44,649 --> 01:40:48,989 ese aus equals a 1 1103 01:40:48,989 --> 01:40:52,869 o ese aus equals a 2, eso es lo que me gusta 1104 01:40:52,869 --> 01:40:56,710 ahora tenemos solo dos opciones, no tres, repite 1105 01:40:56,710 --> 01:41:00,029 la sesión, que sería 1106 01:41:00,029 --> 01:41:12,180 1 o 2, fuera esto 1107 01:41:12,180 --> 01:41:15,399 el tool over case este no tiene sentido, y luego hago aquí el parse 1108 01:41:15,399 --> 01:41:19,979 común, le vamos a validar también 1109 01:41:19,979 --> 01:41:28,010 el número de la actividad, ponemos aquí 1110 01:41:28,010 --> 01:41:34,000 un A, indica la actividad, música, ponemos 1111 01:41:34,000 --> 01:41:38,220 aquí cualquier texto, y le dice no, repite 1112 01:41:38,220 --> 01:41:42,119 la sesión, ponemos la sesión 9 y tampoco le gusta, decimos la sesión 2 1113 01:41:42,119 --> 01:41:49,239 y ahora ya sí le gusta, clase reservada. Vale, pues esa variación 1114 01:41:49,239 --> 01:42:00,140 también está ya. Bueno, ya es cuestión de adornar un poco 1115 01:42:00,140 --> 01:42:02,380 más los mensajes quizás. 1116 01:42:04,159 --> 01:42:08,119 Mirad aquí el mensaje, por ejemplo, para la sesión 1, pues aparece 1117 01:42:08,119 --> 01:42:12,199 la sesión 1, si está vacía o si no está. Bueno, pues aquí podríamos 1118 01:42:12,199 --> 01:42:18,140 meter un if, es decir, if si tenemos 1119 01:42:18,140 --> 01:42:20,899 un número de reservas por sesión, que lo tenemos aquí, 1120 01:42:22,520 --> 01:42:25,739 estamos dentro de la sesión 1, entonces decimos, si la sesión 1121 01:42:25,739 --> 01:42:29,319 1 es igual a 0, pues quiere decir que no hay reservas. 1122 01:42:30,859 --> 01:42:33,979 Entonces, sobre este mensaje 1123 01:42:33,979 --> 01:42:47,199 cogeríamos y diríamos, más 1124 01:42:47,199 --> 01:42:55,689 no tiene reservas. Esto valdrá 0, valdrá 1, 1125 01:42:55,689 --> 01:43:03,390 valdrá 2. Entonces, el shift, si resulta 1126 01:43:03,390 --> 01:43:15,310 que hay una reserva, pues lo que le metemos es este bloque 1127 01:43:15,310 --> 01:43:29,359 diciendo alumno 1 y else, quiere decir que aquí no había 1128 01:43:29,359 --> 01:43:32,539 reservas, aquí se había hecho una sola reserva, pues aquí ya 1129 01:43:32,539 --> 01:43:42,640 resulta que tenemos dos reservas. Este es el mensaje que 1130 01:43:42,640 --> 01:43:46,159 teníamos de antes. Entonces vamos a hacer una última 1131 01:43:46,159 --> 01:43:50,100 ejecución o una nueva ejecución de esto. 1132 01:43:52,039 --> 01:43:55,399 No hemos modificado la sesión 2, hemos mantenido lo que había antes. 1133 01:43:56,279 --> 01:44:00,399 Bueno, para probar a ver este modelo, este formato de mensaje, hemos 1134 01:44:00,399 --> 01:44:06,020 trabajado sobre la sesión 1. Entonces, fijaros, lo que vamos a hacer va a ser 1135 01:44:06,020 --> 01:44:14,039 poner A, la actividad de música en la sesión 1, reserva. B, la actividad 1136 01:44:14,039 --> 01:44:23,420 de música en la sesión 1, y C en la actividad de baile en la sesión 1, y le damos aquí 1137 01:44:23,420 --> 01:44:33,159 un fin. Entonces, en música, que están los dos, pues sale al 1-1, al 1-2-B, en inglés 1138 01:44:33,159 --> 01:44:37,420 que no hemos hecho reserva, dice la sesión 1 no tiene reservas, y en baile que hemos 1139 01:44:37,420 --> 01:44:42,720 hecho una, en este hemos hecho las dos sesiones, nos aparecen los dos bien, en este que no 1140 01:44:42,720 --> 01:44:47,520 hemos hecho reservas dice no tiene reservas y en este como hemos hecho una sola sesión pues 1141 01:44:47,520 --> 01:45:01,170 coge y dice reserva alumno 1c y bueno más allá de que nos quede un poquito más bonito el menú 1142 01:45:01,170 --> 01:45:07,829 menos pues yo creo que no nos queda mucho más por probar esto fijaros podríamos coger ya que 1143 01:45:07,829 --> 01:45:20,260 este código se repite dos veces una y dos pues podríamos coger y decir aquí un private void 1144 01:45:20,260 --> 01:45:27,720 menú fijaros para mostrar este menú necesitamos una variable entera que la estamos utilizando 1145 01:45:27,720 --> 01:45:39,170 ahí vamos a poner y nun al claro aquí tenemos un pequeño problema que el next line lo tenemos 1146 01:45:39,170 --> 01:45:42,890 aquí metido, bueno podemos poner simplemente esto 1147 01:45:42,890 --> 01:45:52,109 los mensajes en el menú, entonces llamo aquí a 1148 01:45:52,109 --> 01:46:04,260 menú, ahora lo repaso y os lo cuento 1149 01:46:04,260 --> 01:46:37,020 bueno, como teníamos el mismo código repetido dos veces y sería mucho 1150 01:46:37,020 --> 01:46:40,800 más útil si lo tuviéramos repetido un montón de veces, fijaros que si 1151 01:46:40,800 --> 01:46:44,920 queremos hacer un cambio en un código que se repite muchas veces y que además 1152 01:46:44,920 --> 01:46:48,859 tiene una funcionalidad bien identificada, como en este caso puede ser mostrar el menú 1153 01:46:48,859 --> 01:46:51,859 pues un pequeño cambio, tendríamos que modificarlos 1154 01:46:51,859 --> 01:46:54,000 en todas esas partes y si una se nos queda 1155 01:46:54,000 --> 01:46:55,920 sin modificar, pues se quedaría 1156 01:46:55,920 --> 01:46:57,800 incongruente el menú según fuera 1157 01:46:57,800 --> 01:46:59,340 llamado desde un sitio o desde otro 1158 01:46:59,340 --> 01:47:01,699 entonces en estos casos, y ya os digo 1159 01:47:01,699 --> 01:47:03,819 con una funcionalidad que se identifica 1160 01:47:03,819 --> 01:47:05,760 bien, pues puede pegar a hacer 1161 01:47:05,760 --> 01:47:07,979 un método 1162 01:47:07,979 --> 01:47:09,819 este método, como es 1163 01:47:09,819 --> 01:47:11,840 de uso para dentro de la clase agenda 1164 01:47:11,840 --> 01:47:13,260 lo podemos definir como private 1165 01:47:13,260 --> 01:47:15,680 no devuelve nada y bueno 1166 01:47:15,680 --> 01:47:17,720 pues hace este, está imprimido por 1167 01:47:17,720 --> 01:47:23,760 pantalla estos tres, estos tres mensajitos que teníamos antes dentro del código. Entonces, si le 1168 01:47:23,760 --> 01:47:29,180 damos aquí, fijaros, pues nada, el comportamiento sigue siendo el mismo, pero llamamos al menú de 1169 01:47:29,180 --> 01:47:37,020 diferentes sitios. ¿Veis? Y aquí, esta es la llamada al menú desde un sitio y esta es la llamada desde otro, 1170 01:47:37,180 --> 01:47:49,250 desde dentro del while y anterior al while. Y nada, pues esto, esta era la tarea 4. Al final he acelerado 1171 01:47:49,250 --> 01:47:54,369 un poquillo para poder terminarla, pero bueno, hemos ido despacito intentando contar, haciendo un 1172 01:47:54,369 --> 01:47:56,130 repaso a todo lo que es la parte de teoría. 1173 01:47:57,569 --> 01:47:58,149 ¿Tenéis alguna 1174 01:47:58,149 --> 01:48:00,489 pregunta? ¿Alguna prueba que queréis que hagamos al código? 1175 01:48:01,270 --> 01:48:02,210 ¿O alguna cosa que haya 1176 01:48:02,210 --> 01:48:03,829 quedado por ahí pendiente? ¿Qué se os ocurra? 1177 01:48:09,460 --> 01:48:10,079 Sí, dime. 1178 01:48:26,800 --> 01:48:27,739 ¿Un try-catch? 1179 01:48:39,250 --> 01:48:40,710 Sí, no sé muy bien 1180 01:48:40,710 --> 01:48:41,590 por qué, la verdad. 1181 01:48:42,310 --> 01:48:43,470 Te lo pediría. 1182 01:48:45,590 --> 01:48:45,909 Luego 1183 01:48:45,909 --> 01:48:48,550 echo un ojo de nuevo 1184 01:48:48,550 --> 01:48:50,729 a tu tarea, a ver si me hago la idea 1185 01:48:50,729 --> 01:48:51,770 de por qué puede ser. 1186 01:48:52,850 --> 01:48:54,010 Porque, sí. 1187 01:48:54,930 --> 01:48:58,960 sé 1188 01:48:58,960 --> 01:49:01,680 sé donde, vale 1189 01:49:01,680 --> 01:49:04,100 pues lo echo un ojo y a ver si me hago la idea 1190 01:49:04,100 --> 01:49:06,039 y os puedo decir, te puedo decir 1191 01:49:06,039 --> 01:49:30,789 bueno, siempre 1192 01:49:30,789 --> 01:49:32,569 siempre solemos preguntar 1193 01:49:32,569 --> 01:49:34,390 un pequeño algoritmo, no 1194 01:49:34,390 --> 01:49:35,529 muy complicado 1195 01:49:35,529 --> 01:49:38,590 pero sí, un pequeño algoritmo y claro pues 1196 01:49:38,590 --> 01:49:40,369 un poquillo, pero me fijo en las estructuras 1197 01:49:40,369 --> 01:49:43,010 de todas formas, es cierto 1198 01:49:43,010 --> 01:49:44,390 que no se puede probar, pero 1199 01:49:44,390 --> 01:49:46,329 tampoco miramos el código 1200 01:49:46,329 --> 01:49:48,750 como si tuviera que compilar, ¿sabes? 1201 01:49:48,750 --> 01:49:50,970 hombre, que se vea que es Java, que tiene sentido 1202 01:49:50,970 --> 01:49:53,149 pero bueno, pues si se escapa alguna cosilla 1203 01:49:53,149 --> 01:49:54,210 nos fijamos más 1204 01:49:54,210 --> 01:49:56,590 en la funcionalidad más que 1205 01:49:56,590 --> 01:49:59,369 en la sintaxis en ese caso, estricta 1206 01:49:59,369 --> 01:50:00,829 claro, yo que sé, pues 1207 01:50:00,829 --> 01:50:02,069 los wilds son como son, ¿no? 1208 01:50:02,729 --> 01:50:05,170 pero bueno, que si se ha escapado 1209 01:50:05,170 --> 01:50:06,789 una llave en algún sitio, pues 1210 01:50:06,789 --> 01:50:07,710 no está mal 1211 01:50:07,710 --> 01:50:17,720 bueno, pues nada, si no tenéis 1212 01:50:17,720 --> 01:50:19,920 más cosas, por aquí vamos cerrando 1213 01:50:19,920 --> 01:50:21,760 la semana que viene ya empezamos 1214 01:50:21,760 --> 01:50:23,779 a hablar sobre contenidos del 1215 01:50:23,779 --> 01:50:25,619 tema 6 y hasta el tema 6 1216 01:50:25,619 --> 01:50:28,260 lo tenemos, tenemos el examen 1217 01:50:28,260 --> 01:50:30,300 del próximo, luego en febrero 1218 01:50:30,300 --> 01:50:32,239 lo del tema 6 1219 01:50:32,239 --> 01:50:34,220 en realidad durante este tiempo 1220 01:50:34,220 --> 01:50:35,760 lo hemos venido también trabajando 1221 01:50:35,760 --> 01:50:38,060 no tiene grandes cosas nuevas 1222 01:50:38,060 --> 01:50:40,359 bueno, pues volver a repasar 1223 01:50:40,359 --> 01:50:41,420 y volver a hablar sobre 1224 01:50:41,420 --> 01:50:43,680 conceptos que tenemos ahí en Java 1225 01:50:43,680 --> 01:50:45,960 pero será un poco volver a repetir 1226 01:50:45,960 --> 01:50:48,180 con excepción de lo que sí que aparece 1227 01:50:48,180 --> 01:50:49,760 nuevo, que son las expresiones regulares 1228 01:50:49,760 --> 01:50:52,079 y es por eso que en la siguiente 1229 01:50:52,079 --> 01:50:54,319 tutoría, a no ser que me dirijáis 1230 01:50:54,319 --> 01:50:56,520 por otro lado, o tengáis especiales 1231 01:50:56,520 --> 01:50:58,279 dudas de cosas, pues sí que 1232 01:50:58,279 --> 01:51:00,539 trabajaremos un poco las expresiones 1233 01:51:00,539 --> 01:51:01,960 regulares la semana que viene 1234 01:51:01,960 --> 01:51:08,430 Bueno, pues nada, voy a cerrar por aquí ya la 1235 01:51:08,430 --> 01:51:09,029 grabación