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

Material de Lectura

Tarea para el Hogar

  • Comenzar con la entrega 2 del TP1 Clase 4 - 29 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

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 - 268Contenido 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

Material de Lectura

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 - 128
    Contenido de la clase

  • Introducció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

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.