Programación orientada a objetos Clase & taller Dra. Elisa Schaeffer / FIME UANL 2011
Meta: un propio software
Cada uno diseña e implementa un software El diseño será orientado a objetos La implementación se realiza en el taller Toda la calificación se basa en el proyecto El proyecto avanza por fases
Blogs personales Todo se entrega en el blog individual Se puede reciclar un sólo blog entre varias clases, pero hay que indicar claramente al inicio de cada entrada para qué clase y qué semana es la entrada Entregas a más tardar el jueves siguiente, 09:30 horas de la mañana; no habrá prórrogas
No pospongan las cosas Si se atrasan en las actividades, se pierden y luego reprueban; no es una buena idea Apóyense uno con el otro, formando grupos de trabajo y también en línea vía la lista de correos y los blogs Los jueves hay asesorías M4+M5 Ahí es donde yo califico las entradas publicadas
Programa semanal
Clase (teoría y diseño) Definición inicial de temas Diseño en términos de clases Herencia y polimorfismo Documentación y herramientas Presentaciones de temas Diagramas de clase de UML Diagramas de secuencia de UML Examen de medio curso Presentaciones de diagramas Selección de patrones de diseño Eventos, excepciones y errores Diseño de pruebas unitarias Interfaces gráficas de usuario Sistemas distribuidos Presentaciones finales Examen ordinario
Taller (implementación) Herramientas y plataformas Sintaxis de clases Modularidad y reutilización de código Documentación y herramientas Especificación técnica Herramientas UML Diagramas de actividad (Examen de medio curso) Demostración de avance parcial Incorporación de patrones de diseño Manejo de eventos, excepciones y errores Aplicación de pruebas unitarias Implementación de interfaces gráficas Implementación de sistemas distribuidos Demostraciones finales (Examen ordinario) Mantengan su código así que siempre haya una versión que compila y ejecuta
Actividades semanales
Actividades de semana 1 Para el 27 de enero Definición inicial de tema de proyecto Clase; 5 puntos Descripción textual con imágenes Selección, instalación y configuración de herramientas Taller; 5 puntos Documentación con ligas a descargas y tutoriales junto con capturas de pantalla del ambiente de desarrollo instalado y configurado
Actividades de semana 2 Para el 3 de febrero Diseño de programas en términos de clases múltiples Clase; 5 puntos Descripción textual que identifica las clases, sus atributos y sus métodos y la visibilidad de cada uno Sintaxis de clases: métodos, atributos, visibilidad Taller; 5 puntos Código en el lenguaje OO de su elección de las definiciones de las clases, sus atributos y métodos con la visibilidad adecuada (sin implementación los métodos no triviales)
Actividades de semana 3 Para el 10 de febrero Herencia y polimorfismo: modularidad y reutilización de código Clase; 5 puntos Descripción textual que identifica y explica las relaciones de herencia utilizados en el proyecto Implementación de polimorfismo Taller; 5 puntos Código en el lenguaje OO que están usando que implementa la herencia y demuestra el uso de polimorfismo en el proyecto
Actividades de semana 4 Para el 17 de febrero Documentación y herramientas de desarrollo Clase; 5 puntos Un texto que explica la importancia de documentación de software y la metodología que utilizarán para producirla, con ligas a herramientas Documentación y herramientas avanzadas de desarrollo Taller; 5 puntos Documentación para el código existente del proyecto y la explicación con ligas y capturas de pantalla sobre cómo fue generado
Actividades de semana 5 Para el 24 de febrero (diapositivas o video y discusiones en blogs) Presentaciones de temas y retroalimentación entre pares Clase; 5 puntos Presentación breve en clase o video en YouTube Especificación técnica Taller; 10 puntos (mitad por calidad del contenido, mitad por claridad y nitidez de la presentación) Un escrito técnico que detalla la implementación restante del proyecto
Actividades de semana 6 Para el 17 de marzo (después del exámenes de medio curso) Diagramas de clase y secuencia de UML Clase; 5+5 puntos Gráficas con explicación textual Código autogenerado y comparación Taller; 5+5 puntos Código autogenerado a partir de un diagrama de clases Código que implementa las secuencias principales de actividad del programa
Actividades de semana 7 Examen de medio curso Clase: martes 1 de marzo 10 puntos; sin notas, libros o acceso a internet Diseño a nivel de clases de un software a base de lo practicado Taller: sin sesión y sin actividad en las semanas de exámenes A la hora de examen, asesoría de proyecto individual y retroalimentación personal del avance parcial del proyecto
Actividades de semana 8 Para el 24 de marzo (diapositivas o video y discusiones en blogs) Presentaciones de diagramas de proyectos Clase; 10 puntos (mitad por calidad de contenido, mitad por calidad de presentación) Diapositivas explicadas en clase o en video en YouTube Demostraciones de avance parcial Taller; 10 puntos (mitad por calidad de contenido, mitad por calidad de presentación) Compilación y ejecución del código existente junto con explicación verbal
Actividades de semana 9 Para el 31 de marzo Identificación de patrones de diseño Clase; 5 puntos Texto con diagramas que explica cuáles patrones se aprovecha en el proyecto Aplicación de patrones de diseño Taller; 5 puntos Incorporación de patrones de diseño en la implementación del proyecto
Actividades de semana 10 Para el 7 de abril Identificación de eventos, excepciones y errores propios Clase; 5 puntos Texto con diagramas que explica los eventos, excepciones y errores particulares al software que se está diseñando Implementación de eventos, excepciones y errores propios Taller; 5 puntos Incorporación de eventos, excepciones y errores particulares al software
Actividades de semana 11 Para el 14 de abril Diseño de pruebas unitarias Clase; 5 puntos Texto con diagramas que explica las pruebas unitarias a aplicar Implementación de pruebas unitarias Taller; 5 puntos Implementación de las pruebas unitarias en código documentado y un reporte de los resultados de su ejecución
Actividades de semana 12 Para el miércoles 4 de mayo, medianoche (el día 5 no habrá clase ni asesorías) Sistemas distribuidos Clase; 5 puntos Texto con diagramas que explica la operación (incorporada o potencial) del software de manera distribuida También 5 puntos en el taller aunque perdemos la clase presencial por el asueto de 5 de mayo En el caso de ya contar con un sistema distribuido implementado como parte de proyecto: análisis de las ventajas y desventajas del diseño actual En el caso contrario, la implementación (de por lo menos un prototipo pequeño) para lograr la operación distribuida (por lo menos parcial) del sistema bajo desarrollo
Actividades de semana 13 Para el 12 de mayo Diseño de interfaces gráficas Clase; 5 puntos Dibujos de diseños de pantallas que identifican los componentes utilizados, su posicionamiento y función Implementación de interfaces gráficas Taller; 10 puntos Códigos documentados que implementan pantallas gráficas (5 puntos) con la funcionalidad correcta de los componentes ya incorporada (5 puntos)
Actividades de semana 14 Para el 19 de mayo (diapositivas o video y discusiones en blogs) Presentaciones finales Clase; 10 puntos (mitad contenido, mitad forma, como antes) Diapositivas en persona o video en YouTube Demostraciones finales Taller; 10+5+5 = 20 puntos (funcionalidad implementada + documentación + presentación) Diapositivas en persona o video en YouTube
Actividades de semana 15 Examen ordinario Clase: martes 24 de mayo 10 puntos; sin notas, libros o acceso a internet Diseño integral de un software a base de lo practicado Taller: sin sesión y sin actividad en las semanas de exámenes A la hora de examen, retroalimentación personal del proyecto y calificación de los vídeos de demostraciones finales
Dinámica de sesiones
En la sesión de la clase Doy una motivación breve al tema de la sesión Les platico algo o muestro unas diapositivas o un video o un sitio web Discutimos algunos casos de ejemplo para comenzar Buscamos por recursos en línea Aplican lo discutido a sus proyectos individuales Comienzan la actividad entregable de la semana
En la sesión del taller Repaso rápidamente el tema de la sesión El mismo que mi grupo vio en la clase de la misma semana Probamos juntos lo que se pretende hacer Aplican lo discutido a sus proyectos individuales Comienzan la actividad entregable de la semana
Proyectos individuales
Hagan lo que ustedes quieran Siempre y cuando Sea realista que lo terminen exitosamente en este semestre Si quieren hacer algo más exótico, que tengan algo experiencia en eso o mucho tiempo libre para averiguar detalles El diseño del software se haga orientado a objetos El lenguaje en realidad no importa, aunque es recomendable utilizar alguno que es orientado a objetos por su propio diseño Tengan un cliente Puede ser algunos de ustedes mismos, yo, un tercero - alguien quien quiera el software que van a desarrollar y quien pueda decir sí o no sirve
Ideas?