smalltalk intro i
DESCRIPTION
Introducción a Smalltalk y Tecnología de Objetos.TRANSCRIPT
![Page 1: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/1.jpg)
Introducción a Smalltalk y Ambientes
de Objetos
ICES – Sunchales - Noviembre 2013
![Page 2: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/2.jpg)
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
![Page 3: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/3.jpg)
Orígenes de Smalltalk
El Lugar: (Xerox Parc en Palo Alto, CA, USA)
GUI (iconos, ventanas, mouse)Editor de Textos WYSIWYGInterPress (precursor de PostScript)Red de Area Loca EthernetTecnología de Objetos, Smalltalk, IDE
![Page 4: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/4.jpg)
Orígenes de Smalltalk
Las personas:
Alan Kay
Dan Ingalls
![Page 5: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/5.jpg)
Orígenes de Smalltalk
Las personas:
Adele GoldbergTed Kaehler
![Page 6: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/6.jpg)
¿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)
![Page 7: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/7.jpg)
¿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”
![Page 8: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/8.jpg)
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
![Page 9: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/9.jpg)
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● Los objetos Smalltalk presentan características comunes:
![Page 10: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/10.jpg)
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● Los objetos Smalltalk presentan características comunes:➢ Tienen una memoria propia.
![Page 11: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/11.jpg)
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.
![Page 12: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/12.jpg)
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.
![Page 13: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/13.jpg)
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.
![Page 14: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/14.jpg)
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.
![Page 15: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/15.jpg)
Paradigma Tradicional
Datos
![Page 16: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/16.jpg)
Paradigma Tradicional
Programas Datos
![Page 17: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/17.jpg)
Paradigma Tradicional(“¿Orientado a Objetos? ”)
Programas Datos
![Page 18: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/18.jpg)
Paradigma Tradicional(“¿Orientado a Objetos? ”)
Programas Datos
¿Y el encapsulamiento ?
![Page 19: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/19.jpg)
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
![Page 20: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/20.jpg)
Características de Smalltalk
● Un mismo objeto puede proveer muchas operaciones.
![Page 21: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/21.jpg)
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).
![Page 22: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/22.jpg)
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.
![Page 23: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/23.jpg)
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.
![Page 24: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/24.jpg)
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.
![Page 25: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/25.jpg)
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).
![Page 26: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/26.jpg)
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.
![Page 27: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/27.jpg)
Características de Smalltalk
● Ambiente de Objetos Puros.
![Page 28: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/28.jpg)
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.
![Page 29: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/29.jpg)
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.
![Page 30: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/30.jpg)
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.
![Page 31: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/31.jpg)
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.
![Page 32: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/32.jpg)
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.
![Page 33: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/33.jpg)
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).
![Page 34: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/34.jpg)
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.
![Page 35: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/35.jpg)
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).
![Page 36: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/36.jpg)
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).
![Page 37: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/37.jpg)
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.
![Page 38: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/38.jpg)
Otra forma de trabajar● Desarrollo Incremental● Reparación en vivo
![Page 39: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/39.jpg)
Arquitectura de Smalltalk
● Máquina Virtual (específica para cada Sistema Operativo)
![Page 40: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/40.jpg)
Arquitectura de Smalltalk
● Máquina Virtual (específica para cada Sistema Operativo)
● Archivo .sources (contiene los fuentes del ambiente que no cambian muy frecuentemente)
![Page 41: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/41.jpg)
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)
![Page 42: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/42.jpg)
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)
![Page 43: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/43.jpg)
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
![Page 44: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/44.jpg)
Smalltalk's Actuales Comerciales
● Cincom Visual Works (http://www.cincomsmalltalk.com/main/products/visualworks/)
● Cincom ObjectStudio (http://www.cincomsmalltalk.com/main/products/objectstudio/)
● VA Smalltalk (http://www.instantiations.com/products/vasmalltalk/index.html)
● GemStone/S (http://gemtalksystems.com/index.php/products/gemstones/)
● Dolphin Smalltalk (http://www.object-arts.com)
● Smalltalk MT (http://www.objectconnect.com)● Visual Smalltalk● Smalltalk/V (Smalltalk Express)
![Page 45: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/45.jpg)
Smalltalk's Actuales No Comerciales
● Squeak (http://www.squeak.org)
● Pharo (http://www.pharo-project.org)
● Cuis (http://www.cuis-smalltalk.org)
● GNU/ST (http://smalltalk.gnu.org)
● Smalltalk/X (http://www.exept.de/en/products/smalltalkx)
● Amber (http://www.amber-lang.net)
● S8 (http://u8.smalltalking.net)
● Redline Smalltalk (http://www.redline.st)
● Iron Smalltalk (http://ironsmalltalk.codeplex.com)
![Page 46: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/46.jpg)
Smalltalk's Actuales Frameworks y Herramientas
● Seaside (http://www.seaside.st)
● Aida Web (http://www.aidaweb.si)
● Iliad (http://www.iliadproject.org)
● Magma (http://wiki.squeak.org/squeak/2665)
● Swazoo (http://www.swazoo.org)
● Moose (http://www.moosetechnology.org)
● Hapa'o (http://objectprofile.com/#/pages/products/hapao/overview.html)
● seaBreeze (http://seabreeze.heeg.de)
● Roassal (http://objectprofile.com/#/pages/products/roassal/overview.html)
● Zinc (http://zn.stfx.eu/zn/index.html)
● Pier (http://www.piercms.com)
● Magritte (http://code.google.com/p/magritte-metamodel/)
● DBXTalk (http://dbxtalk.smallworks.com.ar)
![Page 47: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/47.jpg)
Repositorios de Código
● SqueakMap (http://map.squeak.org)
● SqueakSource (http://www.squeaksource.org)
● SqueakSource 3 (http://ss3.gemstone.com)
● SmalltalkHub (http://www.smalltalkhub.org)
● GitHub (http://www.github.com)
![Page 48: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/48.jpg)
Asociaciones
● ESUG (http://www.esug.org)
● STIC (http://www.stic.st)
● FAST (http://www.fast.org.ar)
Smalltalks2013 en UTN Rosariohttp://www.fast.org.ar/smalltalks2013
![Page 49: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/49.jpg)
Foros y Listas de Correo
● Cada Smalltalk o Framework mencionado (Ver http://forum.world.st)
● ClubSmalltalk ([email protected])
● Smalltalking ([email protected])
● SqueakRos ([email protected])
![Page 50: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/50.jpg)
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
![Page 51: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/51.jpg)
Lecturas Recomendadas
● ¿Por qué objetos ? http://www.smalltalking.net/Papers/why/PorqueObjetos.htm
● Principios de Diseño de Smalltalkhttp://www.smalltalking.net/Papers/stDesign/stDesign.htm
![Page 52: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/52.jpg)
Introducción a Smalltalk y Ambientes de Objetos
¿ Preguntas ?
![Page 53: Smalltalk intro I](https://reader033.vdocuments.net/reader033/viewer/2022051609/547ea7ebb379593f2b8b5548/html5/thumbnails/53.jpg)
Introducción a Smalltalk y Ambientes de Objetos
¡ Muchas Gracias !