Hablando la gente se entiende (y las cosas también) o una breve introducción a Smalltalk ESTARÍA BUENO USAR SMALLTALK
Plato del día El maravilloso mundo de los objetos Smalltalk Demo
Un martillo nuevo Antes (funcional) funciones tipos de datos Ahora objetos (sólo eso)
Objetos Colaboración basada en Privacidad ( ocultación de información ) Mensajes
#(1 2 3) Objetos, nada más En Smalltalk todo es un objeto Sí, todo Posta, todo todo 4 true $a ‘hola’ Gracias por venir... Vuelvan cuando quieran
Nombres Literales construcciones sintácticas que denotan objetos elementales ejemplos: 37El entero “37” 'Ser o no ser'El texto “Ser o no ser” El número “2,71828” $pEl carácter “p” trueEl valor de verdad “verdadero” #(1 2 3)Un vector con los números “1”, “2” y “3” #pitufoEl símbolo “pitufo” 4
Nombres Asignación variable := objeto locales en minúsculas lamole globales en mayúsculas Transcript lamole
Mensajes Sí, los mensajes son objetos. Selector Argumentos Método Efecto vs. Resultado DoIt vs. PrintIt sumar 7 4 nombre de operación o selector argumentos
Mensajes: tipos Unarios ‘pitufo’ reverse 4 factorial Binarios 17 <= Palabra clave (“keyword”) miCuenta transferir: 300 a: otraCuenta
Mensajes Precedencia 1)Unitarios 2)Binarios. 3)Keyword Asociatividad izquierda a derecha Cascada
Creando objetos Géneros de objetos: clases (género o clase) Humano (elementos o instancias) walterSamuel samuelWalterNhanForde sirSamuelWalterGriffith
En Smalltalk todo es un objeto las clases son objetos tienen variables (de clase) tienen métodos (de clase) new crea una nueva instancia allInstances devuelve un Array con las instancias de la clase guybrush := Humano new
Los humanos son... HumanoPerroBallena Mamífero
Los son todos relación entre clases (géneros) B es sub-clase de A A es super-clase de B (cada instacia de) B “es un” A B es una especialización de A (“a kind of”) A B
Contame de tu clase... HumanoPerroBallena Mamífero class la clase isMemberOf: “es un” (clase) isKindOf: “es un” (clase o subclase) guybrush := Humano new guybrush class. guybrush isMemberOf: Mamífero. guybrush isMemberOf: Humano. guybrush isKindOf: Mamífero. true false true Humano
Los son todos los objetos de una subclase tienen más cualidades que los objetos de su superclase los objetos de una subclase son más específicos que los de su superclase, los objetos de una superclase son más generales que los de sus subclases A B
El maravilloso mundo, animal. LoroPingüino HumanoPerroBallena Animal Mamífero Pájaro
El maravilloso mundo, animal. LoroPingüino HumanoPerroBallena Animal Mamífero Pájaro comer: guybrush := Humano new guybrush comer: ‘un bife’.
Herencia y mensajes Method lookup: sube buscando. Tiempo de ejecución (late binding). Herencia de comportamiento. (Reuso de código.)
El maravilloso mundo, animal. LoroPingüino HumanoPerroBallena Animal Mamífero Pájaro comer: guybrush := Humano new guybrush comer: ‘un bife’. qué ganas tenía de comer un bife
Contestá, Guybrush. comer: unaComida “(Estos) humanos son amables” super comer: unaComida. ^‘qué ganas tenía de comer’, unaComida.
Creando objetos (reprise) new ^(super new) initialize
Repaso Objetos: colaboración-mensajes-privado En Smalltalk todo es un objeto Los mensajes son objetos Efecto vs. respuesta (Do It vs. Print It) Géneros de objetos (clases) Las clases son objetos Mensajes/variables de clases/instancias Herencia: “es un” (de paso: reuso)