unq-clases-2013c2
Clase 5 - 09/09 Contenido de la clase
Características típicas en los lenguajes OO más tradicionales:
- Las clases tienen varios roles:
- Definición del comportamiento de un objeto.
- Definición de tipos
- Creación de objetos
- La única herramienta automática para compartir comportamiento es la herencia (más aún, herencia simple).
- La delegación no alcanza para solucionar esos problemas. Por ejemplo en presencia de estructuras tipo Template Method.
Problemas de la herencia múltiple.
- ¿Qué pasa si heredo métodos con la misma firma de dos o más superclases?
- ¿Qué pasa si quiero combinar el comportamiento heredado de diferentes superclases?
- ¿Cómo se resuelven los chequeos de tipos en las superclases abstractas?
- ¿Qué pasa si quiero ponerle un comportamiento especial sólo a algunos objetos?
Mixins
- Sintaxis en Scala.
- Linearización.
- Super.
- Ejemplo de los vehiculos.
Ejemplos de código
- http://xp-dev.com/svn/uqbar/examples/paco/trunk/traits contiene los ejemplos en los 4 lenguajes (scala, java, pharo y c++)
Material de Lectura
- Mixins
- Especificación de las reglas de linearización en Scala.
- Herencia múltiple y method resolution en Python
Tarea para el Hogar
- Comenzar con la entrega 2 del TP1 Clase 4 - 2⁄9 Contenido de la clase
- Posibles clasificaciones para los sistemas de tipos en el paradigma de objetos.
- Casteos y Coerciones.
- Duck Typing.
- Comparación cualitativa de los sistemas de tipos en diferentes lenguajes.
Ejemplos de código
- http://xp-dev.com/svn/uqbar/examples/paco/trunk/typing/scala contiene los ejemplos en los 4 lenguajes (scala, java, pharo y c++)
Material de Lectura
Tarea para el Hogar
- Terminar la primera parte del TP1 (ejercicios 1 y 3) y traerlo andando para la próxima clase.
- Coordinar por mail un horario para la entrega de TP.
Sería bueno si pueden ir publicando el TP en un svn o git. Por ahora no lo vamos a exigir porque hasta donde yo puedo ver no es posible hacer commit desde el aula, entonces no tiene demasiada utilidad. Pero espero que tarde o temprano se pueda y ahí sí va a ser obligatorio tener un repositorio de código. Clase 3 - 26⁄8Contenido de la clase
Introducción al Scala: clases, objetos, métodos, variables (var) y constantes (val).
Uso de variables públicas y/o accessors en Java vs. Scala, análisis desde el punto de vista del binding.
Funciones de orden superior.
Double Dispatch
Pattern mathching.
Introducción a los sistemas de tipos.
Subtipado. Subsumption.
Clasificación de los tipos según el momento de chequeo: chequeo estático o anterior a la ejecución, chequeo dinámico o durante la ejecución, ausencia de chequeo.
Ejemplos de código
- http://xp-dev.com/svn/uqbar/examples/paco/trunk/dispatch/scala/rabufetti-scala contiene ejemplos sobre double dispatch y pattern matching.
http://xp-dev.com/svn/uqbar/examples/paco/trunk/languages/scala contiene ejemplos introductorios al lenguaje Scala, en particular:
- La clase
Pepita
:) tiene los ejemplos más básicos como para empezar - La clase
functions.HigherOrder
contiene ejemplos de manejo de colecciones utilizando bloques (o funciones de orden superior, como prefieran decirles). - Las clases
Expression*
tienen ejemplos variados de pattern matching, más complejos que los de Rabufetti.
- La clase
Material de Lectura
- Material teórico sobre Multiple Dispatch
- Sistemas de tipos
Tarea para el Hogar
- Continuar avanzando con el TP y mandar dudas.
Asegurarse de tener forma de ejecutar código Scala en el aula, para poder entregar el TP. Clase 2 - 19/8Feriado Nacional Clase 1 - 12⁄8
Contenido de la claseIntroducción a la materia, de qué se trata, horaro de clase, trabajos prácticos y criterios de evaluación
Comenzamos con el material de la Unidad 1, que habla sobre Tipos y Binding
Ejemplos de código
- El ejemplo lo pueden checkoutear con el svn de acá. El ejemplo está hecho en XTend y Java, las intrucciones para armar un entorno con XTend son las mismas que para hacer andar XText.
Material de Lectura
- Definiciones de las ideas de Binding, Polimorfismo y Sobrecarga.
- Material teórico sobre Multiple Dispatch
- Otro ejemplo
Tarea para el Hogar
- Armar parejas de TP y mandarlas por mail.
- Preparar el entorno de Scala, tanto para poder trabajar en casa como en la Universidad (coordinar con el compañero de TP).
- Programar la primera parte del TP1 (ver la página de Trabajos Prácticos), aprovechar para aprender Scala, venir con preguntas!
- Repasar el material de lectura y en particular el último ejemplo, que tiene un enunciado sobre el que vamos a trabajar la clase que viene.