Scala es un lenguaje que combina la programación orientada a objetos y el paradigma imperativo, con el paradigma funcional. En esta charla nos centraremos primero en ver las características OO de Scala comparándolas con Java y luego veremos algunas de las características "funcionales" del lenguaje.
3. ¿Qué es Scala?
Lenguaje de propósito general
Martin Odersky → Escuela Politécnica de Lausanne → 2001
Unifica características de paradigma OO y funcional
Typesafe Inc. → 2011
1ª versión → finales 2003
2ª versión → Marzo 2006
10. Traits – Ejemplos prácticos
Creando fake objects para test unitarios
11. Traits – Ejemplos prácticos
Extendiendo traits – ejemplo cache
Muy bonito pero... nuestro usuario quiere que la cache se refresque
después de un tiempo determinado para reflejar los cambios
14. To trait or not to trait
Una clase puede extender sólo de una superclase pero puede
“mix-in” todos los traits que quiera => mixin-class composition
Traits no admiten parámetros en su constructor (sólo type parameters)
Si queremos “fully-interoperability” con Java => abstract class
Si va a ser reutilizada en múltiples y no-relacionadas clases => trait
Si aún asi dudas....
Usa traits!!!
16. Companion Objects
Declarar métodos y variables estáticas de nuestras clases
Declarar el método unapply que se invocara al hacer pattern
matching sobre la clase
Declarar el método apply que se usa típicamente como un Factory method
19. Lenguajes funcionales
Origen en el cálculo lambda → Sistema formal para investigar
definición de funciones, aplicación de funciones y recursión
Funciones que producen resultados que dependen sólo de sus
“inputs” no del estado del programa
Eliminar efectos de lado → hacen más fácil de entender los
programas y comprender su comportamiento
27. Conclusiones
Funcional + OO > Solo OO
Lenguaje expresivo y flexible (arma doble-filo)
JVM
Mejora las habilidades del programador
Migración progresiva desde Java
Comunidad y ecosistema cada vez más potente