Lenguajes de Programación III
Programacion Orientada a Objetos
Ingenieria Cibernetica y en Sistemas Computacionales
Cuarto Semestre

Grupo 413. Semestre Febrero-Julio  2004
Dias de clases: Lunes      7 - 9 am  Sala L 
                Miercoles  7 - 9 am Sala I
                Viernes    7 - 9 am Sala F
Profesor: Gustavo De la Cruz Tovar
 Egresado de ingeniería cibernética y Sistemas Computacionales. Generación 1990-1995
 Titulado en 1996, con la tésis de "Integración de aplicaciones con objetos distribuídos", obteniendo el título en diciembre de 1996.
 Estudio una maestria en Métodos matemáticos en finanzas de 1999 a 2001
 Con experiencia de seis años y medio dando clases en ULSA (desde agosto de 1997)
 La materia de POO con experiencia de 5 veces dando clases (desde enero de 1998)
 Trabaja en el IMSS como coordinador de la Divisón de Interoperabilidad, a cargo de la integración de las diversas plataformas
tecnológicas, usando Java como herramienta de integración
 Anteriormente trabajó para Algorithmics México,Ixe Banco, Cromasoft y el LCI de ULSA
 Especializado en teoría de objetos y su aplicación en tecnologías distribuídas
 Seguidor de la filosofía de software abierto, UNIX
 Su lenguaje favorito es Java, aunque C es el mejor.
 La razón por la que da clase es para ayudar a los alumnos de La Salle a descubrir como desenvolverse en el ambito de ingeniería y aplicarla. 
 Le pueden decir Gustavo, Gus. No es necesario decirle ingeniero o hablarle de usted
 Gusta de literatura de ciencia ficción, fantasía. Musica, gustos muy poco populares como música clasica.
 En tiempo libre gusta de oir musica, leer, ir al cine, caminar, nadar y estar con sus amigos.



Objetivo de la materia:

Conocer las técnicas de programación orientada a objetos para desarrollo de sistemas de software,
y que puedan ser aplicados a cualquier ambiente orientado a objetos

Conocimientos previos requeridos:
+ Programación estructurada con Lenguaje C. (Leng. de Prog 1 y II)
+ Estructuras de datos y Diseño de algoritmos. (Estructura de datos,Algoritmos, Organización de archivos)

Herramientas de la clase:
+ Compilador Java. Sugerido JDK 1.3 o JDK 1.4 de Sun Microsystems. No utilizar ninguna versión
de Java que provenga de Microsoft.
+ Plataforma Windows
+ Herramienta de diagramación para UML (DIA)
+ NetBeans ( a la mitad del semestre)

Temario:

Teoria
Tema I. Introducción a los conceptos de orientación a objetos ( 4 horas)
1. Módulos de software.
2. Diferencia de la orientación a objetos con otros enfoques.
3. Concepto intuitivo de objeto, clase, herencia y polimorfismo. 
4. Definición formal de un objeto. Tipos abstractos de datos.
5. Lenguajes orientados a objetos.
6. Ambientes orientados a objetos.
7. Análisis y Diseño orientado a objetos.
   Lenguaje unificado de modelado (UML)
   Relación cliente/proveedor
   Enfoque model-vista-controlador (MVC)
8. Programación Extrema

Tema II. Objetos y clases. (20 horas)
1. Definición de un objeto.
2. Clases. Como tipos de datos y como módulos
3. Creación de objetos. Constructores de clases.
4. Propiedades de un objeto.
5. Métodos.
6. Referencias.
7. Mensajes.
8. Estructuras de objetos. Arreglos.
9. Uso de objetos existentes.
10. Documentación de clases
11. Pruebas unitarias
12. Herramientas de compilación y ejecución

Tema III. Encapsulamiento y Delegación. (15 horas)
1. Relación cliente/proveedor.
2. Encapsulamiento.
3. Relaciones de composición. Agregación y Asociación
4. Relación 1 a 1, Relación 1 a muchos. Relacion muchos a muchos.
5. Manejo de errores. Excepciones.
6. Programación por Contrato. Aseveraciones, precondiciones y postcondiciones.
7. Delegación y reutilización
8. Enfoque modelo vista controlador

Tema IV. Herencia Simple. (6 horas)
1. Definición de herencia.
2. Jerarquías de clases y tipos.
3. Reutilización de clases existentes.
4. Reglas para uso de herencia. 
5. Encapsulamiento y herencia
6. Redefinición de métodos
7. Clases abstractas
8. Herencia múltiple

Tema V Polimorfismo e Interfases  (6 horas)
1. Polimorfismo.
2. Usos del polimorfismo
3. Generalidad
4. Ligado estático y dinámico
5. Diseño orientado a interfaces.
6. Herencia múltiple con interfaces
7. Patrones de diseño


Tema VI. Persistencia de objetos (4 horas)
1. Definición de persistencia.
2. Ciclo de vida de un objeto persistente
3. Archivos como objetos persistentes

Tema VII. Objetos y Eventos (4 horas)
1. Definición de eventos.
2. Propiedades de un evento.
3. Procesamiento asíncrono.
4. Programación orientada a eventos

Tema VIII. Interfaces usuario/sistemas de información (10 horas)
1. Interfaces visuales de usuario
2. Bibliotecas de objetos para construccion de interfaces visuales
3. Marcos de trabajo (Frameworks)
4. Componentes de software
5. Interfaces para construcción de software
6. Aplicaciones a módulos gráficos y a componentes de software


Laboratorio
Tema II. Lenguaje de programación Java. ( 6 horas)
1. Introducción al lenguaje. Programa "hola mundo"
2. Estructuras básicas del lenguaje.
   Variables.
   Operadores.
   Expresiones, instrucciones y bloques 
   Instrucciones de control de flujo
3. Lectura y salida de datos.
4. Compilación y ejecución de un programa.

Tema III. Java , Objetos y clases. (16 horas)
1. Definición de una clase en Java.
2. Constructores. Operador new
3. Definición de atributos de una clase
4. Uso de rutinas. Definición de procedimientos y funciones
5. Referencias
6. Técnicas de encapsulamiento con Java
7. Uso de clases existentes
8. Arreglos.
9. Manipulación de objetos con diversas estructuras
10. Manejo, definicion y generación de excepciones.
11. Manipulación de cadenas de caracteres. 
12. Uso de clases predefinidas de Java
13. Uso de Junit y Ant

Tema IV. Java y Herencia. (8 horas)
1. Implantación de herencia en Java. Palabra extends
2. Jerarquias de clases propias de Java.
3. Uso del operador super.
4. Extensión de clases existentes
5. Uso de módulos gráficos como ejemplo de herencia

Tema V. Java, polimorfismo e interfases (6 horas) 
1. Implantación del polimorfismo en Java.
2. Ligadura dinámica.
3. Cambios de tipo de datos. Operador instanceof para validar tipos
4. Uso de interfases. Palabra reservada interfase e implements
5. Ejemplos de uso de interfases




Tema VI. Archivos  (6 horas)
1. Clases Java para manipular archivos
2. Operaciones basicas de administracion de archivos

Tema VII.  (6 horas)
1. Modelo de eventos con Java
2. Ambiente grafico. Swing

Tema VIII.
3. Modelo de componentes JavaBeans

Bibliografia:
* Eckel. Pensando en Java. Segunda Edición. Ed. Pearson
** Joyanes. Programación en Java 2. 1er. Edición. Ed. McGrawHill
** Deitel. Como programar en Java. 1er. Edicion. Ed. Pearson
** http://www.mindview.net/Books - Bruce Eckel. Thinking in Java
* Meyer. Construccion de Software orientado a Objetos. 2a. Edicion.Ed. Pearson
* Flanagan. Java Instantaneo. Ed. Mc Graw Hill.
+ Booch, Rumbaguh, Jacobson. UML
+ Gamma. Design Patterns. Ed. Addison Wesley.
+ Jaworski. Java 1.2 al Descubierto. Ed. Pearson.
+ Coad. Java Design. Ed. Yourdon Press.
+ Flanagan. Java examples in a Nuthsell. Ed. O'Reilly.
+ http://java.sun.com/jdc. Tutoriales de Java

NOTA 
** significa que es un libro sobre el cual se van a pedir diversas tareas.
* significa libros que son utilizados como fundamento esencial de la materia
+ libros de consulta 

Tareas:
La entrega se hara de manera electrónica.
Para todas las entregas, el alumno debe crear su página personal en algún sitio de Internet, donde
subira el resultado de sus tareas
Para trabajos escritos en formato ASCII o HTML, si se necesitan incluir figuras, 
deben estar en formato GIF, JPEG o PNG . No utilizar
formatos propietarios (MS Word u otros paquetes de edicion de texto)
Para trabajos de programacion se deben entregar solo el codigo fuente.Subir el codigo fuente en un archivo compreso, en formato ZIP.
La cuenta de correo a donde se envia es gusdelact@yahoo.com.mx. Incluir en
el campo Asunto: (Subject:) el nombre de la persona que entrega. En el cuerpo del correo indicar
la direccion de WWW (o liga HTTP) donde se encuentra la tarea.

Prácticas.
La entrega se hara de manera electrónica.
Para todas las entregas, el equipo debe crear su página personal en algún sitio de Internet, donde
subira el resultado de sus prácticas
Para trabajos escritos en formato ASCII o HTML, si se necesitan incluir figuras, 
deben estar en formato GIF, JPEG o PNG . No utilizar
formatos propietarios (MS Word u otros paquetes de edicion de texto)
Para trabajos de programacion se deben entregar solo el codigo fuente.
Subir TODA la práctica en un archivo compreso, en formato ZIP.
La cuenta de correo a donde se envia es gusdelact@yahoo.com.mx.
 Incluir en el campo Asunto: (subject:) el nombre de uno de los integrantes del equipo y en el cuerpo del mensaje el nombre de todos los 
integrantes del equipo, así como la direccion de WWW (o liga HTTP) donde se encuentra la práctica.

Equipos de trabajo:
De 1 a 3 personas.

Proyecto Final.
Construcción de una aplicación que permita aplicar los conceptos adquiridos en la materia,
incorporando el manejo de clases, herencia, polimorfismo, interfases gráficas manejo de estructura de datos y  organización de archivos.
Lo desarrollaran de 1 a 3 personas.

Evaluacion

Tareas: 10 % (promedio de todas las tareas entregadas)
Prácticas (3): 20% 
Examenes (3) : 30%
Proyecto Final: 40%


Puntos a considerar:
+ Considerar que estan en Universidad y el comportamiento esperado es de gente joven con criterio.
+ Al profesor lo que mas le interesa es que los alumnos busquen el conocimiento, no que sea impuesto. 
Es valido discutir con orden y uso de la razón puntos que no se esté de acuerdo con el profesor.
+ Evitar la cultura del silencio en la cual no se le diga al profesor posibles fallas, actitudes subjetivas, falta de claridad al explicar o en dar 
instrucciones.
+ Mas que un profesor que manda, es un profesor que GUIA a los alumnos en una dinámica en la cual se forma un equipo de trabajo y no un ambiente de 
quien tiene más autoridad
+ La clase comienza a las 07:00 am, Se concluira tipicamente a las 08:50 am  dejando 10 minutos para aclarar dudas personales con el profesor.
+ No es necesario pedir permiso para salir del salón, pero se debe hacer con orden. 
Favor de salir del salón para asuntos que no distraigan del curso de la clase
+ La asistencia a clase es obligatoria. La asistencia se tomará al FINAL de la clase. 
+ En caso de no poder asistir a clase, es responsabilidad del alumno 
estudiar de manera autonoma los puntos que no pudo tomar. 
No es responsabilidad del profesor dar marcha atras a la clase para regulalizar alumnos atrasados.
+ Las tareas y practicas deben ser entregadas con puntualidad.
+ Tareas, practicas, examenes que sean copiados son calificados con cero puntos.
+ Negocicacion de entregas de prácticas,debe ser por el jefe de grupo. 
Procurar avisar con anticipacion retrasos en trabajos (1 semana). No se aceptan negociaciones 24 horas antes.
+ Proyecto final copiado es motivo de examen extraordinario, anulando las calificaciones de todo el semestre, sin punto de discusión.
+ La direccion de correo para dudas, comentarios y peticiones,  
es gusdelact@yahoo.com.mx. 
Por favor poner nombre completo de la persona en el "Asunto" (Subject) del programa
+ La asistencia al examen es obligatoria, y en caso de no hacerlo, el examen sera calificado con 0 puntos. 
Se pide puntual asistentica ese dia, y prevenir cualquier contingencia en la fecha fijada.
+ El equipo de computo debe utilizarse para las labores de la materia.No usarlo para navegar en Internet, chat, juegos,tareas de otras materias. 
Si alguien no respeta este punto, se le pedira ceda su computadora a otra persona. Si la actitud de la persona es persistente a lo largo de las clases, 
se le penalizará con un punto menos sobre la calificación final
+ Por respeto a la clase y educación general, queda prohibido el uso de telefonos celulares,  radiolocalizadores o pagers. 
Si un dispositivo de este estilo suena en clase,será decomisado por el profesor y devuelto una semana después.



    Source: geocities.com/gusdelact/cib4132004

               ( geocities.com/gusdelact)