Titulación: | Grado en Matemáticas | 701G | ||||||
Asignatura: | Programación orientada a objetos | 828 | ||||||
Materia: | Informática | |||||||
Módulo: | Informática | |||||||
Carácter: | OBLIGATORIA | Curso: | 2 | Semestre: | Primer Semestre | |||
Créditos ECTS: | 6,00 | Horas presenciales: | 60,00 | Horas estimadas de trabajo autónomo: | 90,00 |
Idiomas en que se imparte la asignatura: | Español |
Idiomas del material de lectura o audiovisual: | Inglés, Español |
MATEMÁTICAS Y COMPUTACIÓN | R111 | |||||||
Dirección: | C/ Luis de Ulloa, s/n | Código postal: | 26004 | |||||
Localidad: | Logroño | Provincia: | La Rioja | |||||
Teléfono: | 941299452 | Fax: | 941299460 | Correo electrónico: |
Profesor responsable de la asignatura: | Aransay Azofra, Jesús María | |||||
Teléfono: | 941299438 | Correo electrónico: | jesus-maria.aransay@unirioja.es | |||
Despacho: | 235 | Edificio: | Edificio Científico Tecnológico | |||
Horario de tutorías: | No especificado |
La asignatura corresponde al módulo “Informática” propio de la titulación, al primer semestre del segundo curso.
Dentro de dicho módulo se sitúa temporalmente detrás de las asignaturas “Metodología de la Programación” y “Tecnología de la programación”, ambas de primer curso, y además la asignatura supone cierta familiaridad de los alumnos con algunas de las competencias adquiridas en dichas asignaturas, como por ejemplo la capacidad para encontrar soluciones algorítmicas de problemas matemáticos y de aplicación sabiendo comparar distintas alternativas, según criterios de adecuación, complejidad y coste o el hecho de saber programar algoritmos de modo correcto y eficaz, eligiendo convenientemente lenguajes y plataformas de programación. También se suponen algunos de los resultados de aprendizaje de las asignaturas antes citadas; será importante para poder cursar la asignatura con aprovechamiento el conocer la sintaxis de algún lenguaje de programación imperativa (preferentemente que soporte un posterior enfoque orientado a objetos), o el haber desarrollado programas de tamaño medio y haber aprendido a usar los mecanismos de construcción de estructuras de datos para la representación y manejo de información.
Partiendo de esas competencias y asumiendo los resultados de aprendizaje reseñados, la asignatura debe capacitar a los alumnos para cursar la asignatura “Especificación y Desarrollo de Sistemas Software” (2º curso, 2º semestre), para lo cual se capacitará a los alumnos para desarrollar programas de tamaño medio en diversos lenguajes de Programación Orientada a Objetos (POO), abstraer y representar estructuras de datos en lenguajes de POO o analizar y abordar problemas aplicando el paradigma de POO.
1. Nociones de clase y objeto en programación orientada a objetos.
1.1 Representación de la información por medio de objetos
1.2 Atributos o estado
1.3 Métodos o comportamiento
1.4 Abstracción de objetos en clases
1.5 Necesidad y relevancia de los constructores de clase: constructor por defecto, constructores propios
1.6 Métodos de acceso y modificación del estado de un objeto
1.7 Atributos y métodos estáticos o de clase
1.8 Modificadores de acceso: relevancia y necesidad de los modificadores público y privado
1.9 Ocultación de la información: distintas formas de representar una misma clase manteniendo su comportamiento
1.10 Introducción al lenguaje de especificación UML: utilización para representar clases y objetos
1.11 Lenguaje de programación C++: declaración de clases y construcción de objetos
1.12 Lenguaje de programación Java: declaración de clases
2. Relaciones entre clases. Herencia entre clases.
2.1 Comunicación entre distintas clases
2.2 Clases que contienen objetos como atributos: algunos ejemplos conocidos
2.3 Relaciones de especialización/generalización
2.4 Definición de la relación de herencia entre clases
2.5 Ventajas del uso de relaciones de herencia: reutilización de código y polimorfismo de tipos de datos
2.6 Redefinición de métodos en clases heredadas
2.7 Modificador de uso “protegido”: posibilidades de uso
2.8 Representación de relaciones de herencia en diagramas UML
2.9 Programación en Java y C++ de relaciones de herencia
3. Definición y uso de métodos polimorfos
3.1 Definición de polimorfismo y ventajas de uso
3.2 Obtención de polimorfismo en C++: utilización de memoria dinámica y métodos virtual
3.3 Polimorfismo en Java
3.4 Utilización de métodos polimorfos sobre ejemplos ya construidos
4. Clases abstractas e interfaces
4.1 Definición de métodos abstractos en POO. Algunos ejemplos de uso
4.2 Relación entre polimorfismo y métodos abstractos
4.3 Definición y ventajas de uso de clases completamente abstractas o interfaces
4.4 Representación en UML de métodos abstractos, clases abstractas e interfaces
4.5 Implementación en C++ de métodos abstractos y clases abstractas
4.6 Implementación en Java de métodos abstractos e interfaces
5. Excepciones en Java
5.1 Definición de excepciones en programación
5.2 Tipos de excepciones/errores y cómo tratarlos
5.3 Trabajando con excepciones: declaración, construcción, lanzamiento y gestión de excepciones
5.4 Programación de excepciones en Java. Utilización de excepciones de la librería y definición de excepciones propias
Tipo: | Título |
Básica | Java in a nutshell; David Flanagan Absys |
Básica | The unified modellin language reference manual; James Rumbaugh, Ivar Jacobson, Grady Booch (disponible también en castellano) Absys |
Básica | Thinking in C++; Bruce Eckel, Chuck Allison (disponible también en castellano) Absys |
Básica | Thinking in Java; Bruce Eckel (disponible también en versión en castellano) Absys |
Complementaria | Design patterns: elements of reusable object-oriented software; Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Absys |
Complementaria | Objects, abstraction, data structures and design using Java; Elliot B. Koffman, Paul A.T. Wolfgang Absys |
Complementaria | Practical object-oriented development with UML and Java; Richard C. Lee, William M. Tepfenhart Absys |
Complementaria | The C++ programming language; Bjarne Stroustrup Absys |
Complementaria | The Java Language Specification; James Gosling, Bill Joy, Guy Steele, Gilad Bracha Absys |
Recursos en Internet | |
Apuntes propios de la asignatura | |
Página de la API de Java (en sus distintas versiones). Interesante tanto para consultar las características de los elementos del lenguaje, como para encontrar ejemplos de uso de muchas de las características de la POO que se aprenden en el curso. | |
Página sobre C++ con documentación diversa sobre el lenguaje. Especialmente útil resulta su referencia sobre la librería de C++. |
Actividades presenciales | Tamaño de grupo | Horas |
Clases prácticas de laboratorio o aula informática | Informática | 28,00 |
Clases teóricas | Grande | 32,00 |
Total de horas presenciales | 60,00 |
Trabajo autónomo del estudiante | Horas |
Estudio autónomo individual o en grupo | 30,00 |
Preparación de las prácticas y elaboración de cuaderno de prácticas | 30,00 |
Resolución individual de ejercicios, cuestiones u otros trabajos, actividades en biblioteca o similar | 30,00 |
Total de horas de trabajo autónomo | 90,00 |
Total de horas | 150,00 |
Sistemas de evaluación | % | ¿Recuperable? |
SE1: Pruebas escritas | 70 | Sí |
SE4: Informes y memorias de prácticas | 30 | No |
Total | 100% |