Syllabus - Departamento de Ingeniería de Sistemas

Anuncio
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
Descargar