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