0% encontró este documento útil (0 votos)
20 vistas32 páginas

JavaScript y Smalltalk

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas32 páginas

JavaScript y Smalltalk

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 32

JavaScript y Smalltalk

Dos lenguajes OO bien particulares


Objetivos
• Presentar los aspectos mas particulares de dos lenguajes que se
diferencian del resto
• JavaScript (ECMAScript)
• Su naturaleza basada en prototipos
• Smalltalk
• OO de pies a cabeza (escrito en Smalltalk)
• Su ambiente que invita a un enfoque exploratorio de desarrollo
• Fuente de muchas de las ideas que hoy vemos en otros lenguajes y ambientes
Smalltalk
• Lenguaje OO puro – todo es un objeto (¡ incluso las clases !)
• Tipado dinámicamente
• Propone una estrategia exploratoria (construccionista) al desarrollo de
software
• El ambiente es tan importante como el lenguaje
• Está implementado en Smalltalk
• Ricas librerías de clases (fuentes de inspiración y ejemplos)
• Todo su código fuente disponible y modificable
• Tiene su propio compilador, debugger, editor, inspector, perfilador, etc.
• Es extensible
• Sintaxis minimalista (con sustento en su foco educativo)
• Fuente de inspiración de casi todo lo que vino después (en OO)
Smalltalk: el ambiente
Hot repair ... (objetos vivos, siempre)
Cinefiloos
• Para explorar la implementación de referencia de Cinefiloos, evalúen
la siguiente expresión en un playground de Pharo

Metacello new
baseline: 'Cinefiloos';
repository: 'bitbucket://lifia-oop/practicas-objetos-1’;
onConflictUseLoaded;
load.
Clausuras (Closures)
Qué devuelven …
Con parámetros
IF con objetos (puro polimorfismo)
Smalltalk – las clases son objetos ...
• Smalltalk hay dos tipos de objetos: los que pueden crear instancias
(de si mismos), y los que no.
• A los primeros les llamamos clases.
• Si las clases entienden mensajes, tienen su propio conocimiento y
comportamiento
• ¿Dónde se especifica su estructura y comportamiento? ¿En otra clase?
• Esto (El metamodelo de Smalltak) en uno de sus aspectos mas
interesantes y desafiantes
Lo básico
• Hay objetos capaces de crear instancias y describir su estructura
comportamiento: las clases (p.e., SmallInteger).
• Todo objeto es instancia de una clase (p.e., 1 de SmallInteger)
• Las clases son instancias de una clase también (su metaclase).
• Por cada clase hay una metaclase (se crean juntas).
• SmallInteger es instancia de “SmallInteger class”
• Las metaclases son instancias de la clase Metaclass
• “SmallInteger class” es instancia de Metaclass
•…
Nivel básico

Mensajes de “instancia”

Mensajes de “clase”
Nivel avanzado

Mensajes de “instancia”
Nivel experto
Nivel super mega requete experto
Blue, Green, Orange y Purple books
Unas anécdotas ...
Agosto 1978 Agosto 1981

Piratas del Silicon Valley

https://www.youtube.com/watch?v=2u70CgBr-OI https://www.tech-insider.org/star/research/acrobat/8108.pdf
JavaScript (ECMAScript)
• Lenguaje de propósito general
• Dinámico
• Basado en objetos (con base en prototipos en lugar de clases)
• Multiparadigma
• Se adapta a una amplia variedad de estilos de programación
• Pensado originalmente para scripting de páginas web
• Con una fuerte adopción en el lado del servidor (NodeJS)
Un mínimo de sintaxis
Prototipos
• En Javascript no tengo clases
• La forma mas simple de crear un objeto es mediante la notación
literal (estilo JSON)
• Cada objeto puede tener su propio comportamiento (métodos)
• Los objetos heredan comportamiento y estado de otros (sus
prototipos)
• Cualquier objeto puede servir como prototipo de otro
• Puedo cambiar el prototipo de un objeto (y así su comportamiento y
estado)
• Termino armando cadenas de delegación
__proto__
Prototipos
Prototipos y
“herencia”
Funciones que son objetos y constructores

¿Que prototipo tienen esas personas?


¿Cómo lo uso para agregar datos comportamiento que hereden todas?
ES6 – Clases como azúcar sintáctico

También podría gustarte