1 00:00:00,040 --> 00:00:02,880 Este será un resumen de la sintaxis 2 00:00:03,040 --> 00:00:06,240 Le mostraremos la totalidad de la sintaxis ... 3 00:00:06,400 --> 00:00:09,440 No se estrese si no la entiende por completo. 4 00:00:09,600 --> 00:00:11,400 Repasaremos todo de nuevo. 5 00:00:11,560 --> 00:00:15,360 La idea es mostrarle todo lo que hay en Pharo. 6 00:00:16,040 --> 00:00:20,000 Vamos a ver los principales elementos sintácticos. 7 00:00:20,160 --> 00:00:22,760 Veremos que hay 3 tipos de mensajes. 8 00:00:22,920 --> 00:00:25,280 Y bueno, mire la sintaxis del bloque, 9 00:00:25,440 --> 00:00:27,440 una parte esencial de Pharo. 10 00:00:27,600 --> 00:00:32,000 No se preocupe si no entiende todo, repetiremos todos los puntos. 11 00:00:33,120 --> 00:00:37,320 Solo para recordarle, Tiene toda la sintaxis en esta diapositiva. 12 00:00:37,480 --> 00:00:40,040 Puedo entrar en los detalles un poco ahora. 13 00:00:40,200 --> 00:00:43,960 Aquí hay una definición de método, exampleWithNumber. 14 00:00:44,120 --> 00:00:46,120 Y tiene un argumento. 15 00:00:46,360 --> 00:00:51,040 Tengo definiciones de variables locales con barras verticales. 16 00:00:51,200 --> 00:00:54,040 Tengo el retorno, que me permite dar un valor. 17 00:00:54,200 --> 00:00:57,400 Tengo ciclos, una afectación ... 18 00:00:57,560 --> 00:01:01,640 El punto, por ejemplo ese es un separador de instrucciones. 19 00:01:03,120 --> 00:01:05,600 Veremos todo esto. 20 00:01:07,040 --> 00:01:10,080 Vamos a empezar con el tradicional hola mundo. 21 00:01:10,240 --> 00:01:12,000 Aquí, si lo desea ... 22 00:01:12,160 --> 00:01:16,400 Puede ejecutar todas las instrucciones en Pharo usted mismo 23 00:01:16,560 --> 00:01:18,360 para ver cuál es el resultado. 24 00:01:18,520 --> 00:01:21,440 Entonces aquí tengo una cadena, 25 00:01:21,840 --> 00:01:25,880 que convierto en un morph, un elemento gráfico, 26 00:01:26,040 --> 00:01:29,640 y lo pido abrirse en una ventana 27 00:01:29,840 --> 00:01:33,320 Así que envío asMorph al objeto cadena. 28 00:01:33,480 --> 00:01:36,080 Y envío openInWindow 29 00:01:36,240 --> 00:01:37,920 al morph resultante. 30 00:01:38,080 --> 00:01:41,480 Entonces tenemos dos envíos de mensajes y un objeto cadena. 31 00:01:42,520 --> 00:01:43,960 Un ejemplo más complicado. 32 00:01:44,120 --> 00:01:47,920 Imagine que quiere tomar el logo de Pharo desde la web. 33 00:01:48,280 --> 00:01:50,800 Bueno, lo hace de esta manera. 34 00:01:50,960 --> 00:01:56,840 Uno hace ZnEasy getPng: con una cadena que representa la URL 35 00:01:57,000 --> 00:02:00,000 del recurso que desea leer. 36 00:02:00,160 --> 00:02:04,440 Y una vez más lo convierte en un objeto gráfico 37 00:02:04,600 --> 00:02:06,760 y le píde que se abra en una ventana. 38 00:02:06,920 --> 00:02:09,200 Entonces vemos que ZnEasy es una clase 39 00:02:09,360 --> 00:02:12,480 porque las clases comienzan con mayúscula. 40 00:02:12,640 --> 00:02:17,800 Los dos puntos del mensaje getPng: significa que estoy esperando un argumento, 41 00:02:17,960 --> 00:02:22,120 que es la cadena http://pharo.org 42 00:02:22,280 --> 00:02:27,120 Esta cadena es el argumento del método getPng: 43 00:02:28,280 --> 00:02:32,520 Los mensajes asMorph y openInWindow 44 00:02:32,680 --> 00:02:35,400 se leen de izquierda a derecha. 45 00:02:35,800 --> 00:02:38,640 Entonces puede cortar y pegar este código. 46 00:02:38,800 --> 00:02:41,000 o vuelva a escribirlo en Pharo, 47 00:02:41,160 --> 00:02:43,760 y obtendrá el logo de Pharo. 48 00:02:43,920 --> 00:02:47,200 Entonces, ¿qué elementos sintácticos hay en Pharo? 49 00:02:47,360 --> 00:02:50,680 Tiene comentarios, que comienzan con comillas dobles. 50 00:02:50,840 --> 00:02:52,200 Ese es un comentario 51 00:02:52,360 --> 00:02:55,840 Los caracteres siempre van precedidos por un signo de dólar 52 00:02:56,000 --> 00:02:58,080 $A es el caracter A. 53 00:02:58,240 --> 00:03:02,280 Las cadenas inician y terminan con una comilla simple. 54 00:03:03,400 --> 00:03:05,920 Tiene símbolos, que son cadenas únicas. 55 00:03:06,080 --> 00:03:10,320 Estos comienzan así, con el hashtag 56 00:03:10,480 --> 00:03:12,840 #a es el símbolo a. 57 00:03:13,000 --> 00:03:14,600 Hay arreglos literales. 58 00:03:14,760 --> 00:03:19,200 Aquí tengo uno con 12, 23 y 36. Tres elementos 59 00:03:19,560 --> 00:03:22,280 Los enteros tienen varias representaciones, 60 00:03:22,440 --> 00:03:24,600 pero no nos detendremos en esto. 61 00:03:24,760 --> 00:03:27,360 Por lo general usamos representaciones en la base 10 62 00:03:27,520 --> 00:03:30,240 Pero si quieres uno en la base 2, está bien. 63 00:03:30,400 --> 00:03:32,760 Tienes real Esto es lo mismo. 64 00:03:32,920 --> 00:03:35,200 Puede encontrar la sintaxis si lo necesita. 65 00:03:35,360 --> 00:03:38,080 Tienes booleanos, con verdadero y falso. 66 00:03:38,240 --> 00:03:39,800 Tienes indefinido 67 00:03:39,960 --> 00:03:43,640 El null de Java es nil en Pharo. 68 00:03:43,800 --> 00:03:47,200 Es una instancia de la clase UndefinedObject. 69 00:03:47,480 --> 00:03:49,320 Y tiene puntos. 70 00:03:49,480 --> 00:03:52,720 Esto se describe en Pharo de la forma 71 00:03:52,880 --> 00:03:56,440 10@200, por ejemplo. 72 00:03:56,600 --> 00:03:59,880 Entonces estoy creando el punto 10, que es 10 en la x, 73 00:04:00,040 --> 00:04:02,440 y 200 en la y. 74 00:04:03,680 --> 00:04:07,040 Entonces, hemos visto los elementos esenciales de la sintaxis 75 00:04:07,200 --> 00:04:09,840 Ahora tenemos los constructos de la lengua 76 00:04:10,000 --> 00:04:13,040 Tienes declaración de variable temporal. 77 00:04:13,200 --> 00:04:16,200 Es una barra vertical seguido de otra barra vertical. 78 00:04:16,360 --> 00:04:19,320 Asignación Es un signo de dos puntos y un igual. 79 00:04:19,480 --> 00:04:22,520 En la variable var pongo aValue. 80 00:04:22,720 --> 00:04:24,640 Tengo mensajes en mi sistema. 81 00:04:24,800 --> 00:04:26,280 ¿Cómo los separo? 82 00:04:26,440 --> 00:04:28,240 Con un punto 83 00:04:28,400 --> 00:04:30,760 Cuando quiero una secuencia de mensajes. 84 00:04:30,920 --> 00:04:32,000 Hay retorno, 85 00:04:32,160 --> 00:04:34,560 donde una función o método da un valor 86 00:04:34,720 --> 00:04:39,520 Yo uso el sombrero pequeño, que se llama caret en inglés. 87 00:04:39,680 --> 00:04:41,200 Entonces tiene bloques, 88 00:04:41,360 --> 00:04:45,760 que, técnicamente hablando, son cierres léxicos, 89 00:04:46,480 --> 00:04:49,840 y que puedes tomar como métodos anónimos. 90 00:04:50,000 --> 00:04:53,120 Le mostraré lo que es un bloque. 91 00:04:53,280 --> 00:04:55,880 Se define con corchetes. 92 00:04:56,680 --> 00:04:59,560 Y se ejecuta con el valor del mensaje. 93 00:04:59,720 --> 00:05:01,160 Veremos esto. 94 00:05:01,320 --> 00:05:03,960 Ahí tiene todas las construcciones. 95 00:05:05,240 --> 00:05:08,520 Entonces, ¿cuál es la esencia de un programa en Pharo? 96 00:05:08,680 --> 00:05:12,240 Esta creando objetos mediante el uso de mensajes, 97 00:05:12,400 --> 00:05:14,320 enviando mensajes a estos objetos, 98 00:05:14,480 --> 00:05:17,280 y, de vez en cuando, usando bloques o métodos anónimos. 99 00:05:17,440 --> 00:05:18,680 Eso es todo. 100 00:05:19,800 --> 00:05:23,080 Hay tres tipos de mensaje en Pharo. ¿Por qué? 101 00:05:23,240 --> 00:05:26,560 Con el fin de minimizar El número de paréntesis utilizados. 102 00:05:26,720 --> 00:05:28,320 Es bastante simple 103 00:05:28,480 --> 00:05:32,360 Un mensaje unario es siempre un receptor y un selector. 104 00:05:32,520 --> 00:05:35,480 Aquí, por ejemplo, he dicho que quiero 9 al cuadrado. 105 00:05:35,640 --> 00:05:37,680 Quiero la fecha de hoy. 106 00:05:37,840 --> 00:05:41,480 Envío el mensaje hoy a la clase Fecha. 107 00:05:41,960 --> 00:05:43,800 No hay argumento 108 00:05:43,960 --> 00:05:46,080 Luego está el mensaje binario, 109 00:05:46,240 --> 00:05:50,800 que también toma la forma de un receptor, selector y argumento. 110 00:05:51,160 --> 00:05:52,640 Pero el selector será 111 00:05:52,800 --> 00:05:57,320 mas, menos, tilde, igual, diagonal ... Ese tipo de cosas. 112 00:05:57,480 --> 00:06:01,080 Todos esos signos matemáticos son para mensajes binarios 113 00:06:01,360 --> 00:06:04,560 Aquí vemos 1 + 2. Este es un mensaje. 114 00:06:04,720 --> 00:06:08,080 Enviar el mensaje + al objeto 1 con argumento objeto 2. 115 00:06:08,240 --> 00:06:11,240 @ para la creación de un punto También es un mensaje, 116 00:06:11,400 --> 00:06:12,760 un mensaje binario 117 00:06:12,920 --> 00:06:16,160 Aquí creo el punto 3@4 118 00:06:16,320 --> 00:06:18,640 enviando el mensaje @. 119 00:06:18,800 --> 00:06:22,200 Después tiene lo que llamamos mensajes de palabras clave. 120 00:06:22,360 --> 00:06:24,920 Un mensaje de palabra clave toma la forma 121 00:06:25,080 --> 00:06:28,840 de receptor: key1: arg1 key2: arg2. 122 00:06:29,000 --> 00:06:31,440 Un ejemplo es ... 123 00:06:31,600 --> 00:06:34,720 es 2 entre 10 y 20 124 00:06:35,000 --> 00:06:38,760 Si lo escribió en Java o C Sería así ... 125 00:06:39,000 --> 00:06:44,320 Escribiría betweenAnd ... 126 00:06:44,480 --> 00:06:48,920 Luego, entre paréntesis, escribiría (10, 20). 127 00:06:49,080 --> 00:06:53,720 En Pharo lo expresa en forma de clave y clave. 128 00:06:53,880 --> 00:06:57,520 Volveremos a ver esto, pero le da una idea de la sintaxis. 129 00:06:58,800 --> 00:07:02,680 Hay una precedencia entre mensajes, 130 00:07:02,840 --> 00:07:06,480 el sistema ejecutará en prioridad los paréntesis, 131 00:07:06,640 --> 00:07:09,200 después el unario, los mensajes binarios y de palabras clave. 132 00:07:09,360 --> 00:07:10,160 ¿Por qué? 133 00:07:10,320 --> 00:07:13,560 Para evitar escribir demasiados paréntesis. 134 00:07:13,720 --> 00:07:17,880 Podríamos haber tenido un sistema con paréntesis por todas partes, 135 00:07:18,040 --> 00:07:20,000 pero el código sería ilegible. 136 00:07:20,960 --> 00:07:24,680 Volveré sobre cada tipo de mensaje de una manera simple 137 00:07:24,840 --> 00:07:27,680 Este mensaje único, 10000 factorial. 138 00:07:27,840 --> 00:07:30,160 Pruébelo, es un número muy grande. 139 00:07:30,320 --> 00:07:33,640 Envío el mensaje factorial al objeto 10000. 140 00:07:33,800 --> 00:07:36,240 No hay argumento, Es un mensaje unario. 141 00:07:36,880 --> 00:07:41,840 De forma similar, un mensaje binario. 1 + 3 es un mensaje, un mensaje binario. 142 00:07:42,000 --> 00:07:46,720 El selector, El nombre del método es +. 143 00:07:47,360 --> 00:07:52,040 Envío el mensaje + al objeto 1 con el objeto 3 como argumento. 144 00:07:53,120 --> 00:07:55,960 Un mensaje de palabra clave, como expliqué antes ... 145 00:07:56,120 --> 00:08:00,360 Se lo diré de nuevo; la enseñanza tiene que ver con la repetición. 146 00:08:00,800 --> 00:08:04,520 Tengo un mensaje de palabra clave con palabra clave y palabra clave, 147 00:08:04,680 --> 00:08:07,560 que es el mensaje, con los argumentos, 148 00:08:07,720 --> 00:08:11,080 que flotan dentro del mensaje. 149 00:08:11,240 --> 00:08:14,680 La idea es tener una sintaxis que los niños pueden usar 150 00:08:14,840 --> 00:08:18,320 y tener algo similar a ingles 151 00:08:18,480 --> 00:08:24,280 Entonces puede poner los argumentos dentro de sus mensajes 152 00:08:25,440 --> 00:08:29,120 Como ejemplo, imagine que estoy enviando una solicitud HTTP. 153 00:08:29,280 --> 00:08:32,880 ZnClient es un servidor HTTP para Pharo. 154 00:08:33,040 --> 00:08:35,880 Entonces creo una instancia de servidor Zn. 155 00:08:36,040 --> 00:08:40,680 Entonces new es un mensaje unario, No hay argumento, ni dos puntos. 156 00:08:41,560 --> 00:08:46,720 url es un mensaje de palabras clave, hay dos puntos. 157 00:08:46,880 --> 00:08:49,880 queryAt: put: es otro mensaje 158 00:08:50,040 --> 00:08:52,600 Es otro mensaje de palabra clave. 159 00:08:52,760 --> 00:08:54,880 Y get es un mensaje unario. 160 00:08:55,360 --> 00:08:59,400 Lo que también podemos ver en estos ejemplo son puntos y comas 161 00:08:59,760 --> 00:09:02,120 Llamamos a esto una cascada, 162 00:09:02,880 --> 00:09:05,800 que envía todos los mensajes al mismo objeto 163 00:09:05,960 --> 00:09:08,920 No necesita una variable temporal 164 00:09:09,080 --> 00:09:12,320 Y puede escribir un código más compacto. 165 00:09:13,720 --> 00:09:17,080 Tiene que entender que los mensajes están en todas partes 166 00:09:17,240 --> 00:09:20,880 Condicionales, ciclos, iteradores y La concurrencia se expresa como mensajes. 167 00:09:21,040 --> 00:09:23,480 Mi explicacion sobre esos tres mensajes 168 00:09:23,640 --> 00:09:25,560 aplica en todos los ámbitos. 169 00:09:25,720 --> 00:09:27,760 Es la piedra angular del sistema. 170 00:09:27,920 --> 00:09:31,000 No hay nada mas que estos mensajes 171 00:09:31,520 --> 00:09:32,880 Echemos un vistazo. 172 00:09:33,040 --> 00:09:35,520 Me he tomado la tonta definición de factorial aquí. 173 00:09:35,680 --> 00:09:37,200 ¿Cómo lo defino? 174 00:09:37,360 --> 00:09:40,160 Defino mi método factorial. 175 00:09:40,320 --> 00:09:43,840 Puse un comentario para el método. Comillas dobles. 176 00:09:44,000 --> 00:09:45,360 Y empiezo con self. 177 00:09:45,520 --> 00:09:47,560 Si el objeto que obtiene el mensaje es cero, 178 00:09:47,720 --> 00:09:49,600 entonces le daré 1. 179 00:09:49,760 --> 00:09:51,320 Si self es positivo, 180 00:09:51,480 --> 00:09:55,160 por ejemplo, factorial 6, self es igual a 6 ... 181 00:09:55,480 --> 00:09:58,120 Si esto es cierto ¿Qué le daré? 182 00:09:58,280 --> 00:10:01,520 6 multiplicado por 6 menos 1 factorial. 183 00:10:01,680 --> 00:10:04,920 La definición recursiva que todos conocemos. Y eso es todo. 184 00:10:05,080 --> 00:10:08,120 Y lo interesante a destacar aquí 185 00:10:08,280 --> 00:10:10,440 es que ifTrue:, que es una condición, 186 00:10:10,600 --> 00:10:13,720 También es un mensaje, un mensaje de palabra clave con dos puntos, 187 00:10:13,880 --> 00:10:15,320 enviado a un booleano 188 00:10:15,480 --> 00:10:18,800 También tienes ifFalse:ifTrue:, ifTrue:ifFalse:... 189 00:10:18,960 --> 00:10:21,440 Todas estas condiciones son mensajes 190 00:10:21,600 --> 00:10:23,320 que satisfacen las reglas, 191 00:10:23,480 --> 00:10:28,680 y son mensajes de palabra clave como he presentado anteriormente. 192 00:10:29,080 --> 00:10:30,960 Entonces las condiciones son mensajes. 193 00:10:31,120 --> 00:10:32,960 Los ciclos también son mensajes. 194 00:10:33,120 --> 00:10:35,160 Aquí haré un ciclo del 1 al 4. 195 00:10:35,320 --> 00:10:37,840 Del 1 al 4, ¿qué hago? 196 00:10:38,000 --> 00:10:40,080 Un bloque. Un método anónimo. 197 00:10:40,240 --> 00:10:45,360 Aquí estoy diciendo que lo quiero para mostrar el valor de i, 198 00:10:45,520 --> 00:10:50,320 y tomaré el valor de 1, 2, 3, 4 ... 199 00:10:50,480 --> 00:10:53,840 Y allí puede ver eso to:do: 200 00:10:54,000 --> 00:10:56,280 es un mensaje de palabras clave. 201 00:10:56,520 --> 00:10:59,960 Es un mensaje que toma la forma de un ciclo. 202 00:11:00,120 --> 00:11:03,360 Hay otros ciclos en Pharo : timesRepeat:, to:by:do: y así sucesivamente. 203 00:11:03,520 --> 00:11:05,360 Los veremos a todos. 204 00:11:05,520 --> 00:11:07,520 Pero, nuevamente, estos son mensajes ... 205 00:11:07,680 --> 00:11:11,440 Entonces aquí, to:do: se envía al objeto 1 con 4 como parámetro y un bloque. 206 00:11:11,600 --> 00:11:14,600 Veremos qué es un bloque muy pronto. 207 00:11:14,760 --> 00:11:16,480 También tienes iteradores. 208 00:11:16,640 --> 00:11:18,440 Los iteradores son diferentes. 209 00:11:18,600 --> 00:11:21,040 Envío el mensaje do: 210 00:11:21,200 --> 00:11:22,360 a la colección, 211 00:11:22,520 --> 00:11:25,680 diciendo lo que quiero aplicar a cada uno de los elementos. 212 00:11:25,840 --> 00:11:29,320 De manera que cada uno, el argumento de mi función, 213 00:11:29,480 --> 00:11:34,440 tomará como valor 1, 2, -4 y -86. 214 00:11:34,600 --> 00:11:36,960 Y lo que hago aquí es que para cada uno ... 215 00:11:38,440 --> 00:11:40,800 aplico el valor absoluto y lo muestro 216 00:11:40,960 --> 00:11:43,840 Una vez más, este será otro curso. 217 00:11:44,000 --> 00:11:45,720 Explicaremos los iteradores. 218 00:11:45,880 --> 00:11:48,640 Iteradores son algo que encuentra en Java 8 219 00:11:50,280 --> 00:11:53,240 Y son parte del núcleo de Pharo. 220 00:11:54,280 --> 00:11:55,760 Entonces, ¿qué es un bloque? 221 00:11:55,920 --> 00:11:57,680 Los bloques parecen funciones. 222 00:11:57,840 --> 00:12:01,320 Si en matemáticas escribe f (x) = x² + 3, 223 00:12:01,480 --> 00:12:03,920 Lo escribiría así, literalmente. 224 00:12:04,440 --> 00:12:07,320 Defino una variable en el que afecto un bloque. 225 00:12:07,480 --> 00:12:10,520 Un bloque es algo dentro de corchetes. 226 00:12:10,680 --> 00:12:13,160 Aquí, el bloque tiene un argumento que es x. 227 00:12:13,520 --> 00:12:16,640 Y pongo el contenido, que es x + 3. 228 00:12:16,800 --> 00:12:18,600 Y cuando quiero ejecutar este bloque ... 229 00:12:18,760 --> 00:12:20,880 La aplicación de la función. 230 00:12:21,040 --> 00:12:24,600 Esa es la definición de la función, ahora tengo la aplicación 231 00:12:24,760 --> 00:12:30,360 Envío el mensaje value: al bloque. Si pongo value: 2. 232 00:12:31,520 --> 00:12:35,080 x es 2, entonces mi bloqueo me dará 5. 233 00:12:35,520 --> 00:12:36,680 ¿OK? 234 00:12:36,960 --> 00:12:41,560 Entonces, ¿qué es un bloque? Es un tipo de función anónima, no tiene nombre. 235 00:12:41,960 --> 00:12:46,160 De hecho, es un cierre léxico. 236 00:12:46,320 --> 00:12:48,240 Lo explicaremos 237 00:12:48,400 --> 00:12:50,360 Los bloques son objetos reales. 238 00:12:50,520 --> 00:12:54,440 Se pueden pasar como método argumentos, almacenados en variables, 239 00:12:54,600 --> 00:12:55,720 devueltos ... 240 00:12:55,880 --> 00:12:58,600 Entonces pueden ser usados como disparadores de botón, 241 00:12:58,760 --> 00:13:02,960 como devolucion de llamada en aplicaciones web ... Estos pueden ser bloques. 242 00:13:04,480 --> 00:13:06,560 Ya hemos visto el uso del bloque. 243 00:13:06,720 --> 00:13:08,800 En iteradores tienes bloques. 244 00:13:08,960 --> 00:13:11,680 Vimos que los bloques son usados en condiciones 245 00:13:11,840 --> 00:13:13,600 Habrá un curso sobre bloques. 246 00:13:13,840 --> 00:13:16,440 Es elegante, Fueron introducidos en Eiffel, 247 00:13:16,600 --> 00:13:19,200 fueron introducido recientemente en Java 8, 248 00:13:19,360 --> 00:13:21,800 hubo una primera versión en C# ... 249 00:13:21,960 --> 00:13:23,200 Entonces es fundamental. 250 00:13:23,360 --> 00:13:26,320 Los bloques son un elemento fundamental 251 00:13:26,480 --> 00:13:30,400 de la sintaxis de Pharo y su modelo computacional. 252 00:13:30,720 --> 00:13:33,600 ¿Cómo definimos una clase en Pharo? 253 00:13:33,760 --> 00:13:37,480 El navegador que ves aquí muestra paquetes. 254 00:13:37,640 --> 00:13:39,960 Tiene las clases dentro. 255 00:13:40,120 --> 00:13:41,600 Y le muestra una plantilla. 256 00:13:41,760 --> 00:13:45,240 La plantilla dice que de forma predeterminada, hereda un objeto, 257 00:13:45,400 --> 00:13:47,480 y el nombre de la clase. 258 00:13:47,640 --> 00:13:51,160 Lo veremos para la clase Point, por ejemplo. 259 00:13:51,320 --> 00:13:53,360 Entonces, la definición de la clase ... 260 00:13:53,520 --> 00:13:56,840 Tengo el objeto de clase. ¡También es un mensaje! 261 00:13:57,000 --> 00:13:59,680 La subclase del mensaje: InstanceVariableNames: 262 00:13:59,840 --> 00:14:01,160 bla, bla, bla... 263 00:14:01,320 --> 00:14:02,160 Con ... 264 00:14:02,320 --> 00:14:04,960 Defino la clase Point, 265 00:14:05,120 --> 00:14:07,920 y le doy las variables de instancia x e y. 266 00:14:08,080 --> 00:14:13,640 Eso es solo para mostrar que la sintaxis siempre sigue el mismo modelo con mensajes. 267 00:14:13,800 --> 00:14:16,680 Normalmente no lo escribo a mano. 268 00:14:16,840 --> 00:14:20,960 La herramienta le da la plantilla y simplemente lo completa. 269 00:14:22,680 --> 00:14:24,480 Entonces, ¿cómo definimos un método? 270 00:14:24,640 --> 00:14:27,400 Como dije, los métodos son públicos y virtuales, 271 00:14:27,560 --> 00:14:29,240 y de forma predeterminada, regresan self. 272 00:14:29,400 --> 00:14:31,720 Entonces, cuando está en el navegador, 273 00:14:31,880 --> 00:14:34,120 sugiere una plantilla, 274 00:14:34,280 --> 00:14:37,160 el nombre del método potencial y un comentario ... 275 00:14:37,320 --> 00:14:41,800 Somos amables y educados por lo que comentamos sobre nuestro código. 276 00:14:41,960 --> 00:14:46,800 También podemos poner nombres de variables temporales y declaraciones. 277 00:14:46,960 --> 00:14:50,360 ¿Qué nos da esto? Hemos visto el método factorial. 278 00:14:50,520 --> 00:14:53,040 Aquí estoy en la clase Integer. 279 00:14:53,200 --> 00:14:56,400 Miro el método factorial, Tengo su codigo, 280 00:14:56,560 --> 00:14:59,000 con el nombre del método, su comentario 281 00:14:59,160 --> 00:15:02,040 y el contenido del método que he definido 282 00:15:03,840 --> 00:15:05,840 Entonces, para resumir, ¿qué hemos visto? 283 00:15:06,000 --> 00:15:09,560 Hay 3 tipos de mensajes: mensajes unarios, sin argumentos, 284 00:15:09,720 --> 00:15:12,760 mensajes binarios donde los selectores son matemáticos, 285 00:15:12,920 --> 00:15:17,000 y mensajes de palabras clave, donde puede haber varios argumentos. 286 00:15:17,160 --> 00:15:20,720 Hay una prioridad: paréntesis primero, 287 00:15:20,880 --> 00:15:23,080 luego unario, binario y palabra clave. 288 00:15:23,240 --> 00:15:27,360 Y si hay mensajes del mismo nivel Es de izquierda a derecha. 289 00:15:27,600 --> 00:15:30,920 ¿Qué hemos visto? La sintaxis es muy compacta. 290 00:15:31,160 --> 00:15:35,040 Hay pocas construcciones pero son realmente expresivas. 291 00:15:35,200 --> 00:15:39,480 Son principalmente mensajes y cierres léxicos, o bloques. 292 00:15:39,640 --> 00:15:42,400 Hay tres tipos de mensajes. 293 00:15:42,560 --> 00:15:45,160 Haras un ejercicio para desarrollar un lenguaje 294 00:15:45,320 --> 00:15:49,200 Así puede definir lo que llamamos Lenguaje de Dominio Específico.