COMENTARIO PROFESOR También disponible en castellano y en la página web del autor en formato HTML. Libro sobre Java que abarca tanto el lenguaje Java como las principales características de POO. Contiene ejercicios
COMENTARIO PROFESOR También disponible en castellano y en la página web del autor en formato HTML. Libro sobre C++ que abarca la implementación de sistemas de información en POO usando C++.
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 estudiantes 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 dotará a los estudiantes de las competencias 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.
COMPETENCIAS
COMPETENCIAS GENERALES:
CG6: Relacionar el conocimiento especializado de Matemáticas con el conocimiento general en el que se inserta y con las herramientas que utiliza cuando se aplica en diversas opciones profesionales, especialmente en el marco de las TIC.
CG7: Saber abstraer las propiedades estructurales de objetos de la realidad observada y de otros ámbitos, distinguiéndolas de aquellas puramente ocasionales, comprobando la aplicabilidad de las Matemáticas.
CG8: Capacitar para el aprendizaje autónomo de nuevos conocimientos y técnicas.
COMPETENCIAS ESPECÍFICAS:
CE4: Encontrar soluciones algorítmicas de problemas matemáticos y de aplicación (de ámbito académico, técnico, financiero o social), sabiendo comparar distintas alternativas, según criterios de adecuación, complejidad y coste.
CE5: Saber programar algoritmos de modo correcto y eficaz, eligiendo convenientemente lenguajes y plataformas de programación.
CE6: Utilizar herramientas de búsqueda de recursos en Matemáticas, Informática y aplicaciones.
TEMARIO
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 interface
4.7 Java Generics
4.8 Java Collections
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