WEBVTT

00:00:00.360 --> 00:00:03.120 align:middle
Hola. Hoy aprenderemos
sobre variables

00:00:03.280 --> 00:00:05.640 align:middle
y los tipos de variables disponibles en Pharo.

00:00:05.800 --> 00:00:07.840 align:middle
De hecho, hay dos grandes tipos de variables:

00:00:08.000 --> 00:00:13.280 align:middle
las variables locales que por convención
siempre comienzan con minúscula;

00:00:13.440 --> 00:00:15.920 align:middle
veremos los diferentes tipos disponibles.

00:00:16.080 --> 00:00:18.800 align:middle
El segundo gran grupo
son las variables compartidas.

00:00:18.960 --> 00:00:22.560 align:middle
Comienzan por convención con mayúscula.

00:00:22.720 --> 00:00:24.640 align:middle
También hay varios tipos de variables compartidas.

00:00:25.600 --> 00:00:29.120 align:middle
Comencemos con las variables locales
que comienzan con minúsculas.

00:00:29.280 --> 00:00:31.360 align:middle
Las variables locales que tiene un método.

00:00:31.520 --> 00:00:36.000 align:middle
Se declaran entre barras,

00:00:36.160 --> 00:00:37.400 align:middle
entre barras verticales.

00:00:37.560 --> 00:00:39.920 align:middle
Aquí, hay una variable local, c

00:00:40.080 --> 00:00:43.760 align:middle
es local al método
y existe solo para su ejecución.

00:00:43.920 --> 00:00:46.960 align:middle
Por lo tanto, siempre debe
comenzar con minúsculas.

00:00:47.120 --> 00:00:51.840 align:middle
Por cierto, todos los nombres de clase
comienzan con mayúsculas

00:00:52.000 --> 00:00:55.120 align:middle
porque las clases se comparten en el sistema.

00:00:56.800 --> 00:00:59.640 align:middle
Otros tipos de variables locales:

00:00:59.800 --> 00:01:03.560 align:middle
por ejemplo,
las variables de instancia

00:01:03.720 --> 00:01:07.120 align:middle
que son locales del objeto.
Aqui hay dos de ellas x y y.

00:01:07.280 --> 00:01:09.640 align:middle
Siempre comienzan con minúsculas.

00:01:09.800 --> 00:01:11.880 align:middle
En cuanto a las variables locales,

00:01:12.040 --> 00:01:15.560 align:middle
también tenemos
los argumentos de los métodos, aquí.

00:01:16.280 --> 00:01:19.760 align:middle
En aPoint, "a" es minúscula.

00:01:19.920 --> 00:01:22.840 align:middle
porque esta variable
También es local del método.

00:01:23.000 --> 00:01:26.880 align:middle
También los parámetros de un bloque.

00:01:27.040 --> 00:01:31.880 align:middle
:x, x es una variable local
de un bloque

00:01:32.040 --> 00:01:34.320 align:middle
Un argumento de bloque, lo siento.

00:01:34.480 --> 00:01:37.280 align:middle
Así que aquí, comienza con minúsculas.

00:01:39.160 --> 00:01:43.440 align:middle
En Pharo, hay
seis variables específicas

00:01:43.600 --> 00:01:46.840 align:middle
llamadas variables especiales;
No puede cambiar sus nombres.

00:01:47.000 --> 00:01:48.720 align:middle
Son palabras reservadas en Pharo.

00:01:48.880 --> 00:01:52.640 align:middle
Hay más de 50 de ellas
en Java o JavaScript;

00:01:52.800 --> 00:01:54.160 align:middle
en Pharo, solo seis.

00:01:54.320 --> 00:01:57.720 align:middle
son true, false, nil, self, super,
y thisContext.

00:01:57.880 --> 00:02:01.640 align:middle
Vamos a averiguar
para qué sirven estas palabras reservadas

00:02:01.800 --> 00:02:04.360 align:middle
true y false
son instancias de booleanos:

00:02:04.520 --> 00:02:07.240 align:middle
true es la instancia única
de la clase True;

00:02:07.400 --> 00:02:10.160 align:middle
false, la instancia única
de la clase False.

00:02:10.320 --> 00:02:13.760 align:middle
nil es la instancia única
de la clase UndefinedObject.

00:02:13.920 --> 00:02:16.960 align:middle
true, false y nil
son objetos como cualquier otro,

00:02:17.120 --> 00:02:21.200 align:middle
excepto que son las únicas instancias
de una clase específica en el sistema.

00:02:21.800 --> 00:02:24.160 align:middle
Luego, hay tres pseudovariables:

00:02:24.320 --> 00:02:28.720 align:middle
self se refiere al receptor actual,
y es equivalente a this en Java.

00:02:28.880 --> 00:02:31.520 align:middle
super siempre se refiere
al receptor actual,

00:02:31.680 --> 00:02:34.880 align:middle
pero esta vez, cuando envíe
un mensaje a través de super,

00:02:35.040 --> 00:02:38.720 align:middle
Significa que la búsqueda de métodos,
el algoritmo de selección de métodos,

00:02:38.880 --> 00:02:40.960 align:middle
que veremos en otra clase,

00:02:41.120 --> 00:02:45.840 align:middle
comenzará en la superclase de
donde escribe la palabra clave super.

00:02:46.800 --> 00:02:51.000 align:middle
thisContext es una pseudovariable
que se refiere al objeto

00:02:51.160 --> 00:02:53.400 align:middle
que reifica la pila de llamadas del programa.

00:02:53.560 --> 00:02:57.280 align:middle
Es un concepto avanzado
Que estudiaremos al final de este MOOC.

00:02:57.440 --> 00:03:00.080 align:middle
Se lo explicaremos más tarde.

00:03:00.240 --> 00:03:03.360 align:middle
Por ahora, solo necesita saber
que es una pseudovariable.

00:03:04.760 --> 00:03:08.120 align:middle
Ahora, las variables compartidas o globales.

00:03:08.280 --> 00:03:10.680 align:middle
Primero, tiene todas las clases.

00:03:10.840 --> 00:03:14.120 align:middle
Todos los nombres de clase comienzan con mayúsculas

00:03:14.280 --> 00:03:17.680 align:middle
porque puedo hacer referencia a una clase
desde cualquier lugar del sistema.

00:03:18.480 --> 00:03:22.160 align:middle
Tenga cuidado: lo que comienza
con mayúsculas no siempre es una clase.

00:03:22.320 --> 00:03:24.600 align:middle
Por ejemplo, Transcript:

00:03:24.760 --> 00:03:29.640 align:middle
es el nombre de un objeto
compartido en el sistema

00:03:29.800 --> 00:03:32.840 align:middle
Todos pueden hacer referencia a este objeto.

00:03:33.000 --> 00:03:36.640 align:middle
Es la salida estándar,
el stdout en otros idiomas.

00:03:36.800 --> 00:03:40.120 align:middle
Es un objeto, instancia de una clase,
accesible a nivel mundial

00:03:40.280 --> 00:03:42.880 align:middle
por eso su nombre comienza con mayúsculas.

00:03:45.440 --> 00:03:48.280 align:middle
También estan las variables de clase,

00:03:48.440 --> 00:03:52.840 align:middle
que se declaran aquí, al declarar
una clase en classVariableNames;

00:03:53.000 --> 00:03:56.520 align:middle
aquí, la clase #CombinedChar
define dos variables de clase,

00:03:56.680 --> 00:03:59.920 align:middle
una llamada Compositions
y otra Decompositions.

00:04:00.080 --> 00:04:02.200 align:middle
Estas dos variables de clase

00:04:02.360 --> 00:04:06.040 align:middle
son accesibles por las instancias
de la clase #CombinedChar

00:04:06.200 --> 00:04:09.000 align:middle
y de sus subclases.

00:04:09.160 --> 00:04:11.880 align:middle
Es por eso que se llaman
Variables compartidas.

00:04:12.040 --> 00:04:15.480 align:middle
Todas las instancias de la clase
y sus subclases los comparten.

00:04:15.640 --> 00:04:19.240 align:middle
Por eso, ambas comienzan con mayúsculas.

00:04:19.400 --> 00:04:22.080 align:middle
Resumiendo, debe recordar:

00:04:22.240 --> 00:04:27.520 align:middle
todas las variables locales, locales a un objeto,
un bloque o un método,

00:04:27.680 --> 00:04:29.760 align:middle
comienzan con minúsculas;

00:04:29.920 --> 00:04:33.600 align:middle
todas las variables globales,
tales como nombres de clase, etc.,

00:04:33.760 --> 00:04:35.600 align:middle
comienzan con mayúsculas.

