1 00:00:00,480 --> 00:00:03,680 En esta sesión, revisaremos la sintaxis Pharo. 2 00:00:03,840 --> 00:00:07,000 La revisaremos por completo usando un ejemplo concreto, 3 00:00:07,160 --> 00:00:11,480 el ejemplo de un simple aplicación HTTP desde el mundo real. 4 00:00:11,640 --> 00:00:15,960 Analizaremos el código y revisaremos la sintaxis de Pharo a través de él. 5 00:00:16,720 --> 00:00:20,240 Esta aplicación es una simple aplicación web 6 00:00:20,400 --> 00:00:23,160 que muestra información sobre libros. 7 00:00:23,320 --> 00:00:26,840 Le daré el primer ejemplo. Utilizaré el framework Zinc, 8 00:00:27,000 --> 00:00:30,440 un framework HTTP que estudiaremos en otro curso. 9 00:00:30,600 --> 00:00:34,080 Tiene dos partes: cliente y servidor 10 00:00:34,240 --> 00:00:37,440 Puede hacer solicitudes HTTP, etc. 11 00:00:37,600 --> 00:00:41,880 Primero, podemos ver que ZnClient es una clase. 12 00:00:42,040 --> 00:00:45,280 Pues comienza con la mayúscula Z como vimos anteriormente. 13 00:00:45,440 --> 00:00:48,920 Nombres de clase y variables globales. Comienzan con mayúsculas. 14 00:00:49,080 --> 00:00:50,360 ZnClient es una clase. 15 00:00:50,520 --> 00:00:53,680 Si envia el mensaje "new" a esta clase 16 00:00:53,840 --> 00:00:56,800 creará una nueva instancia de ZnClient. 17 00:00:56,960 --> 00:01:01,880 A esta nueva instancia, le enviaremos un primer mensaje "url:" que tiene un parámetro, 18 00:01:02,040 --> 00:01:03,880 aqui una cadena de caracteres. 19 00:01:04,040 --> 00:01:06,760 Luego usaremos la cascada. 20 00:01:06,920 --> 00:01:09,680 Le recuerdo ese ";" al final significa: 21 00:01:09,840 --> 00:01:13,520 envía un nuevo mensaje al mismo receptor 22 00:01:15,040 --> 00:01:20,000 Este trozo de código simula ¿Lo qué haría su navegador? 23 00:01:20,160 --> 00:01:23,040 cuando escribe una url y presiona enter. 24 00:01:23,200 --> 00:01:25,760 Si escribo una url y presiono enter, 25 00:01:25,920 --> 00:01:28,600 contacto con el servidor de esta aplicación web 26 00:01:28,760 --> 00:01:31,400 que devuelve una respuesta HTTP: 27 00:01:31,560 --> 00:01:36,160 en este caso, la información. De un libro, el libro número 1. 28 00:01:38,240 --> 00:01:40,200 Le daré otro ejemplo, 29 00:01:40,360 --> 00:01:43,480 una segunda solicitud construida con Pharo y ZnClient. 30 00:01:43,640 --> 00:01:47,360 siempre igual: instanciamos un objeto Znclient. 31 00:01:47,520 --> 00:01:50,560 le envía mensajes mediante cascada. 32 00:01:50,720 --> 00:01:54,320 Y luego, puede ver algo que ya hemos estudiado 33 00:01:54,480 --> 00:01:56,920 en Pharo, los mensajes de palabras clave, 34 00:01:57,080 --> 00:02:01,800 que significa que el nombre del método es "formAt: put:" 35 00:02:01,960 --> 00:02:05,800 Es el equivalente en la sintaxis típica de Java 36 00:02:05,960 --> 00:02:08,960 formAtPut el nombre del método todo pegado. 37 00:02:09,120 --> 00:02:12,600 Y todos los argumentos entre paréntesis. 38 00:02:15,720 --> 00:02:17,880 En esta diapositiva, me gustaría mostrarle 39 00:02:18,040 --> 00:02:21,160 el código completo de esta aplicación web 40 00:02:21,320 --> 00:02:23,200 construida con zinc. 41 00:02:25,480 --> 00:02:29,200 Le mostraré algunas partes de este código, punto a punto. 42 00:02:29,360 --> 00:02:33,400 En primer lugar, la primera parte corresponde a la configuración del servidor. 43 00:02:33,560 --> 00:02:37,160 En la primera línea, 44 00:02:37,320 --> 00:02:39,760 hay declaraciones de variables locales. 45 00:02:39,920 --> 00:02:43,080 Recuerde que comienzan con minúsculas. 46 00:02:43,240 --> 00:02:47,880 books y teapot son dos variables locales. situadas entre barras verticales. 47 00:02:48,040 --> 00:02:52,520 Luego, hay asignaciones Aquí está la primera. 48 00:02:52,680 --> 00:02:54,600 Es ":=" en Pharo. 49 00:02:55,640 --> 00:02:57,480 Puede tener símbolos. 50 00:02:57,640 --> 00:03:00,320 En el punto numero tres hay "#port" 51 00:03:00,480 --> 00:03:03,320 que se encuentra aquí en el código. 52 00:03:03,480 --> 00:03:06,520 Se corresponde con un símbolo, una cadena única. 53 00:03:06,680 --> 00:03:08,360 Se creó solo una vez. 54 00:03:09,120 --> 00:03:12,560 Hay mensajes enviados a la clase Teapot. 55 00:03:12,720 --> 00:03:15,400 Por ejemplo, la clase Teapot está aquí. 56 00:03:15,560 --> 00:03:17,960 Y puedo enviar el mensaje "configure:" 57 00:03:18,120 --> 00:03:19,320 Mira "configure:" 58 00:03:19,480 --> 00:03:23,160 Déjame recordarle que ":" marca la presencia de un argumento 59 00:03:23,320 --> 00:03:26,520 que envía a este método. 60 00:03:26,680 --> 00:03:31,240 Aqui el argumento enpieza con una llave 61 00:03:31,400 --> 00:03:33,400 y termina con otra llave. 62 00:03:33,560 --> 00:03:37,960 Entonces, ¿qué se encuentra entre llaves? es una tabla dinámica 63 00:03:38,120 --> 00:03:40,200 Todo esto entre llaves. 64 00:03:40,360 --> 00:03:44,640 Cada expresión separada por "." será evaluada 65 00:03:44,800 --> 00:03:48,400 y construiremos una tabla con los resultados de cada expresión. 66 00:03:49,000 --> 00:03:51,880 Solo hay un argumento en el método configure: 67 00:03:52,040 --> 00:03:57,600 Y dentro de esta tabla dinámica entre llaves, 68 00:03:57,760 --> 00:04:03,720 usará una flecha para construir objetos Association. 69 00:04:03,880 --> 00:04:05,800 Esto es, una clave, un valor. 70 00:04:10,440 --> 00:04:13,160 Entonces, para que el servidor funcione, 71 00:04:13,320 --> 00:04:16,120 no solo definirá la configuración del servidor 72 00:04:16,280 --> 00:04:18,920 sino también rutas. 73 00:04:19,080 --> 00:04:23,800 Lo explicaré usando un ejemplo más pequeño: Este es un trozo del código completo. 74 00:04:23,960 --> 00:04:27,600 Si quiero que mi solicitud procese una URL como esta, 75 00:04:28,960 --> 00:04:31,400 que termina con libros/1, 76 00:04:31,560 --> 00:04:34,600 si quiero la información en el libro 1, por ejemplo, 77 00:04:34,760 --> 00:04:38,720 Defino una ruta en mi solicitud de Zinc. 78 00:04:38,880 --> 00:04:42,600 Cuando recibo una solicitud del tipo GET, 79 00:04:42,760 --> 00:04:47,680 que comienza con / books / y alguna cosa que és un entero, 80 00:04:47,840 --> 00:04:52,400 puede verlo Entonces ejecuta este bloque de código. 81 00:04:52,560 --> 00:04:57,600 Recuerda que un bloque comienza y termina en corchetes. 82 00:04:57,760 --> 00:05:00,840 Es un método anónimo. que puede tomar un parámetro: 83 00:05:01,000 --> 00:05:05,080 en este caso, el parámetro se llama ":request" 84 00:05:05,240 --> 00:05:08,280 y está separado por una barra vertical. 85 00:05:09,000 --> 00:05:12,240 Luego, el cuerpo del bloque se encuentra aquí. 86 00:05:12,400 --> 00:05:15,040 Solo hay una expresión aquí, ésta. 87 00:05:15,200 --> 00:05:19,480 Entonces, se envía el mensaje "at:" al objeto books. 88 00:05:23,600 --> 00:05:27,840 ¿Qué libro quieres? en la colección de libros? 89 00:05:28,000 --> 00:05:31,640 Queremos el libro cuya id. se pasó como parámetro en la url. 90 00:05:31,800 --> 00:05:33,520 Pediré la solicitud. 91 00:05:33,680 --> 00:05:38,440 La variable aquí es el parámetro del bloque definido al inicio. 92 00:05:38,600 --> 00:05:42,440 Obtengo el elemento llamado id en esta solicitud 93 00:05:42,600 --> 00:05:45,480 Convierto este elemento (recuerde que es un entero). 94 00:05:45,640 --> 00:05:47,360 Lo convierto en una cadena. 95 00:05:47,520 --> 00:05:51,720 Esto me permite obtener el libro 1. 96 00:05:52,600 --> 00:05:56,760 Para concluir, hemos revisado Toda la sintaxis Pharo 97 00:05:56,920 --> 00:05:58,320 en esta clase. 98 00:05:58,480 --> 00:06:01,040 El objetivo era interesarse en la sintaxis, 99 00:06:01,200 --> 00:06:04,840 pero también pudimos re-descubrir la sintaxis a través de un paquete 100 00:06:05,000 --> 00:06:08,960 que es bastante interesante y divertido para programar, Teapot. 101 00:06:09,120 --> 00:06:12,920 Descubrelo por ti mismo. Puede descargarlo desde SmalltalkHub. 102 00:06:13,080 --> 00:06:17,400 Puede construir Aplicaciones HTTP muy fácilmente. 103 00:06:17,560 --> 00:06:21,920 Además, es un paquete construido a base de Zinc. 104 00:06:22,080 --> 00:06:26,720 Zinc es una de las bibliotecas solidas en Pharo 105 00:06:26,880 --> 00:06:29,240 para hacer aplicaciones web más complejas, 106 00:06:29,400 --> 00:06:32,480 como veremos en los siguientes cursos.