130 likes | 328 Views
Viva !. Jose García Moreno-Torres Luis González Jaime. Una pequeña introducción. Los orígenes de Smalltalk se encuentran en el lenguaje que podríamos considerar como el padre de lo que hoy en dia conocemos como Orientación a Objetos: Simula 67.
E N D
Viva ! Jose García Moreno-Torres Luis González Jaime
Una pequeña introducción • Los orígenes de Smalltalk se encuentran en el lenguaje que podríamos considerar como el padre de lo que hoy en dia conocemos como Orientación a Objetos: Simula 67. • Smalltalk es un lenguaje orientado a objetos diseñado por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox Parc). • Pero Smalltalk no es meramente un lenguaje, sino un entorno completo, prácticamente un sistema operativo que se ejecuta encima de una "máquina virtual". Esto asegura su máxima portabilidad entre plataformas.
Un poco de Historia • Como ya hemos dicho, Smalltalk fue una evolución natural de Simula 67. Los origenes de este lenguaje son muy curiosos: La historia es que trabajaban en simulaciones de naves, y se vieron desbordados por las complejas interacciones de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamiento. • Simula 67 fue oficialmente lanzado por sus autores Ole Johan Dahl y Kristen Nygaard en la Conferencia de Trabajo en Lenguajes de Simulación IFIO TC 2, en Lysebu cerca de Oslo en mayo de 1967. • Hoy en día, el interes de los creadores de Simula ha producido un segundo lenguaje de programación, llamado Beta, el cual generaliza todas las construcciones del lenguaje en una unica idea denominada patrón.
¿Qué es la Orientación a Objetos (OO)? A estas alturas de la asignatura ya tendríamos que saberlo todos, pero vamos a recordarlo por si acaso: • Abstracción (Énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?“) • Encapsulamiento (ocultamiento de información) (Asegura que los objetos no pueden cambiar el estado interno de otros objetos de maneras inesperadas) • Polimorfismo (Propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto sobre el que se aplican) • Herencia (Partir de las situaciones más generales e ir derivando hacia las más particulares)
¿Y qué hace Smalltalk con esto? (I) Abstracción • Permite la definición de métodos y clases sin saber su implementación (abstractas). • Smalltalk sigue el Principio de Abstracción al agrupar los objetos que tienen comportamiento y propiedades similares bajo la misma clase. • La gestión de memoria es totalmente transparente al programador. • Encapsulamiento • Todas las variables son “protected” (sólo se pueden acceder a ellas desde la propìa clase o una subclase) • Las variables instanciadas no son visibles a otros objetos. Cada variable instanciada se refiere a un objeto, al que se denomina “valor”.
¿Y qué hace Smalltalk con esto? (II) • Polimorfismo • Smalltalk tiene polimorfismo dinámico; ya que un mismo mensaje (por ejemplo add) será tratado de distinta manera según sea la clase a la que pertenece el objeto receptor; que no será necesario conocer hasta tiempo de ejecución. • Herencia • Todas las clases en Smalltalk están organizadas en una jerarquía, tieniendo Object como clase más general. • Una subclase tiene acceso a la representación y los métodos de su superclase. Además puede: • Añadir nuevos métodos • Añadir nuevas variables de instancia • Re-escribir algunos métodos
¿Por qué aprender Smalltalk? (I) • Porque es, DE VERDAD, un lenguaje Orientado a Objetos. • Porque tiene una curva de aprendizaje muy rápida; hasta un niño podría usarlo (solo 5 palabras reservadas). • Como es un lenguaje interpretado, disfruta de independencia del sistema: Funciona en todos lados.
¿Por qué aprender Smalltalk? (II) • La gestión de memoria es transparente al programador: ¡Me lo gestiona todo! ¡Y sin punteros! • Es código abierto: Está escrito en Smalltalk y el código es público para que el programador pueda editarlo. • Y, por supuesto, porque me hace falta para aprobar PDO.
Smalltalk vs. Java vs. C++: Sintaxis (I) Smalltalk Object subclass: #Natural instanceVariableNames: ‘ numero ‘ classVariableNames: '' poolDictionaries: '' category: ‘ejemplo_sintaxis‘ Natural methodsFor: ‘ acceso’ getNatural ^numero. setNatural: unEntero (unEntero > 0) ifTrue: [numero := unEntero]. Uso: |numero| numero := Natural new. numero setNatural: 3.
Smalltalk vs. Java vs. C++: Sintaxis (II) JAVA class Natural { protected int natural; public int getNatural(){ return natural; } public void setNatural(int nuevoNatural){ if (nuevoNatural>0) natural = nuevoNatural; } } Uso: Natural numero = new Natural(); numero.setNatural(3);
Smalltalk vs. Java vs. C++: Sintaxis (III) C++ class Natural { Protected: int natural; Public: int getNatural(){ return natural; } void setNatural(int nuevoNatural){ if (nuevoNatural>0) natural = nuevoNatural; } }; Uso: Natural numero; numero.setNatural(3);
Bibliografía • www.es.wikipedia.org/ • www.whysmalltalk.com/ • Inside Smalltalk (Volume one), by LaLonde, Wilf R. and Pugh, John R., Prentice-Hall, 1990 • Otros enlaces de interés: • http://www.vico.org/aRecursos/TRAD_Cards/TRAD_clases/TRAD_Clases_visibilidad_esp.pdf • http://computacion.cs.cinvestav.mx/~acaceres/courses/itesm/lp/clases/lp13.pdf • http://users.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.html • http://planet.smalltalk.org/