Programación Orientada a Objetos Curso 2015/2016 Javier Bermúdez Ruiz Marcos Menárguez Tortosa Begoña Moros Valle http://dis.um.es/docencia/poo Contenido de la presentación • Programa de teoría. • Programa de prácticas. • Evaluación. • Horarios. • Introducción. Objetivos del Programa de Teoría • Describir los conceptos que caracterizan el modelo orientado a objetos (OO). • Valorar en qué medida las técnicas OO favorecen la calidad del software. • Estudiar cómo Java refleja los conceptos del paradigma OO. Metodología • Desarrollo de los temas del programa junto con resolución de ejercicios. • Aprendizaje basado en problemas/proyectos. • Evaluación final mediante un examen teórico. Programa de Teoría • Tema 1: Introducción al paradigma orientado a objetos. • Tema 2: Clases y Objetos • Tema 3: Herencia • Tema 4: Genericidad, colecciones y patrones de diseño • Tema 5: Corrección y Robustez. Excepciones en Java • Tema 6: Características avanzadas de Java. Bibliografía básica Core Java 2. Vol I. Fundamentos. Cay S. Horstmann, Gary Cornell Objetivos del Programa de Prácticas • Aprender el lenguaje de programación Java • Practicar los conceptos OO en Java en el desarrollo de un proyecto de programación • Manejar un entorno de programación Java: Eclipse Metodología • Proyecto de programación: Videojuego – Organizado en etapas a medida que se van introduciendo los contenidos teóricos. – Guía del trabajo en el laboratorio y parte del trabajo supervisada. – Trabajo autónomo fuera del laboratorio. – Dos entregables: 9 de noviembre y 14 de diciembre. • Evaluación final: • Examen práctico de problemas en el laboratorio • Evaluación del proyecto de programación. Defensa del trabajo a criterio del profesor. Evaluación de la asignatura • Peso de los contenidos de la asignatura: – 30% - Examen de teoría – 35% - Examen práctico de problemas (en laboratorio) – 35% - Proyecto de programación • Se debe superar cada una de las partes. • El examen práctico sólo se podrá realizar si se aprueba el proyecto de programación. • El aprobado de algún examen o las prácticas sólo se guardará durante EL CURSO ACADÉMICO. Exámenes • Exámenes oficiales en cada convocatoria : – 15 de enero de 2016 (Mañana) – 25 de mayo de 2016 (Mañana) – 04 de julio de 2016 (Tarde) • Los exámenes de teoría y prácticas se hacen el mismo día y en el mismo turno. Horario de la asignatura • Teoría: – Grupo 1: Lunes 9:25-11:25 (Aula A.03) – Grupo 2: Lunes 11:35 – 13:35 (Aula A.04) – Grupo 3: Martes 15:30 – 17:30 (Aula A.03) • Prácticas: – Martes, Miércoles y Jueves. Profesorado • Javier Bermúdez Ruiz – Prácticas G2.1, G2.2 y G2.3 – Facultad de Informática (2ª planta): 2.30 – Tutorías: consultar la guía docente – Tutoría electrónica a través de Aula Virtual. Profesorado • Marcos Menárguez Tortosa – Teoría G2 – Prácticas G3.1 y G3.2 – Facultad de Informática (2ª planta): 2.33 – Tutorías: consultar guía docente – Tutoría electrónica a través de correo electrónico ([email protected]) Profesorado • Begoña Moros Valle – Teoría de los grupos G1 y G3 – Prácticas del grupo G1 y G3.3 – Facultad de Informática (2ª planta): 2.37 – Tutorías: consultar guía docente – Tutoría electrónica a través de Aula Virtual. Introducción Lenguajes OO – Años 80 Popularidad de los lenguajes OO. C++ (1985): • • Extensión de C con características OO. Muy popular, ayudó a difundir la POO. Eiffel (1985): • • • • Bertrand Meyer Lenguaje orientado a objetos puro. Fruto de un profundo estudio del paradigma OO. Lenguaje “teórico” poco utilizado. Lenguajes OO – Años 90 Java (1995): • • • • Sun Microsystems Oracle Lenguaje OO puro. Se popularizó por su uso en la web. Actualmente soporta una extensa plataforma de desarrollo de software (numerosas bibliotecas de código). C# (2000): • • Combina C++ y Java. Integrado en la plataforma .NET de Microsoft. Tecnología Java https://www.java.com/es/about/ – En empresas, el 97% de los ordenadores de escritorio ejecutan Java – En el ámbito doméstico, el 89% de los ordenadores personales en Estados Unidos ejecutan Java – 9 millones de desarrolladores de Java en todo el mundo – 3.000 millones de teléfonos móviles ejecutan Java – Todos los reproductores de Blu-ray incluyen Java – 125 millones de dispositivos de televisión ejecutan Java Características del lenguaje Java Independiente de la plataforma de ejecución: • El compilador Java genera código intermedio (bytecodes) independiente de la plataforma. • Los bytecodes son interpretados por la máquina virtual de Java (JVM). • El código compilado se puede ejecutar en muchas plataformas (Windows, Linux, Mac, etc.) siempre y cuando cuenten con el entorno de ejecución de Java (incluye la máquina virtual) • La tecnología de implementación (compilador+intérprete) hace que el código Java sea portable. Características del lenguaje Java Independiente de la plataforma de ejecución: http://javapapers.wordpress.com/2011/11/28/java-virtual-machine-jvm/ Características del lenguaje Java Sencillo: • La sintaxis de Java es muy parecida a C++ • Elimina las características de C++ más complejas, por ejemplo, punteros. Orientado a Objetos: • A diferencia de C++, es un lenguaje OO puro. • Las capacidades OO son similares a las de C++. Características del lenguaje Java Robusto: • Lenguaje fuertemente tipado - El compilador detecta muchos problemas que, en otros lenguajes, aparecerían en tiempo de ejecución. • Mecanismo de excepciones - Gestión de errores en tiempo de ejecución. • Elimina los errores derivados de una mala gestión de memoria - Mecanismo de “recogida de basura”. Elimina la gestión de punteros. Evolución del lenguaje Java http://wiki.bcmoney-mobiletv.com/index.php?title=Java Java vs. .NET Un programa Java se implementa una vez y se puede ejecutar en plataformas diferentes (cualquier hw y sistema operativo). Los programas compilados en .NET se ejecutan sólo en Windows pero pueden escribirse en lenguajes diferentes (C#, VB.NET, F#, C++, etc.)