Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Programación Orientada a Objetos Syllabus Nombre de la Asignatura Programación Orientada a Objetos Id de la Asignatura Fecha de Actualización Julio de 2016
Horas semanales Horas Contacto Clase : 4 Horas Trabajo Independiente : 2
Créditos Académicos 2 PreRequisitos Pensamiento Algorítmico // ó // Fundamentos de Programación // ó // Programación Algorítmica Vigencia 2016 Objetivos Se pretende que el estudiante asimile los conceptos fundamentales de programación orientada a objetos, tales como clases, objetos, herencia y polimorfismo. Despertar la habilidad para implementar software basado en el paradigma de Orientación a Objetos, usando lenguajes de programación, en este caso Java. Al finalizar el curso el alumno deberá estar en capacidad de analizar, diseñar e implementar soluciones a problemas usando el paradigma de la orientación a objetos. Habilidades que contribuye a Desarrollar Estimular la destreza para solucionar problemas prácticos mediante una metodología de diseño OO. Desarrollar la habilidad para implementar los algoritmos diseñados en el lenguaje de programación orientado a objetos JAVA. Promover la reutilización de código. Generar código con altos estándares de calidad. Estrategias Pedagógicas 1. Aprendizaje directivo mediado (Clases magistrales) 2. Aprendizaje colaborativo (Trabajo en grupo) 3. Talleres basados en problemas 4. Las categorías de trabajo independiente son: Tareas y ejercicios Preparación de clases Preparación de Talleres Proyectos
Evaluación Parcial I 20% Parcial II 15% Parcial III 15% Laboratorios 15% Proyecto I 9% Proyecto II 8% Proyecto III 8% Quices y Tareas 10% Referencias Bibliográficas Textos Guia: 1. Eckel, Bruce. Piensa en JAVA, cuarta edición, Prentice Hall, 2007 [BIBLIOTECA] 2. H.M. Deitel / P.J. Deitel, “Java How to Program”, Quinta Edición. Prentice Hall, 2003 [BIBLIOTECA] Referencias Bibliográficas LibrosInternet: 3. An introduction to objectoriented programming with Java Wu, C. Thomas. 2006. [BIBLIOTECA] 4. Introduction to JAVA programming comprehensive version. Liang, Y. Daniel. 2007. [BIBLIOTECA] 5. Java in two semesters.Charatan, Quentin. 2006. [BIBLIOTECA]. 6. Java generics and collections. Naftalin, Maurice. 2007. [BIBLIOTECA]. 7. Java the complete reference, J2SE 5 edition. Schildt, Herbert.2005. [BIBLIOTECA] 8. Java an introduction to problem solving & programming.2005. [BIBLIOTECA] 9. Savitch, Walter. Resolución de Problemas con C++, Segunda Edición. Prentice Hall, 2000 [BIBLIOTECA] 10. Larman, Craig, UML y Patrones, Segunda Edición, Pearson Educación, 2002. [BIBLIOTECA] 11. Thomas Wu, Introduccion a la Programacion Orientada a Objetos con Java, McGraw Hill, 2001. [BIBLIOTECA] 12. Booch, G., Rumbaugh, J. y Jacobson, I. El Lenguaje Unificado de Modelado UML, Pearson Educación, Segunda Edición 2006. [BIBLIOTECA] 13. Joyanes Luis, Programación Orientada a Objetos, McGraw Hill, 1998 [BIBLIOTECA] 14. Barker Jacquie, Beginning Java Objects: From concepts to Code, Wrox, 2000. ISBN 1861004176. [BIBLIOTECA] 15. Terrence W. Pratt, Marvin V. Zelkowitz, "Lenguajes de Programación. Diseño e Implementación". Prentice Hall. 3ra. Ed.1996 [BIBLIOTECA] 16. Bjarne Stroustrup's Home Pages, http://www.research.att.com/~bs/homepage.html 17. http://www.webdeveloper.com/java/java_programming_grounds_up.htm 18. Thinking in Java, http://www.bruceeckel.com 19. http://javaboutique.internet.com/2DTutorial/article_Java2DTutorial.html http://wdvl.internet.com/Authoring/Java/Intro/ 20. http://www.serina.es/Bvillarroya/Informatica/tutoriales1_t.html 21. http://members.tripod.com/~MoisesRBB/tutores.html 22. http://www.javaworld.com/javaworld/topicalindex/jwtiindex.html
Programa por semana y por clase
Semana Clase Tema
1 1 Introducción del curso y Reglas de Juego ¿Por qué se debería aprender POO? Repaso de algorítmica y de programación: Estructuras de secuencia (operadores de asignación y casting) Estructuras de selección if ifelse switch operador ternario “?” ifelse anidadas operadores lógicos Estructuras de repetición while do while for sentencias de repetición anidadas break continue ciclos sobre arreglos de tipos primitivos 2 Laboratorio de Conceptos Básicos de Programación en Java Compilar y Ejecutar un programa en Java Ejercicios con ciclos y condicionales sobre arreglos de tipos primitivos Entrada y salida por consola (utilizando Scanner y println y printf) 2 3 Conceptos de Objetos Clases Paquetes de clases: creación y visibilidad Visibilidad de Clases: pública Objetos , Atributos Visibilidad Atributos: pública, privada Métodos modificadores y analizadores Visibilidad de Métodos: pública, privada Encapsulamiento de Atributos 4 Definición canónica de una clase Proceso de Instanciación de objetos Constructores por defecto Constructores con parámetros Usando los objetos La propiedad this, La notación punto (.) Arreglos de objetos de negocio 3 5 Atributos de clase (estáticos), Final Métodos Métodos de instancia Parámetros Encapsulamiento de métodos Sobrecarga de métodos Métodos static Métodos final
6 Laboratorio de definición de una clase canónica, atributos y métodos Compilar y Ejecutar un programa en Java con varias clases: una clase de negocio y un test que trabaja con arreglos de objetos de negocio. Práctica de atributos y métodos de instancia y de clase: manejo de cadenas, fechas y calendarios (String y GregorianCalendar) 4 7 Diagrama de Clases Java Concepto Características Elementos de un diagrama de clases Java Relaciones entre clases Relación de asociación Concepto Representación Navegabilidad Cardinalidad Roles y /o calificadores Relaciones como atributos y referencias Relación de dependencia 8 Laboratorio de relaciones simples entre clases (relaciones 11 y alguna relación 1muchos modelada con arreglos). 5 9 Persistencia básica: lectura y escritura de archivos de texto Persistencia avanzada Archivos binarios, de datos primitivos Serialización (objetos) 10 Laboratorio de persistencia con archivos de texto y binarios: un programa en Java con varias clases: una clase de negocio y un test que trabaja con arreglos de objetos de la clase de negocio, leyendo datos de archivos y generando reportes manejo de menú (con opciones de salvar y cargar) Documentación de clases (javadoc) Generar el jar de un programa 6 11 Relación de Agregación/Composición relaciones de Cardinalidad 1 a muchos: colecciones/contenedores: List (ArrayList, Vector) Diseño de la interacción de objetos Mensajes de creación Descubriendo métodos Visibilidad entre objetos Relaciones bidireccionales muchos a muchos Asignación de responsabilidades a clases 12 Laboratorio interacción de objetos (práctica de visibilidad), interacción muchos a muchos entre objetos, con listas. 7 13 Ampliación de Colecciones Generics/Templates Colecciones (ordenamiento) Iteradores: sentencia for mejorada Refactoring, depuración paso a paso, navegar desde el IDE 14 Laboratorio de ordenamiento de listas 8 15 Map: Hashtable, HashMap Práctica de Maps 16 PRIMER PARCIAL Entrega de Proyecto 1 9 17 Solución del parcial 1
Relación de Generalización Concepto de Herencia Beneficios de la Herencia Reconociendo la herencia Superclases y Subclases Visibilidad protegida Reglas de Herencia Herencia con clases concretas Constructores en la herencia Uso de this y super 18 Sustentación del proyecto 1 10 19 Polimorfismo Concepto Beneficios Declarando e instanciando clases polimórficas Conversión entre clases en una relación de herencia Herencia avanzada Clases abstractas Métodos abstractos Sobreescritura de métodos Clase final 20 Laboratorio de Herencia, polimorfismo y clases abstractas 11 21 Problemas de la herencia y alternativas (composición de objetos e interfaces) Relación de Realización Concepto de Interfaces JDK 8 en adelante: las interfaces contemplan defaults y métodos estáticos Clases abstractas vs interfaces Herencia múltiple con interfaces Combinación de interfaces y clases abstractas Práctica de Interfaces combinadas con clases abstractas 22 SEGUNDO PARCIAL : 46 pm Fecha Límite segundo proyecto 12 23 Solución del parcial 2 Enumerados 24 Sustentación proyecto 2 13 25 Manejo de Excepciones Chequeo de errores Manejo de excepciones: try/catch, try/catch/finally, throws Sentencia exit Excepciones personalizadas 26 Práctica con Enumerados y Excepciones (labo) 14 27 Interfaz gráfica de usuario simple Componentes GUI en java (Swing, AWT) Contenedores: Jframe, JApplet , JPanel Layouts: null, border, etc. Componentes: Etiquetas, campos de entrada de texto, botones de comando Mostrar proyectos de semestres anteriores 28 Práctica GUI simple con elementos básicos Manejo de eventos 15 29 Interfaz Gráfica de Usuario avanzada (1) 5. JOptionPane
6. Botones de radio 7. Eventos de mouse y teclado 8. Contenedores combinados: JFrame con JPanel 9. JTable dentro de Scroll 10. Tarjetero (JTabbedPane) Modelo de eventos Swing 30 Laboratorio GUI avanzado con JTable y JTabbedPane 16 31 Interfaz Gráfica de Usuario avanzada (2) 11. Cajas de chequeo 12. Listas (combos) 13. Seleccionador de archivo 14. menus Otros 32 Laboratorio de GUI avanzado con elementos adicionales Soporte al proyecto 17 TERCER PARCIAL (semana de exámenes) 17 Fecha Límite Tercera Entrega del proyecto 17 Sustentación de Proyecto 3: (semana de exámenes)