El foco de esta clase fue entender relaciones entre objetos. Hicimos rol playing (algunos de ustedes eran objetos) para hacer bien gráficos temas como envío de mensaje, encapsulamiento, relaciones entre objetos y pasaje de parámetros.
Hablamos sobre literales y sobre magnitudes. Vimos que los operadores aritméticos son envíos de mensajes y que los números (y otras magnitudes) son objetos.
Hicimos MUCHO hincapié en el proceso de búsqueda de método (¿qué hace un objeto cuando recibe un mensaje?) y hablamos de binding dinámico. También hablamos un poco de polimorfismo con el ejemplo de las magnitudes y los mensajes de comparar. Vimos que el binding dinámico es importante para el polimorfismo.
Hablamos sobre tipos de mensajes en Smalltalk y orden de precedencia (unarios, binarios, palabra clave).
¿Que capítulos de la bibliografía recomiendan que leamos para repasar estos temas? ¿Están leyendo esto al menos? :)
Les dejo una práctica nueva para fijar algunos de los temas que vimos en clase. Esta práctica además los guía paso a paso para cargar una aplicación web que interactue con uno de sus objetos.
La práctica es un archivo zip con el enunciado y un par de archivos con objetos ya preparados para que carguen en la imagen.
Thursday, September 24, 2009
Wednesday, September 16, 2009
Notas de la clase 2 y guía de trabajos prácticos
Iniciamos la clase con algunas preguntas sobre los temas vistos anteriormente. La pregunta clase es ¿qué es un objeto?
Basándonos en el (clásico) ejemplo de la cuenta bancaria reforzamos la idea de conocimiento y comportamiento de un objeto. El conocimiento de la cuenta son su saldo, titular y numero. Su comportamiento es devolverme su saldo, extraer y depositar.
Implementamos los métodos para una cuenta y simulamos el comportamiento de la misma haciendo que uno de los alumnos tomara el rol de la cuenta (sus variables estaban escritas en una hoja que el sostenía). Luego vimos que podíamos tener otras cuentas como esta y llegamos al concepto de "la clase" como "molde" para la creación de instancias. Pueden leer mas sobre clases e instancias en el capítulo 1 del libro de Budd.
Recordamos que un objeto oculta su información y por tanto solo podemos acceder a su conocimiento enviándole mensajes.
Luego vimos como implementar clases y métodos en Squeak usando el browser. Interactuamos con instancias de Cuenta en el workspace. Para verificar que estuvieran funcionando bien, monitoreabamos su estado interno con inspectores. El libro Squeak by example seguro les sirve de ayuda para recordar todo sobre el browser y los menues de Squeak. También pueden dar una mirada al link que dejé en bibliografia "Squeak Smalltalk: language reference".
Nos dimos cuenta de que un objeto debe estar inicializado y hablamos del método #initialize. En squeak, el mensaje #initialize se envía automaticamente a las instancias tan pronto son creadas (ya veremos porque).
Resumimos todo lo que sabíamos sobre variables hasta ahora (de instancia, de workspace, parametros y temporales).
Finalmente terminanos de cerrar la idea de las variables como apuntadores a objeto. Esto implica que las variables de instancia de un objeto pueden apuntar a otros objetos. Esto nos permite hacer que un objeto "conozca" a otro. El ejemplo que vimos en clase fue la Cuenta, que en su variable "titular" ya no tiene un String sino una Persona.
La guía de trabajos prácticos 2 que ya esta subida al grupo de google tiene preguntas y ejercicios para reforzar todo lo visto en clase. Haré algunas preguntas al principio de la clase que próxima.
Basándonos en el (clásico) ejemplo de la cuenta bancaria reforzamos la idea de conocimiento y comportamiento de un objeto. El conocimiento de la cuenta son su saldo, titular y numero. Su comportamiento es devolverme su saldo, extraer y depositar.
Implementamos los métodos para una cuenta y simulamos el comportamiento de la misma haciendo que uno de los alumnos tomara el rol de la cuenta (sus variables estaban escritas en una hoja que el sostenía). Luego vimos que podíamos tener otras cuentas como esta y llegamos al concepto de "la clase" como "molde" para la creación de instancias. Pueden leer mas sobre clases e instancias en el capítulo 1 del libro de Budd.
Recordamos que un objeto oculta su información y por tanto solo podemos acceder a su conocimiento enviándole mensajes.
Luego vimos como implementar clases y métodos en Squeak usando el browser. Interactuamos con instancias de Cuenta en el workspace. Para verificar que estuvieran funcionando bien, monitoreabamos su estado interno con inspectores. El libro Squeak by example seguro les sirve de ayuda para recordar todo sobre el browser y los menues de Squeak. También pueden dar una mirada al link que dejé en bibliografia "Squeak Smalltalk: language reference".
Nos dimos cuenta de que un objeto debe estar inicializado y hablamos del método #initialize. En squeak, el mensaje #initialize se envía automaticamente a las instancias tan pronto son creadas (ya veremos porque).
Resumimos todo lo que sabíamos sobre variables hasta ahora (de instancia, de workspace, parametros y temporales).
Finalmente terminanos de cerrar la idea de las variables como apuntadores a objeto. Esto implica que las variables de instancia de un objeto pueden apuntar a otros objetos. Esto nos permite hacer que un objeto "conozca" a otro. El ejemplo que vimos en clase fue la Cuenta, que en su variable "titular" ya no tiene un String sino una Persona.
La guía de trabajos prácticos 2 que ya esta subida al grupo de google tiene preguntas y ejercicios para reforzar todo lo visto en clase. Haré algunas preguntas al principio de la clase que próxima.
Sunday, September 6, 2009
Notas de la clase 1 y guía de trabajos prácticos
El foco de la primer clase es introducir el paradigma de programación orientada a objetos y algunos de sus conceptos principales: abstracción, objeto, mensaje, métodos, atributos, encapsulamiento. Estos temas los cubre muy bien el capítulo 1 (Thinking Object Oriented) del libro de Timothy Budd. Ojo que todavía no hablamos clases, de herencia ni de polimorfismo.
Para entender la OOP y aprender a pensar en objetos se requiere una herramienta adecuada (y mucha práctica). Squeak (Smalltalk) es esa herramienta. En la primer clase conoceremos un poco de la historia de Smalltalk, instalaremos y exploraremos Squeak y veremos como crear objetos, enviarles mensajes, y ver el resultado. En Squeak todo es un objeto. Pueden leer estos temas en español del libro de Gomez-Deck, sin embargo sigue un orden diferente al que seguimos en la materia y seguro menciona temas que todavía no vimos. El capitulo 1 (hasta la sección 1.5 inclusive) del libro Squeak By Example es otro buen punto de partida para arrancar con Squeak.
Descarguen y resuelvan la guia de trabajos prácticos correspondiente a esta clase. Es importante que se tomen un buen tiempo para entender y responder las preguntas (leyendo la bibliografía y buscando en la web). Los ejercicios en Smalltalk apuntan a que todos tengan esta semana un Squeak funcionando, sepan como instalarlo y copiarlo, y puedan utilizar un workspace para prácticar lo visto en clase. Además ya vamos fijando el vocabulario.
Para entender la OOP y aprender a pensar en objetos se requiere una herramienta adecuada (y mucha práctica). Squeak (Smalltalk) es esa herramienta. En la primer clase conoceremos un poco de la historia de Smalltalk, instalaremos y exploraremos Squeak y veremos como crear objetos, enviarles mensajes, y ver el resultado. En Squeak todo es un objeto. Pueden leer estos temas en español del libro de Gomez-Deck, sin embargo sigue un orden diferente al que seguimos en la materia y seguro menciona temas que todavía no vimos. El capitulo 1 (hasta la sección 1.5 inclusive) del libro Squeak By Example es otro buen punto de partida para arrancar con Squeak.
Descarguen y resuelvan la guia de trabajos prácticos correspondiente a esta clase. Es importante que se tomen un buen tiempo para entender y responder las preguntas (leyendo la bibliografía y buscando en la web). Los ejercicios en Smalltalk apuntan a que todos tengan esta semana un Squeak funcionando, sepan como instalarlo y copiarlo, y puedan utilizar un workspace para prácticar lo visto en clase. Además ya vamos fijando el vocabulario.
Horarios, aulas y fechas de evaluación
Teoría
Martes 14:30 a 17:00 (aula 411)
Responsable: Alejandro Fernández
Teoría
Martes 14:00 a 14:30 (aula 411)
Práctica
Viernes 10:00 a 12:00 (aula 411)
Responsable: David Conde
Evaluaciónes parciales (fechas tentativas)
Parcial: Martes 24 de Noviembre
Recuperatorio: Martes 1 de Diciembre
Martes 14:30 a 17:00 (aula 411)
Responsable: Alejandro Fernández
Teoría
Martes 14:00 a 14:30 (aula 411)
Práctica
Viernes 10:00 a 12:00 (aula 411)
Responsable: David Conde
Evaluaciónes parciales (fechas tentativas)
Parcial: Martes 24 de Noviembre
Recuperatorio: Martes 1 de Diciembre
Software requerido
Squeak Smalltalk
Durante la materia vamos a utilizar el lenguaje y ambiente de programación Squeak Smalltalk. Es un ambiente puro de programación orientada a objetos.
Nos basaremos en la versión 3.10 que pueden instalar en Windows, Linux y Mac (además de muchas otras plataformas). Pueden descargarlo desde http://www.squeak.org/Download/ (ojo que necesitan descargar el ejecutable (llamado máquina virtual), la imagen virtual, y los sources.
El la primer clase de la materia veremos como instalarlo y como hacer nuestras primeras pruebas con algunos de los objetos disponibles.
Van a encontrar bastante documentación y bibliografía en inglés.
En la página Bibliografía y material de referencia del grupo encontrarán tres libros (uno de ellos en español) para bajar en pdf.
ArgoUML
Para construir diagramas de UML recomendamos utilizar argoUML. Es muy completo y es open source. Lo pueden descargar desde la pagina oficial. Es open source y multiplataforma.
Durante la materia vamos a utilizar el lenguaje y ambiente de programación Squeak Smalltalk. Es un ambiente puro de programación orientada a objetos.
Nos basaremos en la versión 3.10 que pueden instalar en Windows, Linux y Mac (además de muchas otras plataformas). Pueden descargarlo desde http://www.squeak.org/Download/ (ojo que necesitan descargar el ejecutable (llamado máquina virtual), la imagen virtual, y los sources.
El la primer clase de la materia veremos como instalarlo y como hacer nuestras primeras pruebas con algunos de los objetos disponibles.
Van a encontrar bastante documentación y bibliografía en inglés.
En la página Bibliografía y material de referencia del grupo encontrarán tres libros (uno de ellos en español) para bajar en pdf.
ArgoUML
Para construir diagramas de UML recomendamos utilizar argoUML. Es muy completo y es open source. Lo pueden descargar desde la pagina oficial. Es open source y multiplataforma.
Bibliografia y material de referencia
Programación orientada a objetos
Smalltalk (en pdf)
Seaside
UML
- An Introduction to Object-Oriented Programming. Third Edition by Timothy A Budd published by Addison Wesley Longman. ISBN 0-201-76031-2, xxx pages, 2002
Smalltalk (en pdf)
- Programando con Smalltalk de Diego Gomez Deck - (en Español) - Muy buena introducción a Squeak/Smalltalk.
- Squeak by Example. Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet.Square Bracket Associates, 2007.
- Smalltalk With Style (Volume One) by Edward Klimas, Suzanne Skublics and David A. Thomas. ISBN: 0-13-165549-3, Publisher: Prentice Hall, Copyright: 1996.
- Squeak Smalltalk: Language Reference . Referencia a la sintaxis del lenguaje y uso basico de las herramientas del ambiente.
- Squeak Smalltalk: Classes reference . Referencia a las clases más comunes y mensajes que entienden.
Seaside
- Tutorial de Seaside: Seaside permite crear aplicaciones web en Squeak.
UML
- Uml Gota A Gota Martin Fowler - Kendall Scott (Addison Wesley) ISBN: 9684443641. ISBN-13: 9789684443648
Friday, September 4, 2009
Programa de la materia - Programación III
OBJETIVOS
El objetivo de Programación III es introducir a los alumnos en técnicas modernas de la programación, en particular en aspectos orientada a objetos y diseño orientado a objetos.
FUNDAMENTOS
Se enfatizará en la construcción de arquitecturas de software modulares, extensibles y reusables, conceptos claves para aplicaciones de gran porte. Se introducirá también al alumno en el uso de un lenguaje de modelado gráfico orientado a objetos (UML), que le permitirá construir diagramas especificando distintos aspectos de un sistema. Los trabajos prácticos se realizarán usando el lenguaje de modelado y diferentes lenguajes de implementación, tales como Smalltalk o Java.
UNIDAD 1
La crisis del software. Problemas de las técnicas tradicionales (procedurales). Resolución de problemas complejos. El problema de la extensibilidad, el reuso y el mantenimiento.
UNIDAD 2
Conceptos básicos: Encapsulamiento. Information hiding. Objetos y Programa Orientado a Objetos. Comportamiento de un Objeto. Mensaje y Método. Clasificación: Clases e Instancias. Instanciación. Jerarquías de Clases. Relación isA. Generalización / Especialización. Herencia, Herencia Simple. Clases Abstractas. Hacia mayor genericidad de código: polimorfismo y binding dinámico.
UNIDAD 3
Diseño de objetos complejos. Relaciones entre Objetos. Relación de conocimiento. Relación isPartOf.
UNIDAD 4
Lenguajes orientados a objetos: variantes. El lenguaje Smalltalk. Tipos de Mensajes. Variables de instancia. PseudoVariables: self y super. Método new. Biblioteca de clases, jerarquías pre-definidas: class Magnitude y su protocolo.
UNIDAD 5
Estructuras de Control: Clases Boolean, False y True. Métodos: or:, and: not. Definición de bloques de código. Clase Context. Métodos: value y value:. Métodos ifTrue:, ifFalse:, ifTrue: ifFalse:, whileTrue:, whileFalse:.
UNIDAD 6
Estructuras de datos como Objetos. Objetos contenedores. Colecciones de Objetos. Clase Collection y sus subclases Array, OrderedCollection, Set, Dictionary y SortedCollection. Protocolo estándar. Iteradores: to: do:, to: by: do:, timesRepeat:. El iterador do: de Collection. Otros iteradores de Collection: select:, detect:, reject:, collect:, inject: to:.
UNIDAD 7
Lenguajes de modelado orientados a objetos: historia y variantes. El lenguaje de Modelado Unificado (Unified Modeling Language). Diagramas de Estructura Estática: Diagramas de Clases. Diagramas Dinámicos ó de Comportamiento: Diagramas de Interacción (Diagramas de Secuencia y Diagramas de Colaboración).
UNIDAD 8
Aplicación de técnicas orientadas a objetos para la construcción de aplicaciones. Separación de persistencia, modelo y presentación. Mecanismos de Dependencias. Diseño de Interfaces: Model-View-Controller. Métodos changed: y update:.. Introducción al desarrollo de aplicaciones web. Concurrencia y transacciones. Framework Seaside. Introdución a la persistencia de de objetos: serialización, bases de datos orientadas a objetos.
PLAN DE EVALUACIÓN
Para obtener la regularidad se deberá aprobar un examen parcial, teniendo como máximo una posibilidad de recuperación. Para la aprobación final, los alumnos que hayan terminado la materia en condición regular deberán rendir un examen final teórico práctico. Los alumnos en condición libre, deberán adicionalmente presentar la guía de trabajos prácticos (actualizada) correctamente resuelta.
El objetivo de Programación III es introducir a los alumnos en técnicas modernas de la programación, en particular en aspectos orientada a objetos y diseño orientado a objetos.
FUNDAMENTOS
Se enfatizará en la construcción de arquitecturas de software modulares, extensibles y reusables, conceptos claves para aplicaciones de gran porte. Se introducirá también al alumno en el uso de un lenguaje de modelado gráfico orientado a objetos (UML), que le permitirá construir diagramas especificando distintos aspectos de un sistema. Los trabajos prácticos se realizarán usando el lenguaje de modelado y diferentes lenguajes de implementación, tales como Smalltalk o Java.
UNIDAD 1
La crisis del software. Problemas de las técnicas tradicionales (procedurales). Resolución de problemas complejos. El problema de la extensibilidad, el reuso y el mantenimiento.
UNIDAD 2
Conceptos básicos: Encapsulamiento. Information hiding. Objetos y Programa Orientado a Objetos. Comportamiento de un Objeto. Mensaje y Método. Clasificación: Clases e Instancias. Instanciación. Jerarquías de Clases. Relación isA. Generalización / Especialización. Herencia, Herencia Simple. Clases Abstractas. Hacia mayor genericidad de código: polimorfismo y binding dinámico.
UNIDAD 3
Diseño de objetos complejos. Relaciones entre Objetos. Relación de conocimiento. Relación isPartOf.
UNIDAD 4
Lenguajes orientados a objetos: variantes. El lenguaje Smalltalk. Tipos de Mensajes. Variables de instancia. PseudoVariables: self y super. Método new. Biblioteca de clases, jerarquías pre-definidas: class Magnitude y su protocolo.
UNIDAD 5
Estructuras de Control: Clases Boolean, False y True. Métodos: or:, and: not. Definición de bloques de código. Clase Context. Métodos: value y value:. Métodos ifTrue:, ifFalse:, ifTrue: ifFalse:, whileTrue:, whileFalse:.
UNIDAD 6
Estructuras de datos como Objetos. Objetos contenedores. Colecciones de Objetos. Clase Collection y sus subclases Array, OrderedCollection, Set, Dictionary y SortedCollection. Protocolo estándar. Iteradores: to: do:, to: by: do:, timesRepeat:. El iterador do: de Collection. Otros iteradores de Collection: select:, detect:, reject:, collect:, inject: to:.
UNIDAD 7
Lenguajes de modelado orientados a objetos: historia y variantes. El lenguaje de Modelado Unificado (Unified Modeling Language). Diagramas de Estructura Estática: Diagramas de Clases. Diagramas Dinámicos ó de Comportamiento: Diagramas de Interacción (Diagramas de Secuencia y Diagramas de Colaboración).
UNIDAD 8
Aplicación de técnicas orientadas a objetos para la construcción de aplicaciones. Separación de persistencia, modelo y presentación. Mecanismos de Dependencias. Diseño de Interfaces: Model-View-Controller. Métodos changed: y update:.. Introducción al desarrollo de aplicaciones web. Concurrencia y transacciones. Framework Seaside. Introdución a la persistencia de de objetos: serialización, bases de datos orientadas a objetos.
PLAN DE EVALUACIÓN
Para obtener la regularidad se deberá aprobar un examen parcial, teniendo como máximo una posibilidad de recuperación. Para la aprobación final, los alumnos que hayan terminado la materia en condición regular deberán rendir un examen final teórico práctico. Los alumnos en condición libre, deberán adicionalmente presentar la guía de trabajos prácticos (actualizada) correctamente resuelta.
Subscribe to:
Comments (Atom)