ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2011 (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: Felipe Urra elo329 ARROBA elo PUNTO utfsm PUNTO cl.
Lista de correo: elo329 arroba listas PUNTO utfsm PUNTO cl, inscripción aquí.
Textos:
  1. "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
  2. "Core Java 2, Volume II Advanced Features", Cay S. Horstmann and Gary Cornell, Sun Microsystems Press, 2003. (Hay copias en Biblioteca)
  3. Object-Oriented Programming Using Java, by David J. Eck, Anban Pillay (local)
  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 USM) Página 1er. sem 2010
Clase Material
Material adicional de apoyo
1:07/3 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 con control PI,
Simulador de masas y resortes
Perfil del Ingeniero Solicitado el 2009
2:09/3 Objeto, comportamiento, estado; clase, jerarquías, herencia, polimorfismo; Ligado dinámico, abstracción, subtipo. Diseño orientado a objetos (pdf, ppt). 

3:14/3
Conluir material del 09/3. Introducción a Java: Máquina virtual. Entornos de desarrollo para proyectos en Java (pdf, ppt). Ejemplo: FirstSample  Si arroja warnings, usar: javac -encoding ISO8859_1 FirstSample.java
SecondSample
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:16/3 Tipos de datos y control de flujo básicos (pdf, ppt). Ejemplos: Puntos y líneas, prueba; InputExample InputTest Clase Scanner
5:21/3
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.

23/3
Suspensión por "Semana Sansana"

6:28/3
Java: Herencia, clases abstractas, clase Object -equals, clone- (pdf, ppt)  Ejemplo: Manager son empleados, Rectangle.java
7:30/3
Continuamos con Herencia, clases abstractas, clase Object -equals, clone- (pdf, ppt) 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:04/4
Terminamos clase 30/3
Java Collections
9:06/4
Java: interfaces, clases anidadas: internas y anónimas (pdf, ppt). Ejemplos: Empleados comparables, clase Interna a una clase, clase interna a un método, clase anónima, CloneTest.java 
10:11/4
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic, Mimic, MimicCharByChar. JFrame  WindowListener  WindowsAdapter
11:13/4
Programación de interfaces gráficas en Java. Swing (pdf, ppt) Ejemplos: GlassPaneDemo LayeredPane MenuDemo CreaBotones, Sketch, MouseTest, ShapesDemo2D 
Grupos en proyecto son de 3 personas (casos de 4, hablar con profesor) Tutorial sobre Swing, Guía visual de las componentes de Swing, Programas de ejemplo
12:18/4 Continuamos con Programación de interfaces gráficas

13:20/4 Java: Manejo de excepciones (pdf, ppt). Ejemplos: ExceptionalTest
Generación de paquetes y documentación, Javadoc (pdf. ppt), Ejemplos:PackageTest, Account  Resultados de Javadoc
Tutorial Excepciones
Documentación de código en Java 
14:25/4 Java: Manejo de excepciones (pdf, ppt). Ejemplos: ExceptionalTest
Generación de paquetes y documentación, Javadoc (pdf. ppt), Ejemplos:PackageTest, Account  Resultados de Javadoc
Grupos en proyectos podrán ser de 4 personas.
15:27/4 Primer Certamen
Contendios a evaluar hasta antes de excepciones.
De Ariel Acuña a Gabriel Juri en B221.
De Rakesh Kamal a Carlos Wright en C-233.
16:02/5
Applets (pdf, ppt)
NotHelloWorldApplet (Prueba); TumbleItem (Prueba); Calculator Applicaton, Applet (Prueba embebida, Popup); Chart (Prueba); Tic Tac Toe; Bookmarks (Prueba).
Ver demo de Applet Graph Layout
Tutorial sobre Applets
17:04/5
Terminamos Applets

18:09/5 Administradores del Espacio (Layout Managers)
Java Archives (pdf, ppt)
Motivación: Método (Jorge Guerra, Pin Pon) Mauricio Venegas
Control de Versiones Usanso SVN (pdf, ppt)
Tutorial sobre creación de jar files
19:11/5 Ingeniería de software: Introducción (pdf, ppt)
 Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt)

20:16/5
Continuamos con Desarrollo Iterativo e Incremental
Herramientas de apoyo al desarrollo de software:  Casos de uso. Tarjetas CRC. UML (Unified Modeling Language) (pdf, ppt)
ArgoUML (wiki)
UML Umbrello
Umbrello handbook (en, es)
21:18/5
Terminamos Tarjetas CRC y UML.
Niveles de Certificación CMM (pdf, ppt)

22:23/5
Introducción a C++ (pdf, ppt)

Pre-procesador 
C++ Resources Network
Tutorial C++
IO_simple.cpp IO_simple_2.cpp
Revisar construcción de Makefiles
23:25/6
Clases en C++ (pdf, ppt).  Ejemplos: CRectangle
Constantes, referencias y cambios de tipo en C++ (pdf, ppt)
Type casting: dynamic_cast <new_type> (expression), static_cast <new_type> (expression), const_cast <new_type> (expression)
24:30/6
Sobrecarga de Operadores. Ejemplo: CVector

25:01/6
No hubo asistencia por paro de estudiantes

26:02/11
Calificador Friend y Static (pdf, ppt), Ejemplo: Función Friend

27:07/11
Manejo de punteros y objetos en memoria dinámica (pdf, ppt)
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida. PrivadaLigado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplo: VirtualMotor, CatsAndDogs

09/11
Excepciones (pdf, ppt)
Programación Genérica: Plantillas (templates) en C++ (pdf, ppt) Estudiar C2 2008 y 2009: cuentaRepeticiones, Objeto función (Functor) Maximo. Biblioteca estándar de plantillas, Algoritmos genéricos: Vector (pdf, odp)
Se suspendió clase por movimiento estudiantil
28:14/11
Segundo Certamen M301

Listas (pdf, odp)
Patrones de Diseño (pdf, odp) Ejemplo en Java MVC
No quedó tiempo por movimiento estudiantil
29:24/11
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.
En Sala P-312 de las 15:30 a 18:50 hrs.

Certamen Recuperativo
  ?

Evaluación  Notas Finales
Antes de movimiento estudiantil:
                                    /  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
Luego de movimiento estudiantil los alumnos definen:
            Nota Final=0.55*Certámenes + 0.25*Tareas + 0.20*Proyecto

2 Certámenes : 27 de abril y 20 de junio 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()
Vicente Almonacid, Andrés Medina, Mathias Rosenberg
C2.sol() P2
C2.Notas()
C2.Histo()
Patricio Alegre, Vicente Almonacid, Valentin Bondoux, Manuel Díaz, Francisco Díaz, Alejandra Flores, Carlos Ibáñez, Gabriel Juri, Andrés Llico, Mauricio Ludueña, Andrés Medina, Erwin Oñate,Mathias Rosenberg, Fabian Rubilar
Otros Años: 1º Certamen: 2010, 2009, 2008, 2007, 2006, 2005, 2004;      Certamen Final: 2010, 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)
Tarea (grupos de 2 integrantes)
Evaluación
Mejores Soluciones
Tarea 1: Masas y Resortes colgantes afectos a gravedad y roce con aire. Plazo de entrega 18.04.11, 23:59 hrs.
T1
Patricio Alegre & Pablo EscalanteDiego MartínezAndrés Medina & Hernan Barrios
Tarea 2: Bolas, resortes y elásticos colgantes afectos a gravedad y roce: versión gráfica. Plazo 11.05.11 23:59 hrs.
T2
Martín Cortés & Mauricio Ludueña, Carlos IbáñezGabriel Juri
Tarea 3: Applet para Simulador Gráfico de Masas, Resortes y Elásticos como Objetos de Software. Plazo 6.06.11 23:59 hrs. El paro comenzó el 1 de junio, 5 días antes del plazo original. El plazo definitivo será 5 días después de reiniciar actividades.
T3, T3.details
Marcelo Guitiérrez & Diego Manríquez, Claudio Price
Tarea 4: Bolas, resortes y ganchos como objetos de software en C++. Plazo de entrega Jueves 24/11



Proyecto grupal:   Instrucciones generales, aquí inscripción de temas, aquí temas ya inscritos. Este año tenemos 43 alumnos, los grupos son de hasta cuatro, así cada grupo podrá contar con 20 minutos para exponer.
* Inscripción: 10% por definición a tiempo Plazo:  09 de mayo. 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ón,  CronómetroEvaluar, Notas de pares.
Grupo
Tema
Insc. en Plazo
9 Mayo
Lorena Meneses V., Ariel Torres O., Manuel Díaz C., Andrés Llico G. GUI para Monitoreo de Tricicleta Solar OK
Francisco Díaz Contardo, Claudio Price González, Mathias Rosenberg Dupre Botanical Garden Management System OK
Lukas Pérez, Carlos Ibáñez, Gabriel Juri, Andrés Medina Utilización de LWJGL para Java 3D OK
César Manríquez, Marcelo Gutiérrez, Alejandra Flores, Braulio Fernandois Consulta personalizada sobre indicadores alimenticios OK
Ignacio Catrileo, Carlos Quiroz, Giovanni Rodríguez Interfaz de control/procesamiento para cámara web via applet OK
Benjamin Ginouves, Diego Martínez Sincronizador de Directorios
OK
Patricio Alegre, Pablo Escalante, Jimmy Toro GUI para control inalámbrico de moviento de un robot OK
Valentin Bondoux, Thomas Guerneve,Vicente Almonacid, Guillermo Plaza Hernández Aplicación de soporte para personas con trastornos a la memoria OK
Mauricio Ludueña, Erwin Oñate, Fabian Rubilar twiteELO , cliente de twitter con agregados basado en java OK
Martín Cortés Godoy Control remoto de un Generador de Señales No

Misceláeos
    Encuesta docente 2010
    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: BlueJ XEmacs (win o Linux, manual de emacs) , jgrasp (Java), Netbeans, Eclipse. Java Programming with Eclipse at Stanford University
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