2. Introducción a Smalltalk y Ambientes de Objetos
¿Quién Soy?
●
Germán S. Arduino
●
Desarrollador de Software e Investigador
●
Fundador de Arduino Software (http://www.arduinosoftware.com)
●
Creador de PasswordsPro (http://www.passwordspro.com)
●
Jefe de Investigación y Desarrollo Grupo Sancor Seguros
●
About.me/garduino
3. Orígenes de Smalltalk
El Lugar: (Xerox Parc en Palo Alto, CA, USA)
GUI (iconos, ventanas, mouse)
Editor de Textos WYSIWYG
InterPress (precursor de PostScript)
Red de Area Loca Ethernet
Tecnología de Objetos, Smalltalk, IDE
6. ¿Qué es Smalltalk?
Es un ambiente de objetos computacionales que se
comunican a interactúan mediante el envío de mensajes
(Estos mensajes también son objetos)
7. ¿Qué es Smalltalk?
Es un ambiente de objetos computacionales que se
comunican a interactúan mediante el envío de mensajes
(Estos mensajes también son objetos)
El ambiente Smalltalk tiene un lenguaje de programación que
también se conoce como “Smalltalk”
9. Características de Smalltalk
●
Un programa Smalltalk consiste únicamente de objetos.
●
Los objetos Smalltalk presentan características comunes:
10. Características de Smalltalk
●
●
Un programa Smalltalk consiste únicamente de objetos.
Los objetos Smalltalk presentan características comunes:
➢ Tienen una memoria propia.
11. Características de Smalltalk
●
●
Un programa Smalltalk consiste únicamente de objetos.
Los objetos Smalltalk presentan características comunes:
➢ Tienen una memoria propia.
➢ Poseen capacidad para comunicarse con otros objetos.
12. Características de Smalltalk
●
●
Un programa Smalltalk consiste únicamente de objetos.
Los objetos Smalltalk presentan características comunes:
➢ Tienen una memoria propia.
➢ Poseen capacidad para comunicarse con otros objetos.
➢ Poseen la capacidad de heredar características de objetos
ancestros.
13. Características de Smalltalk
●
●
Un programa Smalltalk consiste únicamente de objetos.
Los objetos Smalltalk presentan características comunes:
➢ Tienen una memoria propia.
➢ Poseen capacidad para comunicarse con otros objetos.
➢ Poseen la capacidad de heredar características de objetos
ancestros.
➢ Tienen capacidad de procesamiento.
14. Características de Smalltalk
●
●
Un programa Smalltalk consiste únicamente de objetos.
Los objetos Smalltalk presentan características comunes:
➢ Tienen una memoria propia.
➢ Poseen capacidad para comunicarse con otros objetos.
➢ Poseen la capacidad de heredar características de objetos
ancestros.
➢ Tienen capacidad de procesamiento.
➢ Se comunican entre si por envío de mensajes.
19. Tecnología de Objetos
(No nos conformamos con que sólo sea “orientado” a objetos)
Foto tomada de: http://solorobotica.blogspot.com.ar/2012/04/s4a-scratch-para-arduino.html
21. Características de Smalltalk
●
●
Un mismo objeto puede proveer muchas operaciones.
La definición de cada una de estas operaciones se llama
método (Un método especifica la reacción de un objeto
cuando recibe un mensaje que es dirigido a ese método).
22. Características de Smalltalk
●
●
●
Un mismo objeto puede proveer muchas operaciones.
La definición de cada una de estas operaciones se llama
método (Un método especifica la reacción de un objeto
cuando recibe un mensaje que es dirigido a ese método).
La colección de métodos de un objeto se llama protocolo
de mensajes o interfaz de mensajes.
23. Características de Smalltalk
●
●
●
●
Un mismo objeto puede proveer muchas operaciones.
La definición de cada una de estas operaciones se llama
método (Un método especifica la reacción de un objeto
cuando recibe un mensaje que es dirigido a ese método).
La colección de métodos de un objeto se llama protocolo
de mensajes o interfaz de mensajes.
Los mensajes pueden ser parametrizados y los parámetros
también son objetos, así como también la respuesta o
resultado del método será un objeto.
24. Características de Smalltalk
●
Las características comunes de un objeto se tipifican bajo
una clase de tal forma que los objetos agrupados bajo una
clase se conocen como instancias de ella.
25. Características de Smalltalk
●
●
Las características comunes de un objeto se tipifican bajo
una clase de tal forma que los objetos agrupados bajo una
clase se conocen como instancias de ella.
Las instancias de una clase se limpian automáticamente
cuando ya no se necesitan, por el recolector de basura
(garbage collector).
26. Características de Smalltalk
●
●
●
Las características comunes de un objeto se tipifican bajo
una clase de tal forma que los objetos agrupados bajo una
clase se conocen como instancias de ella.
Las instancias de una clase se limpian automáticamente
cuando ya no se necesitan, por el recolector de basura
(garbage collector).
Cada objeto tiene su propio estado local y representa una
instancia diferente de su clase.
31. Características de Smalltalk
Ambiente de Objetos Puros.
● Tipado Dinámico.
● Interacción entre objetos mediante envío de mensajes.
● Herencia.
● Reflexión Computacional.
●
32. Características de Smalltalk
Ambiente de Objetos Puros.
● Tipado Dinámico.
● Interacción entre objetos mediante envío de mensajes.
● Herencia.
● Reflexión Computacional.
● Recolección de Basura.
●
33. Características de Smalltalk
Ambiente de Objetos Puros.
● Tipado Dinámico.
● Interacción entre objetos mediante envío de mensajes.
● Herencia.
● Reflexión Computacional.
● Recolección de Basura.
● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).
●
34. Características de Smalltalk
Ambiente de Objetos Puros.
● Tipado Dinámico.
● Interacción entre objetos mediante envío de mensajes.
● Herencia.
● Reflexión Computacional.
● Recolección de Basura.
● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).
● Múltiples Implementaciones.
●
35. Características de Smalltalk
Ambiente de Objetos Puros.
● Tipado Dinámico.
● Interacción entre objetos mediante envío de mensajes.
● Herencia.
● Reflexión Computacional.
● Recolección de Basura.
● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).
● Múltiples Implementaciones.
● Influencia en otros lenguajes (Java, Ruby, Dart).
●
36. Características de Smalltalk
Ambiente de Objetos Puros.
● Tipado Dinámico.
● Interacción entre objetos mediante envío de mensajes.
● Herencia.
● Reflexión Computacional.
● Recolección de Basura.
● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).
● Múltiples Implementaciones.
● Influencia en otros lenguajes (Java, Ruby, Dart).
● Influencia en las metodologías ágiles (refactorización,
desarrollo incremental, tdd, etc).
●
37. Características de Smalltalk
Ambiente de Objetos Puros.
● Tipado Dinámico.
● Interacción entre objetos mediante envío de mensajes.
● Herencia.
● Reflexión Computacional.
● Recolección de Basura.
● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).
● Múltiples Implementaciones.
● Influencia en otros lenguajes (Java, Ruby, Dart).
● Influencia en las metodologías ágiles (refactorización,
desarrollo incremental, tdd, etc).
● Metaprogramación.
●
38. Otra forma de trabajar
● Desarrollo Incremental
● Reparación en vivo
40. Arquitectura de Smalltalk
●
●
Máquina Virtual (específica para cada Sistema Operativo)
Archivo .sources (contiene los fuentes del ambiente que
no cambian muy frecuentemente)
41. Arquitectura de Smalltalk
●
●
●
Máquina Virtual (específica para cada Sistema Operativo)
Archivo .sources (contiene los fuentes del ambiente que
no cambian muy frecuentemente)
Archivo .changes (contiene los cambios que vamos
haciendo sobre los objetos a medida que trabajamos)
42. Arquitectura de Smalltalk
●
●
●
●
Máquina Virtual (específica para cada Sistema Operativo)
Archivo .sources (contiene los fuentes del ambiente que
no cambian muy frecuentemente)
Archivo .changes (contiene los cambios que vamos
haciendo sobre los objetos, a nivel código fuente, a medida
que trabajamos)
Archivo .image (contiene el estado de todos los objetos en
el sistema, incluidos clases y métodos)
43. Arquitectura de Smalltalk
●
●
●
●
Máquina Virtual (específica para cada Sistema Operativo)
Archivo .sources (contiene los fuentes del ambiente que
no cambian muy frecuentemente)
Archivo .changes (contiene los cambios que vamos
haciendo sobre los objetos, a nivel código fuente, a medida
que trabajamos)
Archivo .image (contiene el estado de todos los objetos en
el sistema, incluidos clases y métodos)
Image + changes = Una foto del sistema corriendo,
congelado en el tiempo
49. Foros y Listas de Correo
●
Cada Smalltalk o Framework mencionado (Ver
http://forum.world.st)
●
ClubSmalltalk (clubsmalltalk@googlegroups.com)
●
Smalltalking (smalltalking@gruposyahoo.com.ar)
●
SqueakRos (squeakRos@gruposyahoo.com.ar)
50. Bibliografía y Recursos
●
Recopilación Libros Smalltalk (
http://stephane.ducasse.free.fr/FreeBooks.html)
●
Libros y Documentación por producto
●
Tutoriales
●
Listas de Correo
●
Wiki Squeak (http://wiki.squeak.org/squeak)
●
Presentaciones y Videos de las Conferencias
51. Lecturas Recomendadas
●
●
¿Por qué objetos ?
http://www.smalltalking.net/Papers/why/PorqueObjetos.htm
Principios de Diseño de Smalltalk
http://www.smalltalking.net/Papers/stDesign/stDesign.htm