FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INGENIERÍA DE SISTEMAS
Nombre de la
asignatura
PROGRAMACIÓN ORIENTADA A OBJETOS
Código de la asignatura
Fecha de Actualización
Miércoles, Enero 28, 2008
Intensidad horaria
semanal
Horas Contacto
4
Horas Trabajo Independiente
5
Créditos Académicos
2
Pre-requisitos
// Pensamiento Algorítmico // ó // Fundamentos de Programación //
ó // Programación Algorítmica //
Período Académico de
Vigencia
2008-01
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.
Desarrollo de Proyectos
3.
Talleres basados en problemas.
NO-Presencial:
1.
Tareas y ejercicios extra clase
2.
Preparación de clase
3.
Preparación de evaluación
4.
Desarrollo de Proyectos
5.
Preparación de Talleres
Evaluación
Parcial I 20%
Parcial II 15%
Parcial III 15%
Laboratorios 15%
Proyecto I 10%
Proyecto II 8%
Proyecto III 10%
Quices y Tareas 7%
Tal como lo especifica el reglamento de estudiantes de la Universidad, cualquier intento de
fraude en las evaluaciones de la asignatura
(tareas, quices, parciales, ensayos, exposiciones,
etc.) se considera falta grave y podrá dar origen a la apertura de un proceso disciplinario que
podría acarrear sanciones disciplinarias consignadas en el capítulo 6 del Reglamento de
Estudiantes
BIBLIOGRAFÍA
TEXTO GUIA
1.
Eckel, Bruce. Piensa en JAVA, cuarta edición, Prentice Hall, 2007
REFERENCIAS
BIBLIOGRÁFICAS
2.
An introduction to object-oriented programming with Java
Wu, C. Thomas. 2006. [BIBLIOTECA]
3.
Introduction to JAVA programming comprehensive version. Liang, Y.
Daniel. 2007. [BIBLIOTECA]
4.
Java in two semesters.Charatan, Quentin. 2006. [BIBLIOTECA].
5.
Java generics and collections. Naftalin, Maurice. 2007. [BIBLIOTECA].
6.
Java the complete reference, J2SE 5 edition. Schildt, Herbert.2005.
[BIBLIOTECA]
7.
Java an introduction to problem solving & programming.2005.
[BIBLIOTECA]
8.
Savitch, Walter. Resolución de Problemas con C++, Segunda Edición.
Prentice Hall, 2000
9.
Larman, Craig, UML y Patrones, Segunda Edición, Pearson Educación,
2002.
10.
Thomas Wu, Introduccion a la Programacion Orientada a Objetos con Java,
McGraw Hill, 2001.
11.
Booch Grady, Análisis y Diseño Orientado a Objetos, Addison Wesley, 1996
12.
Joyanes Luis, Programación Orientada a Objetos, McGraw Hill, 199813.
H.M. Deitel / P.J. Deitel, “Java How to Program”, Third edition. Prentice
Hall
14.
Barker Jacquie, Beginning Java Objects: From concepts to Code, Wrox,
2000. ISBN 1861004176.
15.
Terrence W. Pratt, Marvin V. Zelkowitz, "Lenguajes de Programación.Diseño e Implementación". Prentice Hall. 3ra. Ed.1996
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
Contenidos Temáticos
1.
Paradigmas de Programación (Imperativos, POO, Lógico, funcional)
2.
Elementos básicos de la orientación a objetos
3.
Proceso de Instanciación
4.
Principios de diseño (Diagrama de clases)
5.
Excepciones
6.
Colecciones
7.
Persistencia
8.
Interfaz gráfica
SEMANA CLASE TEMA FECHA ACTIVIDADES/TRABAJO INDEPENDIENTE
1 1
1. Introducción del curso y Reglas de Juego
2. Repaso de algorítmica y de programación
3. ¿Por qué se debería aprender POO?
29/01/2008 Entrega del enunciado del primer proyecto
1 2
Conceptos de Programación
1. Variables: declaración, inicialización, cast,
alcance 2. Expresiones aritméticas 3. Estructuras de secuencia 4. Operadores • Asignación • Asignación compuesta • Incremento/decremento 5. Estructuras de selección • if • if-else • switch • operador ternario “?” • if-else anidadas
•
operadores lógicos 31/01/2008 2 1 Conceptos de Programación 6. Estructuras de repetición • while • do while • for• sentencias de repetición anidadas
• break
• continue
05/02/2008
2 2
Laboratorio de Conceptos Básicos de Programación en Java
• Documentación de clases (javadoc)
• Compilar y Ejecutar un programa en Java
07/02/2008
3 1
1. 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
• Definición canónica de una clase
3 2
1. Proceso de Instanciación de objetos
• Constructores por defecto
• Constructores con parámetros 2. Usando los objetos
• La propiedad this
• La notación punto (.)
• Laboratorio de definición de una clase canónica 14/02/2008 4 1 1. Atributos • De clase (estáticos) • Final 2. Métodos • Métodos de instancia • Parámetros • Encapsulamiento de métodos • Sobrecarga de métodos • Métodos static • Métodos final 19/02/2008
4 2 Laboratorio de definición de una clase con métodos sobre-escritos y con un main.
21/02/2008
5 1
1. Diagrama de Clases Java
• Concepto
• Características
• Elementos de un diagrama de clases Java
• Relaciones entre clases 2. Relación de asociación • Concepto • Representación • Navegabilidad • Cardinalidad • Roles y /o calificadores
• Relaciones como atributos y referencias 3. Relación de dependencia
4. Asignación de responsabilidades a clases
26/02/2008 Creación del Diagrama de Clases a partir de un enunciado
5 2
1. Relación de Agregación/Composición
• Relaciones de Cardinalidad 1 a muchos: colecciones/contenedores • Arreglos 28/02/2008 6 1 1. Colecciones • Generics/Templates • Colecciones
• Iteradores: sentencia for mejorada
• Arraylist
• Hashtable
2. Relaciones bidireccionales muchos a muchos 3. Asignación de responsabilidades a clases
6 2 Laboratorio de definición de una clase con sus relaciones e implementación de contenedores.
06/03/2008 7 1 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 2. Relación de Realización
• Clases interfaces
11/03/2008 Entrega del enunciado del segundo proyecto
7 2 Laboratorio de definición de herencia entre clases e implementación de interfaces 13/03/2008 8 1 1. Herencia • Clases abstractas • Métodos abstractos
• Clases abstractas vs interfaces
• Constructores en la herencia
• Uso de this y super
• Sobre-escritura de métodos
• Clase final
25/03/2008
8 2 Laboratorio de definición de herencia entre clases (clases abstractas)
27/03/2008 Entrega del primer proyecto
Viernes 28 de marzo. 6pm
Primer Parcial Sábado 29 de Marzo de
2008.
9 1
1. Polimorfismo
• Concepto
• Beneficios
• Declarando e instanciando clases polimórficas
• Conversión entre clases en una relación de herencia
01/04/2008
9 2 Laboratorio de Herencia y Polimorfismo 03/04/2008
10 1
1. Enumerados
2. Manejo de Excepciones
• Chequeo de errores
• Manejo de excepciones: try/catch, try/catch/finally, throws
• Sentencia exit
• Excepciones personalizadas
08/04/2008
11 1
1. Diseño de la interacción de objetos
• Mensajes de creación
• Descubriendo métodos
• Visibilidad entre objetos
• Asignación de responsabilidades a clases
15/04/2008
11 2 Laboratorio de Diseño de interacción de objetos del Proyecto 2
17/04/2008
Segundo Parcial. Sábado 26 de Abril de
2008. 7 a.m.
12 1
1. Interfaz grafica de usuario
• Componentes GUI en java (Swing, AWT)
• Contenedores o JFrame o JApplet o JPanel
• Layouts: null, border, etc.
• Componentes: Etiquetas, campos de entrada de texto, botones de comando
• Manejo de eventos
22/04/2008
12 2 Laboratorio de Interfaces Gráficas 24/04/2008
13 1
2. Interfaz Gráfica de Usuario
• JOptionPane
• Cajas de chequeo
• Botones de radio
• Listas
• Eventos de mouse y teclado
• Contenedores: JFrame con JPanel
• JTable • Aplicaciones Java 29/04/2008 13 2 FESTIVO 01/05/2008 14 1 Persistencia • Archivos de texto • Serialización
06/05/2008 Entrega del enunciado del tercer proyecto
14 2 Laboratorio de Persistencia 08/05/2008 Entrega del proyecto 2 Viernes 9 de mayo. 6pm
15 1
1. Diseñando aplicaciones OO
• Asignación de responsabilidades
• Estilo de programación por capas
• Paquetes de clases
13/05/2008
16 1
1. Mejores prácticas de POO
• Pruebas y depuración • Refactoring • Estándares de programación • Usando librerías • Despliegue de aplicaciones 20/05/2008
16 2 Laboratorio de mejores prácticas del proyecto 3 22/05/2008
Tercer Parcial. Sábado 24 de mayo. 7am.