ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2010 (32 sesiones)
General
Contenidos
Evaluación
Tareas
Proyectos
Profesor: Agustín J. González,   Horario de Oficina
Oficina:  B-301        Fono: (56-32) 2654196
Horario clases: Lunes 12:00-13:30 B-221,   Miércoles 11:45 - 13:15 B-221
Ayudante: Edward Alvarado,  elo329 ARROBA elo PUNTO utfsm PUNTO cl.
Lista de correo: elo329 arroba listas PUNTO utfsm PUNTO cl, inscripción aquí.
Textos:
  1. Object-Oriented Programming Using Java, by David J. Eck, Anban Pillay (local)
  2. "Core Java 2, Volume I Fundamentals", Cay S. Horstmann and Gary Cornell, Sun Microsystems Press, 2003. (Hay copias en  Biblioteca) Ejemplos del texto guía
  3. "Core Java 2, Volume II Advanced Features", Cay S. Horstmann and Gary Cornell, Sun Microsystems Press, 2003. (Hay copias en Biblioteca)
  4. "Data Structures in C++, Using the Standard Template Library", Timothy Budd, Addison Wesley, 1998, ISBN:0-201-30879-7 ( varias copias se encuentran en Biblioteca)
  5. "Applying UML and Patterns: an introduction to object-orientd analysis and design and the unified process", Craig Larman, Prentice Hall, second edition,  2002 ( Hay copias en Biblioteca)

Contenidos  (Programa, en web ELO) Página 1er. sem 2009
Clase:Fecha
Material
Material adicional de apoyo
1:22/03 Introducción:
Conceptos en lenguajes orientados a objetos: Paradigmas de programación: Programación declarativa, programación imperativa (orientada al procedimiento u orientada a objetos).
Ejemplos:Editor de figuras,  Puzzle, Planta
Perfil del Ingeniero Solicitado el 2009
2:24/03 Objeto, comportamiento, estado; clase, jerarquías, herencia, polimorfismo; Ligado dinámico, abstracción, subtipo. Diseño orientado a objetos (pdf, odp).  OJO nos cambiaremos de SALA a la C323 POR ESTE DÍA!

3:29/03
Introducción a Java: Máquina virtual. Entornos de desarrollo para proyecto en Java (pdf, odp). Ejemplo: FirstSample, para que no arroje warning: javac -encoding ISO8859_1 FirstSample.java Entornos de desarrollo: Sun (Oracle),
Virtual Machine, Operating system-level virtualization, Ver Editores y Ambientes de trabajo, Documentación SE 6, Tecnologías Java SE
4:31/03 Tipos de datos y control de flujo básicos (pdf, odp). Ejemplos: Puntos y líneas, prueba; InputExample InputTest Luego de esta clase usted ya debería saber instalar el JDK, haber usado algún editor adecuado, compilado y ejecutado alguna aplicación Java en aragorn.
Clase Scanner
5:5/04
Java: objetos, clases (pdf, odp). Ejemplo: Employee, ConstructorTest.

6:12/04
Java: Herencia, clases abstractas, clase Object -equals, clone- (pdf, odp)  Ejemplo: Manager son empleados, Rectangle.java
7:14/04
Continuamos con Herencia, clases abstractas, clase Object -equals, clone- (pdf, odp) Clase abstracta: PersonTest (varios archivos), Cats and Dogs, Clase Object: EqualsTest Equals es problemático en algunos casos, ideas similares aplican a clone  ReflectionTest
8:19/04
Java: interfaces, clases anidadas: internas y anónimas (pdf, odp). Ejemplos: Empleados comparables.

9:21/04
Continuamos con Clases anidadas: internas y anónimas (pdf, odp), Ejemplos: clase Interna a una clase, clase interna a un método, clase anónima.

10:26/04
Java: Manejo de excepciones (pdf, odp). Ejemplos: ExceptionalTest Generación de paquetes y documentación, Javadoc (pdf. odp), Ejemplos:PackageTest, Account  Resultados de Javadoc  Tutorial excepciones
Documentación de código Java
11:28/04
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, odp). Ejemplos: CloseableFrame, SimpleMimic, Mimic, MimicCharByChar.

12:03/05
Programación de interfaces gráficas en Java. Swing (pdf, odp) Ejemplos: GlassPaneDemo LayeredPane Memo MenuDemo CreaBotones, Sketch, MouseTest, ShapesDemo  Tutorial sobre Swing, Guía visual de las componentes de Swing, Programas de ejemplo
13:05/05
Continuamos con Swing

14:10/05
Primer Certamen Contenidos hasta clase del 3 de mayo.
El curso se separará en dos: en orden alfabético hasta a Luis Fuentes inclusive en B-221. De Benjamín Ginouvés en adelante en P-307
15:12/05
Applets (pdf, odp)
NotHelloWorldApplet (Prueba); TumbleItem (Prueba); Calculator Applicaton, Applet (Prueba embebida, Popup); Chart (Prueba); Tic Tac Toe; Bookmarks (Prueba).
Tutorial de Sun Ver carpeta demo en directorio jdk de su instalación (mi caso es: /usr/share/doc/sun-java6-jdk/demo)
16:17/05
Continuamos con Applets

17:19/05
Administradores del Espacio (Layout Managers)
Java Archives (pdf, odp)
Motivación: Método (Jorge Guerra, Pin Pon)
OJO hay cambio de sala a P-308, sólo por el día
Mostrar Guía visual de Layout Managers
Java Archives
UML Umbrello
18:24/05 Ingeniería de software: Introducción (pdf, odp)
Recordar definición de proyecto: plazo 23 de junio
Temas: Simular un Ascensor, un Estanque (contacto prof. Freund)
19:26/05 Ingeniería de software: Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, odp)

20:31/05
Herramientas de apoyo al desarrollo de software:  Casos de uso. Tarjetas CRC. UML (Unified Modeling Language) (pdf, odp)
Umbrello handbook (en, es)
21:2/06
Niveles de Certificación CMM (pdf, odp)
Introducción a C++ (pdf, odp)
Pre-procesador 
C++ Resources Network
Tutorial C++
IO_simple.cpp IO_simple_2.cpp
22:7/06
Clases en C++ (pdf, odp).  Ejemplos: CRectangle
Revisar construcción de Makefiles
23:9/06
Constantes, referencias y cambios de tipo en C++ (pdf, odp)
Manejo de punteros y objetos en memoria dinámica (pdf, odp)
Type casting: dynamic_cast <new_type> (expression), static_cast <new_type> (expression), const_cast <new_type> (expression)
24:14/06
Terminamos memoria dinámica y vemos Sobrecarga de Operadores. Ejemplo: CVector
Calificador Friend y Static (pdf, odp), Ejemplo: Función Friend

25:16/06
Herencia en C++ (pdf, odp) Ejemplos: Herencia Pública, Protegida, Privada

26:21/06
Ligado dinámico en C++: Métodos Virtuales (pdf, odp) Ejemplo: VirtualMotor, CatsAndDogs
Excepciones (pdf, odp)
Clase estándar exception.
27:23/06
Programación Genérica: Plantillas (templates) en C++ (pdf, odp) Estudiar C2 2008 y 2009: cuentaRepeticiones, Objeto función (Functor) Maximo. Biblioteca estándar de plantillas, Algoritmos genéricos: Vector (pdf, odp) STL,Algoritmos Genéricos de la STL  Clases Genéricas en Java,
28/06
Feriado Religioso
San Pedro y San Pablo
28:30/06
Listas (pdf, odp)
Patrones de Diseño (pdf, odp) Ejemplo en Java MVC

29:05/07
Segundo Certamen Contenidos desde clase del 5 de mayo hasta el 30 de junio. Se evaluará hasta los contenidos del 30/06 (fue acordado para fijar aquí la fecha de certamen)
El curso se separará en dos: en orden alfabético hasta a Luis Fuentes inclusive en B-221. De Benjamín Ginouvés en adelante en P-307
30:07/07
Presentación de Proyectos
Las presentaciones serán evaluadas por todos los presentes según:
Contenido   : El tema es pertinente al ramo, lo presentado es lo importante del tema e interesante para mí.
Dominio     : Los integrantes tienen muy buen dominio del tema, lo conocen bien.
Comunicación: Usan bien el material de apoyo y buena expresión oral de las ideas.
Demostración: Evalúe su resultado y aporte.

31:12/07
Presentación de Proyectos
32:14/07
Presentación de Proyectos Plazo de entrega de Informes en formato publicable en la WEB
33:19/07
Certamen Recuperativo
En horario de clases, si hay dificultades informar.

Evaluación  Notas Finales al 22.07; 23.07 (sin Recuperativo); 24.07 (con  recuperativo); 25.07 ; Histograma de notas finales.
                                    /  0.55*Certámenes + 0.25*Tareas + 0.20*Proyecto,  si promedio de certámenes es superior o igual a 50.
            Nota Final= <
                                    \  0.90*Certámenes + 0.06*Tareas + 0.04*Proyecto,   en otro caso
2 Certámenes : 10 de mayo y 5 de julio Dos partes, primera sin apuntes (1/3 tiempo y ponderación); segunda con apuntes (2/3 tiempo y ponderación).
Soluciones
Notas
Histograma
Alumnos destacados en cada certamen (80% o superior)
C1.sol()
C1.notas()
C1.histo()
Juan Chacón, Luis Fuentes, Rodrigo Mujica, Flavio Silva, Felipe Urra
C2.sol()
C2.notas()
C2.histo()
Cristian Carrasco, Luis Fuentes, Flavio Silva
Otros Años: 1° Certamen: 2009, 2008, 2007, 2006, 2005, 2004;      Certamen Final: 2009, 2008, 2007, 2006, 2005, 2004

Tareas de programación  y sus mejores Soluciones  Instrucciones para su entrega  Criterio general de evaluación Ayudas para su desarrollo (preparadas por Tomás Girardi 2009, actualizadas por Edward Alvarado 2010) Inicio rápido con Netbeans (preparado por Tomás Girardi 2009)
Tarea (grupos de 2 integrantes)
Evaluación
Asignación de puntaje (usado el 2009)
Mejores Soluciones
T1: Masas y Resortes como Objetos de Software,   Plazo:  28 de abril, 23:59 hrs.

Carlos Apablaza & Rodrigo Mujica, Danilo Bórquez & Benjamín Doña
T2: Simulación Gráfica de Masas, Resortes y Cuerdas como Objetos de Software, Plazo: 26 de Mayo, 23:59 hrs.

Fuentes & Benjamín Ginouvès, Flavio Silva & Omar Muñoz
T3: Simulador como Applet, Plazo: 17 de Junio, 23:59 hrs.

Cristian Carrasco & Felipe López, Luis Fuentes & Benjamín Ginouvès
T4 (Voluntaria): Masas, resortes y cuerdas como objetos de Software en C++. Plazo: 6 de Junio 23:59 hrs.

-

Proyecto grupal              (Inscripción de temas)               (Temas ya inscritos)
        Inscripción: 10% por definición a tiempo Plazo:  23 de junio. Posible proyecto para quienes tomaron elo322: hacer un applet para ilustar  cómo TCP logra confiabilidad, o cómo hace control de flujo, o cómo hace control de congestión ... Alguna  applet no hecha ya aquí. Otros: Estudie algún patrón de diseño explíquelo y haga algún ejemplo de su uso.
        Resultados y Demostración: 90 %  por informe (en formato html, plazo: el día de la última presentación), presentación y demostración.
Tómbola para orden de presentaciones Si un grupo no llega el día programado, presenta al final; su nota de presentación se multiplica por 0.8.
Orden de presentaciónCronómetroEvaluar, Notas de pares.
Grupo
Tema
Insc. en Plazo 
Fecha de Presentación
Inasistencias a presentación, queda para el final con penalización factor 0.8
Informe web a tiempo
1 Sebastián Sáez, Arturo Veras, Guillermo Plaza Autómata celular OK
19.07
OK
1.5
Cristóbal Troncoso
Juego de Aventura !ok
14.07
OK
2
Cristian Campos, Manuel Cornejo Optimización y Resolución de Modelos de Programación Lineales y Enteros en Investigación de Operaciones OK
19.07
!ok
3
Fabrizio Cabaleiro T. Francisco Soto D. Juego educativo OK
8.07
OK
4
Sebastian Alfaro - Gerardo Alvarez Simulador de Triturador
OK
8.07 OK
5
Carlos Apablaza Brito, Rodrigo Mujica Ravest Aplicación de entrenamiento para el examen psicotécnico de obtención de licencia de conducir OK
19.07
OK
6
Juan Chacón, Jonathan Olavarría Búsqueda de rutas mediante redes neuronales en videojuegos OK
8.07
OK
7
Eduardo Celis, Patricio Olivares Inventario automotora con conexión base de datos OK
12.07
OK
8
Felipe Lopez P. -- Luis Fuentes W. -- Cristian Carrasco C. Sistema de Reconocimiento Facial OK
12.07
OK
9
David Rodriguez, Daniel Gongora, Patricio Jaque Manejo de eventos SIP usando JAIN OK
12.07
!ok
9.5
Cristian Hernández, Daniel Spataris Herramienta de Gestión de Ventas !ok
19.07
OK
10
Víctor Elizondo - Daniel Velásquez Convertidor del tamaño de múltiples fotos OK
12.07
OK
11
Benjamin Ginouvès Sincronizador de directorios para múltiples computadores sobre internet OK
14.07
OK
12
Danilo Bórquez Paredes - Benjamín Doña Vial Malla Curricular de flujo de Asignaturas OK
19.07
OK
13
Edson Contreras Cardenas, Luis Marcel Barraza Interaccion con MCU y reproductor multimedia en pygtk OK
12.07
OK
14
Lukas Perez flocking, o conductas de masas OK
14.07
OK
15
Mauricio Alarcón, Felipe Urra Algoritmos genéticos y meméticos OK
14.07
OK
16
Pablo Ahumada, Jorge Cápona IDE en base a Java OK
14.07
OK
17
Juan Arredondo, Omar Muñoz, Flavio Silva Juego de Ocio (Pool) OK
14.07
OK

Misceláneos
Encuesta del 2009  Preguntas Ejemplo Certificación Java
Página ELO329 años 2008 2007 2006 2005 2004 2003  
  Instrucciones para trabajar en aragorn desde windows

Java
makefile para Java: Ejemplo, explicación.
Documentación Java SE Standard Edition 7 (local SE 6)
Tutorial Java para el autodidacta
Editores: XEmacs (win o Linux, manual de emacs) , jgrasp (Java), Netbeans, Eclipse.
C++:
Usando Preprocesador C++
C++ Preprocessor por Sh. Mannan
Bibloteca estándar de Plantillas (Standard Template Library) ( local en ELO ) (Documentación en cplusplus.com)
  Otros:
   Compilación con MAKE:
Tutorial simple (orientado a C, C++)
Servicio de Contadores y Estadísticas ELO