Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Programación Orientada a Objetos Syllabus Nombre de la Asignatura Id de la Asignatura Fecha de Actualización Horas semanales Créditos Académicos Pre­Requisitos Vigencia Programación Orientada a Objetos Julio de 2016 Horas Contacto Clase : 4 Horas Trabajo Independiente : 2 2 Pensamiento Algorítmico // ó // Fundamentos de Programación // ó // Programación Algorítmica 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 Página 1 de 6 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 Libros­Internet: 3. An introduction to object­oriented 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_Java2D­Tutorial.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/jw­ti­index.html Página 2 de 6 Programa por semana y por clase Semana Clase Tema Introducción del curso y Reglas de Juego 1 1 ¿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 if­else switch operador ternario “?” if­else 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 Laboratorio de Conceptos Básicos de Programación en Java 2 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) Conceptos de Objetos 2 3 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 Definición canónica de una clase Proceso de Instanciación de objetos 4 Constructores por defecto Constructores con parámetros Usando los objetos La propiedad this, La notación punto (.) Arreglos de objetos de negocio Atributos 3 5 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 Página 3 de 6 6 4 7 8 5 9 10 6 11 12 7 13 8 14 15 16 9 17 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) 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 Laboratorio de relaciones simples entre clases (relaciones 1­1 y alguna relación 1­muchos modelada con arreglos). Persistencia básica: lectura y escritura de archivos de texto Persistencia avanzada Archivos binarios, de datos primitivos Serialización (objetos) 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 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 Laboratorio interacción de objetos (práctica de visibilidad), interacción muchos a muchos entre objetos, con listas. Ampliación de Colecciones Generics/Templates Colecciones (ordenamiento) Iteradores: sentencia for mejorada Refactoring, depuración paso a paso, navegar desde el IDE Laboratorio de ordenamiento de listas Map: Hashtable, HashMap Práctica de Maps PRIMER PARCIAL Entrega de Proyecto 1 Solución del parcial 1 Página 4 de 6 10 18 19 11 20 21 22 12 23 13 24 25 14 26 27 28 15 29 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 Sustentación del proyecto 1 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 Sobre­escritura de métodos Clase final Laboratorio de Herencia, polimorfismo y clases abstractas 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 SEGUNDO PARCIAL : 4­6 pm Fecha Límite segundo proyecto Solución del parcial 2 Enumerados Sustentación proyecto 2 Manejo de Excepciones Chequeo de errores Manejo de excepciones: try/catch, try/catch/finally, throws Sentencia exit Excepciones personalizadas Práctica con Enumerados y Excepciones (labo) 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 Práctica GUI simple con elementos básicos Manejo de eventos Interfaz Gráfica de Usuario avanzada (1) 5. JOptionPane Página 5 de 6 16 30 31 32 17 17 17 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 Laboratorio GUI avanzado con JTable y JTabbedPane Interfaz Gráfica de Usuario avanzada (2) 11. Cajas de chequeo 12. Listas (combos) 13. Seleccionador de archivo 14. menus Otros Laboratorio de GUI avanzado con elementos adicionales Soporte al proyecto TERCER PARCIAL (semana de exámenes) Fecha Límite Tercera Entrega del proyecto Sustentación de Proyecto 3: (semana de exámenes) Página 6 de 6