Programacion Orientada a Objetos
Ingenieria Cibernetica y en Sistemas Computacionales
Tercer Semestre

Grupo 312. Semestre Agosto Diciembre 2001
Dias de clases: Martes,Jueves y Viernes. 7 a 9 am
Lugar: Sala I
Profesor: Gustavo De la Cruz Tovar

Total de clases: 
   12 en Agosto 
   12 en Septiembre
   13 en Octubre
   11 Noviembre
   48 en todo el semestre (96 horas)

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.
+ Estructuras de datos y Diseño de algoritmos.

Herramientas de la clase:
+ Compilador Java. Sugerido JDK 1.3 de Sun Microsystems. No utilizar ninguna versión
de Java que provenga de Microsoft.
+ Plataforma Windows

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. Enfoque de programación orientado a objetos. Relación proveedor/cliente.

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

Tema III. Encapsulamiento y Delegación.
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. Genericidad
4. Ligado estático y dinámico
5. Diseño orientado a interfases.
6. Herencia múltiple con interfases
7. Patrones de diseño
8. Estructuras de datos

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. Aplicación a módulos gráficos
5. Aplicación a componentes de software


Laboratorio
Tema I. 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 II. 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. 

Tema III. 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 IV. 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 V. Uso de clases predefinidas de Java (6 horas)
1. Estructuras de datos
2. Ambiente grafico. AWT.
3. JavaBeans

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

Bibliografia:

* Deitel. Como programar en Java. 1er. Edicion. Ed. Pearson
* Meyer. Construccion de Software orientado a Objetos. 2a. Edicion.Ed. Pearson
* Flanagan. Java Instantaneo. Ed. Mc Graw Hill.
* http://www.mindview.net/Books - Bruce Eckel. Thinking in Java
+ 
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 trabajos escritos en formato ASCII o HTML, si se necesitan incluir figuras, 
deben estar en formato GIF, JPEG o PNG y anexarlas al correo. No utilizar
formatos propietarios (MS Word u otros paquetes de edicion de texto)
Para trabajos de programacion se deben entregar solo el codigo fuente.
Enviar todos los archivos compresos, 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.

Prácticas.
La entrega se hara de manera electrónica. 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.

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 y 
manejo de archivos.
Lo desarrollaran de 1 a 3 personas.

Evaluacion

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


Puntos a considerar:

+ La clase comienza a las 07:00 am. 
Se concluira tipicamente a las 08:45 am, dejando 15 minutos para aclarar dudas personales con el profesor.
+ La asistencia a clase es obligatoria. En caso de no poder asistir, 
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.
 Para resolucion de dudas originadas por dicha falta, utilizar los 15 minutos finales de la clase.
+ Las tareas y practicas deben ser entregadas con puntualidad.
+ Tareas, practicas, examenes que sean copiados son calificados con cero puntos.
+ Negocicacion de entregas,debe ser por el jefe de grupo. Procurar avisar con anticipacion retrasos en trabajos (1 semana).
No se acepta 24 horas antes.
+ Proyecto final copiado es motivo de examen extraordinario, 
anulando las calificaciones de todo el semestre, sin punto de discusion.
+ 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, tareas de otras materias.
 Si alguien no respeta este punto, se le pedira ceda su computadora a otra persona.
+ Por respeto a la clase, queda prohibido el uso de telefonos celulares, 
radiolocalizadores o pagers. Si es necesario tenerlos activos, 
ponerlos en el modo vibrador para que no molesten el curso de la clase y salir
 discretamente del salon en caso de tener que atender la llamada.

    Source: geocities.com/gusdelact/cib3122001

               ( geocities.com/gusdelact)