En esta sesión, revisaremos la sintaxis Pharo.
La revisaremos por completo usando un ejemplo concreto,
el ejemplo de un simple aplicación HTTP desde el mundo real.
Analizaremos el código y revisaremos la sintaxis de Pharo a través de él.
Esta aplicación es una simple aplicación web
que muestra información sobre libros.
Le daré el primer ejemplo. Utilizaré el framework Zinc,
un framework HTTP que estudiaremos en otro curso.
Tiene dos partes: cliente y servidor
Puede hacer solicitudes HTTP, etc.
Primero, podemos ver que ZnClient es una clase.
Pues comienza con la mayúscula Z como vimos anteriormente.
Nombres de clase y variables globales. Comienzan con mayúsculas.
ZnClient es una clase.
Si envia el mensaje "new" a esta clase
creará una nueva instancia de ZnClient.
A esta nueva instancia, le enviaremos un primer mensaje "url:" que tiene un parámetro,
aqui una cadena de caracteres.
Luego usaremos la cascada.
Le recuerdo ese ";" al final significa:
envía un nuevo mensaje al mismo receptor
Este trozo de código simula ¿Lo qué haría su navegador?
cuando escribe una url y presiona enter.
Si escribo una url y presiono enter,
contacto con el servidor de esta aplicación web
que devuelve una respuesta HTTP:
en este caso, la información. De un libro, el libro número 1.
Le daré otro ejemplo,
una segunda solicitud construida con Pharo y ZnClient.
siempre igual: instanciamos un objeto Znclient.
le envía mensajes mediante cascada.
Y luego, puede ver algo que ya hemos estudiado
en Pharo, los mensajes de palabras clave,
que significa que el nombre del método es "formAt: put:"
Es el equivalente en la sintaxis típica de Java
formAtPut el nombre del método todo pegado.
Y todos los argumentos entre paréntesis.
En esta diapositiva, me gustaría mostrarle
el código completo de esta aplicación web
construida con zinc.
Le mostraré algunas partes de este código, punto a punto.
En primer lugar, la primera parte corresponde a la configuración del servidor.
En la primera línea,
hay declaraciones de variables locales.
Recuerde que comienzan con minúsculas.
books y teapot son dos variables locales. situadas entre barras verticales.
Luego, hay asignaciones Aquí está la primera.
Es ":=" en Pharo.
Puede tener símbolos.
En el punto numero tres hay "#port"
que se encuentra aquí en el código.
Se corresponde con un símbolo, una cadena única.
Se creó solo una vez.
Hay mensajes enviados a la clase Teapot.
Por ejemplo, la clase Teapot está aquí.
Y puedo enviar el mensaje "configure:"
Mira "configure:"
Déjame recordarle que ":" marca la presencia de un argumento
que envía a este método.
Aqui el argumento enpieza con una llave
y termina con otra llave.
Entonces, ¿qué se encuentra entre llaves? es una tabla dinámica
Todo esto entre llaves.
Cada expresión separada por "." será evaluada
y construiremos una tabla con los resultados de cada expresión.
Solo hay un argumento en el método configure:
Y dentro de esta tabla dinámica entre llaves,
usará una flecha para construir objetos Association.
Esto es, una clave, un valor.
Entonces, para que el servidor funcione,
no solo definirá la configuración del servidor
sino también rutas.
Lo explicaré usando un ejemplo más pequeño: Este es un trozo del código completo.
Si quiero que mi solicitud procese una URL como esta,
que termina con libros/1,
si quiero la información en el libro 1, por ejemplo,
Defino una ruta en mi solicitud de Zinc.
Cuando recibo una solicitud del tipo GET,
que comienza con / books / y alguna cosa que és un entero,
puede verlo Entonces ejecuta este bloque de código.
Recuerda que un bloque comienza y termina en corchetes.
Es un método anónimo. que puede tomar un parámetro:
en este caso, el parámetro se llama ":request"
y está separado por una barra vertical.
Luego, el cuerpo del bloque se encuentra aquí.
Solo hay una expresión aquí, ésta.
Entonces, se envía el mensaje "at:" al objeto books.
¿Qué libro quieres? en la colección de libros?
Queremos el libro cuya id. se pasó como parámetro en la url.
Pediré la solicitud.
La variable aquí es el parámetro del bloque definido al inicio.
Obtengo el elemento llamado id en esta solicitud
Convierto este elemento (recuerde que es un entero).
Lo convierto en una cadena.
Esto me permite obtener el libro 1.
Para concluir, hemos revisado Toda la sintaxis Pharo
en esta clase.
El objetivo era interesarse en la sintaxis,
pero también pudimos re-descubrir la sintaxis a través de un paquete
que es bastante interesante y divertido para programar, Teapot.
Descubrelo por ti mismo. Puede descargarlo desde SmalltalkHub.
Puede construir Aplicaciones HTTP muy fácilmente.
Además, es un paquete construido a base de Zinc.
Zinc es una de las bibliotecas solidas en Pharo
para hacer aplicaciones web más complejas,
como veremos en los siguientes cursos.