1 00:00:00,760 --> 00:00:04,120 Hola. En esta sesión, Hablaremos sobre métodos de clase. 2 00:00:05,320 --> 00:00:07,960 En Pharo, todo es un objeto, 3 00:00:08,120 --> 00:00:10,400 y puede enviar mensajes a los objetos. 4 00:00:11,120 --> 00:00:14,320 Entonces si toma estas dos piezas de información, 5 00:00:14,480 --> 00:00:16,160 Las clases también son objetos, 6 00:00:16,320 --> 00:00:19,880 y puede enviar información a ellas, De ahí los mensajes a las clases. 7 00:00:21,120 --> 00:00:22,800 Le daré dos ejemplos. 8 00:00:22,960 --> 00:00:27,480 "Time now" envía el mensaje "now" al objeto "Time" que es una clase. 9 00:00:27,640 --> 00:00:29,800 Y devuelve la hora actual. 10 00:00:31,160 --> 00:00:32,680 Entonces le envío el mensaje "now" 11 00:00:33,680 --> 00:00:37,320 al objeto Time que es un nombre de clase. 12 00:00:38,360 --> 00:00:40,320 Me devuelve la hora actual. 13 00:00:40,480 --> 00:00:45,440 Del mismo modo, envío el mensaje "today" al objeto Date que es una clase 14 00:00:45,600 --> 00:00:47,400 devuelve la fecha. 15 00:00:47,560 --> 00:00:49,480 Daré tres ejemplos más. 16 00:00:50,200 --> 00:00:54,440 Envío el mensaje workingDirectory a la clase FileLocator 17 00:00:54,600 --> 00:00:58,040 devuelve la ruta actual 18 00:00:58,200 --> 00:01:02,520 del archivo donde se lleva a cabo la ejecución 19 00:01:03,720 --> 00:01:05,080 En el segundo ejemplo, 20 00:01:05,240 --> 00:01:08,760 Envío el mensaje "getPng:" al objeto ZnEasy 21 00:01:08,920 --> 00:01:13,000 con la URL de un archivo png como argumento 22 00:01:13,160 --> 00:01:17,160 Devuelve el archivo png que fue descargado previamente. 23 00:01:18,600 --> 00:01:19,920 En el tercer ejemplo, 24 00:01:20,080 --> 00:01:24,000 Envío el mensaje "startDefaultOn:" a ZnServer que es una clase de nuevo, 25 00:01:24,160 --> 00:01:25,800 con un número de puerto 26 00:01:27,160 --> 00:01:30,280 Esto iniciará el servidor HTTP. 27 00:01:31,480 --> 00:01:35,360 Entonces, en los tres casos, envía un mensaje a una clase. 28 00:01:36,320 --> 00:01:40,200 ¿Cómo implementa un método de clase? 29 00:01:41,000 --> 00:01:42,560 Usted selecciona la clase 30 00:01:43,960 --> 00:01:47,880 y hace clic en el botón Class para decir que quieres implementar un método 31 00:01:48,040 --> 00:01:50,960 en el lado de la clase y no en el lado de la instancia. 32 00:01:51,120 --> 00:01:53,920 Y implementa un método como de costumbre. 33 00:01:54,800 --> 00:01:58,880 Entonces, el método "today" se implementa en el lado de la clase, 34 00:01:59,040 --> 00:02:00,880 en la clase "Date". 35 00:02:03,440 --> 00:02:07,080 En esta diapositiva, puede ver un error común. 36 00:02:07,240 --> 00:02:12,760 Aquí, desea enviar el mensaje "withValue:" 37 00:02:12,920 --> 00:02:14,920 a la clase "Counter" 38 00:02:15,080 --> 00:02:19,040 para devolver un nuevo contador con un valor determinado como parámetro. 39 00:02:19,200 --> 00:02:20,800 Entonces quiere 40 00:02:22,520 --> 00:02:26,840 "Counter withValue:10" devuelva un nuevo contador que comience con el valor 10. 41 00:02:28,280 --> 00:02:32,560 Si evalúo esta expresión, Obtengo el valor "Counter", 42 00:02:32,720 --> 00:02:34,240 no un nuevo contador. 43 00:02:34,400 --> 00:02:38,240 De hecho, obtengo la clase, No una nueva instancia de esta clase. 44 00:02:38,400 --> 00:02:41,320 ¿Por qué este error? ¿Cuál es el problema? 45 00:02:41,480 --> 00:02:46,320 El problema es que, de forma predeterminada, todos los métodos devuelven "self". 46 00:02:47,280 --> 00:02:51,560 Entonces, si no especifica el valor a regresar, el método volverá "self" 47 00:02:51,720 --> 00:02:56,160 Entonces, este código es equivalente a este otro. 48 00:02:56,320 --> 00:02:59,320 En este caso, self es "Counter" 49 00:03:00,640 --> 00:03:05,640 Entonces el método devuelve la clase misma, no la instancia creada justo arriba. 50 00:03:05,800 --> 00:03:07,640 Para corregir este problema, 51 00:03:07,800 --> 00:03:11,680 simplemente agregue un acento circunflejo 52 00:03:11,840 --> 00:03:13,320 delante de "self" 53 00:03:14,240 --> 00:03:16,880 En resumen, las clases son objetos. 54 00:03:17,040 --> 00:03:21,560 Puede enviar mensajes a cualquier objeto, así que también puede enviarlos a cualquier clase. 55 00:03:21,720 --> 00:03:24,360 Para implementar los métodos correspondientes, 56 00:03:24,520 --> 00:03:29,000 debe presionar el botón Clase Después de seleccionar una clase. 57 00:03:30,000 --> 00:03:33,160 La mayoría de los métodos de clase crean no solo nuevas instancias 58 00:03:33,320 --> 00:03:36,000 sino también otras cosas. 59 00:03:36,160 --> 00:03:40,480 Verá muchos otros usos de los métodos de clase en Pharo. 60 00:03:40,640 --> 00:03:44,800 Los métodos de clase son simplemente como otros métodos, 61 00:03:44,960 --> 00:03:46,800 no hay reglas particulares. 62 00:03:46,960 --> 00:03:49,960 La búsqueda funciona exactamente de la misma manera. 63 00:03:50,120 --> 00:03:52,160 Lo sabremos la próxima semana.