En esta sesión veremos el modelo de objeto Pharo.
Haremos un resumen para mostrarle su elegancia y sencillez.
No necesita entender todo ahora
porque repasaremos estas nociones en las próximas semanas.
En Pharo solo hay objetos y mensajes.
Hay muchos objetos,
para representar el puntero del mouse, booleanos, arreglos,
números, cadenas, ventanas, barras de desplazamiento y demás ...
Incluso compiladores,
objetos del sistema tales como sockets, fuentes, colecciones y demás.
Todos estos son objetos
a los que podemos enviarles mensajes.
Hay muchos mensajes diferentes.
Puede enviar el size a una colección para obtener su tamaño.
Hay los mensajes plus, at:put:, do: y así sucesivamente.
Objetos y mensajes.
Los mensajes indican la intención del programador
Cuando envío un mensaje a un objeto, Le pido que haga algo.
Es realmente una solicitud hecha al objeto
Y el objeto decide que método usar
Este es el cómo. Cómo lograr la intención del programador
al decidir qué método emplear.
Luego tenemos otro concepto, que es el de "closure".
Estos son cierres léxicos, bloques,
un tipo de métodos anónimos en Pharo.
Los llamamos bloques. Este es un vocabulario importante.
Los bloques están delimitados. por corchetes, como ve aquí.
Entonces, todo esto es un bloque.
Entonces realmente debería mirar esto como un método anónimo.
En Pharo tenemos Un modelo muy simple y uniforme.
Todo es un objeto, una instancia de una clase
Incluso clases y mensajes también son objetos.
Y todos los cálculos entre objetos se hacen a través del mensaje que pasa.
Realmente hablamos sobre el envío de un mensaje,
ese es el termino, y no sobre la ejecución de un método,
porque cuando envías un mensaje a un objeto,
hay un algoritmo particular llamado el método de búsqueda,
solo un algoritmo,
que selecciona el método correcto a usar.
Los métodos están virtualmente enlazados.
Aceptan enlace tardío.
Envío un mensaje a un objeto,
y la búsqueda de métodos selecciona el método correcto.
Volveremos a eso en una sesión dedicada.
El modelo de objeto Pharo es el siguiente.
Las variables de instancia están protegidas
Todos los objetos tienen instancia variable y están protegidos
Son privados para el objeto.
o son accesibles desde subclases.
Los métodos son públicos y virtualmente atados.
Todos los métodos son públicos en Pharo.
Y Pharo aceptó herencia única entre clases
Una clase solo puede tener una superclase
Aquí hay un ejemplo de código, el producto cruzado de dos puntos.
Tenemos point1 y point2.
Multiplico el campo x de point1 por el campo y de point2,
y resto la multiplicación
del campo y de point1 y el campo x de point2.
Es un ejemplo de computación que puede hacer en Pharo.
Para crear objetos Tenemos mensajes especiales.
Aquí, por ejemplo,
si envío el mensaje @ al entero 10
con el argumento 20,
creará un punto, una instancia de la clase Point.
El nombre del mensaje es @,
el entero que recibió el mensaje es 10,
el anterior al nombre del mensaje,
y el argumento, después del nombre del mensaje, es 20.
Aquí hay otro ejemplo.
Quiero crear una cadena de caracteres como esta aquí.
¿Cómo se obtiene esta cadena?
Aquí hemos usado una primera cadena, Pharo
le hemos enviado el mensaje coma,
como argumento tenemos la cadena es genial ...
Que está aquí, correcto?
El significado del mensaje coma es la concatenación de cadenas.
Las dos cadenas son pegadas para producir una sola secuencia.
Podemos crear objetos directamente
con el mensaje new
Envio new a la clase Monster y obtendré una instancia de la clase:
aMonster.
Puedo crear una instancia de la clase Array,
especificando new
y asignando un parámetro, lo cual hago con dos puntos,
y luego aquí el número entero 6.
Y obtengo una arreglo de tamaño 6.
Podemos tener mensajes dedicados para crear objetos,
y puedo definir mis propios mensajes a una clase.
Podría crear una clase Tomagoshi,
con un método withHunger (con hambre)
y para este método le daré el número entero 10.
Esto crea una instancia de la clase Tomagoshi
asignandole un parámetro.
Entonces estos son mensajes especializados para la creación de objetos.
En esta sesión, hemos visto una descripción genearal del modelo de objeto Pharo.
No tienes que entenderlo todo, Volveremos a estas nociones.
Pero es importante recordar eso no hay constructores en Pharo,
sin métodos estáticos, declaraciones de tipo, interfaces,
modificadores de tipo package/private/protected ...
Todos esos modificadores clásicos se encuentran en objetos de lenguajes.
No hay tipos parametrizados, no boxing/unboxing y así sucesivamente.
Y vera que es un lenguaje realmente poderoso
Entonces, en Pharo, todo es un objeto
El cómputo está hecho a través de mensajes enviados a los objetos.
Los métodos están limitados tarde.
Hay un algoritmo, la búsqueda de métodos,
que selecciona el método correcto cuando un objeto recibe un mensaje
Está la noción de bloques, que son métodos anónimos.
Muy importante en Pharo.
Y podemos enviar mensajes particulares a las clases
para crear objetos