Universitat Politècnica de Catalunya 1 / 8
Competencias de la titulación a las cuales contribuye la asignatura
1.Revisar los conceptos de programación orientada a objetos de cara a asegurar una base de conocimientos común suficiente a partir de la cual proceder con el temario específico de la asignatura y conocer un lenguaje de programación dinámico orientado a objetos como Smalltalk.
2.Conocer los conceptos básicos y generales de la reflexión computacional, de manera que el estudiante sea capaz de entender cómo están implementados estos conceptos en diferentes lenguajes de programación
Responsable: - Jordi Delgado Pin ([email protected]) Unidad que imparte:
Curso:
Créditos ECTS:
723 - CS - Departamento de Ciencias de la Computación 2017
GRADO EN INGENIERÍA INFORMÁTICA (Plan 2010). (Unidad docente Optativa) 6 Idiomas docencia: Catalán
Titulación:
Profesorado
Específicas:
Genéricas:
CES1.1. Desarrollar mantener y evaluar sistemas y servicios software complejos y/o críticos.
CES1.3. Identificar, evaluar y gestionar los riesgos potenciales asociados a la construcción de software que pudiesen presentarse.
CES1.7. Controlar la calidad y diseñar pruebas en la producción de software.
G5. TRABAJO EN EQUIPO: Ser capaz de trabajar como miembro de un equipo, ya sea como un miembro más, o realizando tareas de dirección con la finalidad de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles.
Objetivos de aprendizaje de la asignatura
La docencia de la asignatura está estructurada en clases de teoría y clases de laboratorio.
En las clases de teoría los profesores presentan los contenidos esenciales de la asignatura. En las clases de laboratorio se practican los contenidos de la asignatura (los presentados en clase y los adquiridos autónomamente) mediante la realización de problemas prácticos. Las clases de laboratorio serán una continuación de las clases teóricas, donde los conceptos nuevos se implementarán a medida que vayan apareciendo.
Metodologías docentes Capacidades previas
Los alumnos deberían tener conocimientos suficientes de estructuras de datos y algoritmos y de diseño y programación orientada a objetos.
Requisitos
- Pre-requisito PROP - Pre-requisito IES
Universitat Politècnica de Catalunya 2 / 8
3.Conocer cómo está implementada la reflexión computacional en Java y Smalltalk: acceso y modificación de los miembros de clases en tiempo de ejecución, creación de código en tiempo de ejecución, etc.
4.Ser capaz de desarrollar en equipo un programa de tamaño pequeño-medio que utilice técnicas de reflexión
5.Conocer las los conceptos básicos y generales de la programación orientada a aspectos, de manera que el estudiante sea capaz de entender cómo están implementados estos conceptos en diferentes lenguajes de programación
6.Conocer AspectJ, implementación para Java de la programación orientada a aspectos para profundizar y entrar en detalles de una implementación concreta de los conceptos aprendidos.
7.Conocer las los conceptos básicos y generales de la programación basada en prototipos, de manera que el estudiante sea capaz de entender cómo están implementados estos conceptos en diferentes lenguajes de programación
8.Conocer de manera suficiente un lenguaje basado en prototipos como para ser capaces de ilustrar los conceptos generales en una implementación concreta (presumiblemente este lenguaje sería Javascript o Self)
9.Conocer qué es un cierre (closure) y algunas técnicas asociadas a su utilización.
Dedicación total: 150h Horas grupo grande:
Horas grupo mediano:
Horas grupo pequeño:
Horas actividades dirigidas:
Horas aprendizaje autónomo:
30h 0h 30h 6h 84h
20.00%
0.00%
20.00%
4.00%
56.00%
Horas totales de dedicación del estudiantado
Universitat Politècnica de Catalunya 3 / 8
Repaso de la programación orientada a objetos e Iniciación a Smalltalk
Reflexión: Conceptos generales
Implementación en Java y Smalltalk de la reflexión
Programación Orientada a Aspectos: Conceptos generales
AspectJ: Programación Orientada a Aspectos en Java
Programación basada en prototipos.
Competencias de la titulación a las que contribuye el contenido:
Competencias de la titulación a las que contribuye el contenido:
Competencias de la titulación a las que contribuye el contenido:
Competencias de la titulación a las que contribuye el contenido:
Competencias de la titulación a las que contribuye el contenido:
Competencias de la titulación a las que contribuye el contenido:
Filosofía y orígenes. Encapsulación, miembros privado / (protected) / public, herencia, polimorfismo, early / late binding. Patrones. Smalltalk, aprendizaje y utilización del entorno Pharo
¿Qué es la reflexión?. Tipo de reflexión: Introspección, intercesión, reificación. Implicaciones de la reflexión para un lenguaje de programación. Reflexión en programación orientada a objetos.
Utilización de java.lang.reflect y Smalltalk. Acceso a los miembros de clases en tiempo de ejecución. Patrones y Reflexión. Construir objetos de manera reflexiva. Generación de código en tiempo de ejecución.
Encapsulación del código transversal (cross-cutting concerns), dinámico y estático. Puntos de unión (join points), puntos de corte (pointcuts) y aspectos. Mecanismos de weaving
Implementación de los conceptos considerados en la descripción general de la programación orientada a
aspectos en el contexto del lenguaje de programación Java: Puntos de unión, puntos de corte, aspectos, advices, mecanismos de weaving, etc.
Descripción:
Descripción:
Descripción:
Descripción:
Descripción:
Universitat Politècnica de Catalunya 4 / 8
Clases vs. prototipos. Herencia vs. clonación. Delegación. Clausuras (closures) y técnicas asociadas a su uso.
Descripción:
Universitat Politècnica de Catalunya 5 / 8
Repaso de la programación orientada a objetos: Aspectos generales
Introducción a Smalltalk
Reflexión: Conceptos generales
Reflexión: Utilización en Java (java.lang.reflect) y Smalltalk
Descripción:
Descripción:
Descripción:
El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor.
El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor.
El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor.
Objetivos específicos:
Objetivos específicos:
Objetivos específicos:
Objetivos específicos:
1
1
2
1
Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 0h Actividades dirigidas: 0h
Aprendizaje autónomo: 0h
Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 4h Actividades dirigidas: 0h
Aprendizaje autónomo: 0h
Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 2h Actividades dirigidas: 2h
Aprendizaje autónomo: 10h
Grupo grande/Teoría: 10h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 8h Actividades dirigidas: 0h
Aprendizaje autónomo: 15h Dedicación: 2h
Dedicación: 6h
Dedicación: 16h
Dedicación: 33h
Universitat Politècnica de Catalunya 6 / 8
Práctica
Control teoría
Programación Orientada a Aspectos:
Conceptos generales
AspectJ: AOP en Java
Descripción:
Descripción:
Descripción:
Descripción:
El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor.
Fecha de entrega; A determinar una vez hayan acabado las clases.
El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor.
El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor.
Objetivos específicos:
Objetivos específicos:
Objetivos específicos:
Objetivos específicos:
3, 4
4
2, 3
5
Actividades dirigidas: 0h Aprendizaje autónomo: 0h
Actividades dirigidas: 2h Aprendizaje autónomo: 10h
Grupo grande/Teoría: 2h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 2h Actividades dirigidas: 2h
Aprendizaje autónomo: 10h
Grupo grande/Teoría: 8h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 6h Actividades dirigidas: 0h
Aprendizaje autónomo: 15h Dedicación: 0h
Dedicación: 12h
Dedicación: 16h
Dedicación: 29h
Universitat Politècnica de Catalunya 7 / 8
Programación basada en prototipos.
Control final
El método de evaluación de la asignatura consistirá en dos pruebas de carácter teórico (T1 y T2), una a mediados de curso y otra al final y una práctica de tamaño pequeño-medio (P), más la consideración otros aspectos principalmente relacionados con participación en clase (Pa) y las actividades dirigidas (AD).
Entonces, el método de evaluación sería:
0.6 * Teoría + 0.35 * Practica + 0.05 * (Pa+AD) donde:
Teoría: 0.4 * T1 + 0.6 * T2
Competencia transversal "Trabajo en equipo":
Se evalúa usando una rúbrica simple en que el tutor de cada grupo puntúa los diferentes aspectos del trabajo en equipo de cada miembro de los grupos.
Sistema de calificación Descripción:
El estudiante debería estar atento en clase y trabajar los ejercicios propuestos por el profesor.
Objetivos específicos:
Objetivos específicos:
Objetivos específicos:
6
7, 8, 9
5, 6, 7, 8, 9
Grupo grande/Teoría: 4h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 6h Actividades dirigidas: 0h
Aprendizaje autónomo: 14h
Actividades dirigidas: 2h Aprendizaje autónomo: 10h Dedicación: 24h
Dedicación: 12h
Universitat Politècnica de Catalunya 8 / 8
Bibliografía
http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/rivard/rivard.html
http://download.oracle.com/javase/6/docs/technotes/guides/reflection/index.html
http://www.eclipse.org/aspectj/
https://developer.mozilla.org/es/JavaScript Enlace web
Otros recursos:
Básica:
Complementaria:
Black, A.P.; Ducasse, S.; Nierstrasz, O.; Pollet, D.; Cassou, D.; Denker, M. Pharo by example. Square Bracket Associates, 2009. ISBN 9783952334140.
Forman, I.R.; Forman, N. Java reflection in action. Manning Publications, 2005. ISBN 1932394184.
Laddad, R. AspectJ in action: enterprise AOP with spring applications. 2nd ed. Manning Publications, 2010. ISBN 1933988053.
Noble, J.; Taivalsaari, A.; Moore, I. (Editors). Prototype-based programming: concepts, languages, and applications.
Springer, 1999. ISBN 9814021253.
Communications of the ACM [en línea]. Disponible a:
<http://dl.acm.org/citation.cfm?id=383845&CFID=482078270&CFTOKEN=35757917>.
Proceedings of OOPSLA '87, ACM SIGPLAN Notices. 22(12):147--155, 1987.
Tanter, E. From metaobject protocols to versatile kernels for aspect-oriented programming (PhD Thesis) [en línea].
Université de Nantes, 2004Disponible a: <http://www.emn.fr/z-info/reflex/references/etanter-phd.pdf>.
Adams, B.; Haupt, M.; Lohmann, D. Proceedings of the 9th Workshop on Aspects, Components, and Patterns for
Infrastructure Software (ACP4IS'10) (Technical Reports, vol. 33) [en línea]. Hasso-Plattner-Institute, Universität Potsdam, 2010Disponible a: <http://opus.kobv.de/ubp/volltexte/2010/4122/pdf/tbhpi33.pdf>. ISBN 978-3-86956-043-4.