ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2014 de 33 sesiones
General
Contenidos
Evaluación
Tareas
Proyecto
Profesor: Agustín J. González,   Horario de Oficina
Oficina:  B-301        Fono: (56-32) 2654196
Horario clases: Lunes 11:30-13:00 P-104   Miércoles 11:30-13:00 Lab. Sala 7 P2
Ayudante: Eduardo Barra, su cuenta gmail es elo329 punto utfsm
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, 2013. (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, 2013. (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)

Contenidos  (Programa, en web USM) Página 1er. sem 2013
Clase
Fecha Material
Material adicional de apoyo
1
10/3
Introducción: Contenidos, estructura del ramo, evaluación.

Ejemplos:Editor de figuras,  Puzzle, Planta con control PI,
Simulador de masas y resortes
Simulador de bolas y paredes
Tarea 2 2013
Perfil del Ingeniero Solicitado el 2013
2
12/3
Conceptos en lenguajes orientados a objetos:
Objeto, comportamiento, estado; clase, jerarquías, herencia, polimorfismo; Ligado dinámico, abstracción, subtipo. Diseño orientado a objetos (pdf, ppt).

Introducción a Java: Máquina virtual. Entornos de desarrollo para proyectos en Java (pdf, ppt).

Ejemplo: FirstSample  Si arroja warnings asociado a acentos, usar: javac -encoding ISO8859_1 FirstSample.java   SecondSample.java clase Punto
Entornos de desarrollo: Sun (Oracle),
Virtual Machine, Operating system-level virtualization, Ver Editores y Ambientes de trabajo, Documentación SE 6
Tarea individual: Si usted tiene acceso a un PC, instale Java, compile y corra estos ejemplos
3
17/3
Tipos de datos y control de flujo básicos (pdf, ppt). 
4
19/3
Terminamos Tipos de datos y control de flujo básicos Ejemplos: Puntos y líneas, prueba; InputExample InputTest Clase Scanner
5
24/3
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.

6
26/3
Java: Herencia, clases abstractas, clase Object -equals- (pdf, ppt)  Ejemplo: ManagerTest: Managers son empleados, Rectangle.java
7
31/3
Terminar Herencia, clases abstractas, clase Object -equals-  Clase abstracta: PersonTest, Cats and Dogs, Clase Object: EqualsTest
Java: interfaces, clases anidadas: internas y anónimas -clone-(pdf, ppt). Ejemplos: Empleados comparables, clase Interna a una clase, clase interna a un método, clase anónima, CloneTest.java
Equals es problemático en algunos casos, ideas similares aplican a clone  ReflectionTest  Java Collections 
8
2/4
Suspensión de clases decretada por la Vicerrectoría Académica
9
7/4
Clases anidadas. Ejemplos de Interfaces y clases internas. Explicación de Tarea 1. 
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic, Mimic, MimicCharByChar.
JFrame  WindowListener  WindowsAdapter

9/4
Suspensión por Semana Mechona (8 - 12/4) No evaluaciones 8 - 14/4
Todos a participar

17,21,23/4
 Suspensión de clases y Paro Solidario

10
28/4
Continuar programación basada en eventos. 

11
30/4
Terminar programación basada en eventos.
Programación de interfaces gráficas en Java. Swing (pdf, ppt) Ejemplos: GlassPaneDemo LayeredPane MenuDemo CreaBotones, Sketch, MouseTest, ShapesDemo2D  
Tutorial sobre Swing, Programas de ejemplo 
12
05/5
Terminar Programación de interfaces gráficas en Java. Revisión de material sobre Swing y demostración de ejemplos SwingSet3 desde aragorn. SwingSet3 Demo, Guía Visual de componentes Swing
13
7/5
Java: Manejo de excepciones (pdf, ppt). Ejemplos: Efecto en desempeño ExceptionalTest
Tutorial Excepciones
14
12/5
Generación de paquetes y documentación, Javadoc (pdf. ppt), Ejemplos:PackageTest, Account  Resultados de Javadoc
Java Archives (pdf, ppt)
Documentación de código en Java
Tutorial sobre creación de jar files
Explicación y Creación exitosa de jar file que hoy
15
14/5
Administradores del Espacio Cómo posicionar componentes dentro de un contenedor. (Layout Managers)

19-21/5
Vacaciones estudiantes
16
26/5
Applets (pdf, ppt)
NotHelloWorldApplet (Prueba); TumbleItem (Prueba); Calculator Application, Applet (Prueba embebida, Popup); Chart (Prueba); Tic Tac Toe; Bookmarks (Prueba).
Ver demo de Applet
Tutorial sobre Applets
Para ver plugins en firefox about:plugins
17
28/5
Primer Certamen
18
2/6
Motivación: Método (Jorge Guerra, Pin Pon) ¿Es esto importante? Mauricio Venegas
Ingeniería de software: Introducción (pdf, ppt)

19
4/6
Proceso de Desarrollo de Software (pdf. ppt)
Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt)

20
9/6
Recordar plazo inscribir proyectos
Herramientas de apoyo al desarrollo de software:  Casos de uso. Tarjetas CRC. UML (Unified Modeling Language) (pdf, ppt)
ArgoUML (wiki)
UML Umbrello (es)
21
11/6
Niveles de Certificación CMM (pdf, ppt)
Introducción a C++ (pdf, pptIO_simple.cpp IO_simple_2.cpp
Certificación
Pre-procesador 
C++ Resources Network
Tutorial C++
22
16/6
Clases en C++ (pdf, ppt).  Ejemplos: CRectangle

23
18/6
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)
Revisar construcción de Makefiles
24
23/6

Sobrecarga de Operadores. Ejemplo: CVector

25
25/6
Calificador Friend y Static (pdf, ppt), Ejemplo: Función CVectorFriend
Manejo de punteros y objetos en memoria dinámica (pdf, ppt)
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida. Privada.
Tómbola
26
30/6
Ligado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplos: VirtualMotor, CatsAndDogs

27
2/7
Excepciones (pdf, ppt)
Programación Genérica: Plantillas (templates) en C++ (pdf, ppt)
Estudiar C2 2008 y 2009: cuentaRepeticiones, Máximo
Clase estándar exception
STL,Algoritmos Genéricos de la STL  Clases Genéricas en Java,
28
7/7
Biblioteca estándar de plantillas y Algoritmos genéricos: Vector (pdf, ppt)
Ejemplo de Algoritmo genérico: Objeto función (Functor).
Listas (pdf, ppt)

29
9/7
Patrones de Diseño (pdf, ppt)
Destructor Virtual, un ejemplo. Otro ejemplo.
revisitar ejemplo objeto función
Design patterns
Singleton
Ejemplo de MVC en Java, patrón observador
30
14/7
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.


16/7 Feriado Religioso

21..25/7 Vacaciones Funcionarios
31
28/7
Segundo certamen
32
30/7
Presentación de Proyectos


Certamen Recuperativo (todos los contenidos)

Evaluación  Notas Finales de Proyectos de la Asignatura
                                    /  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 : 5 28 Mayo y 30 de Junio 28 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()
Camilo Barra, Marco Benzi, Diego Carvajal, Pascal Sigel, Andrés Ulloa
C2.Sol()
C2.Notas()
C2.Histo()
Marco Benzi, Cristóbal Ramírez, Pascal Sigel
Otros Años: 1º Certamen: 2013 2012 2011 2010, 2009, 2008, 2007, 2006, 2005, 2004;      Certamen Final: 2013 2012 2011 2010, 2009, 2008, 2007, 2006, 2005, 2004

Tareas de programación  y sus mejores Soluciones: Instrucciones para su entrega  Criterio general de evaluación. Trabajando remotamente en aragorn. Documentación GitHub. Flujo de trabajo con GitHub
Tarea (grupos de 3 integrantes)
Evaluación
Mejores Soluciones
Tarea 1: Bolas, resortes y puntos de apoyo como objetos de software. Plazo 17 de abril 5 de Mayo, 23:59 hrs.
Notas, detalles update, comentarios
Javier Cabezas & Pascal Sigel
Tarea 2: Bolas, resortes y puntos de apoyo como objetos gráficos en software. Plazo 27 28 de Mayo, 23:59 hrs.
Notas, detalles, comentarios, update detalle Tarea2 (09/07) Marco Benzi, Andres Ulloa, Rene Pozo
Tarea 3: Applet para Simulación Bolas, Puntos fijos, Resortes y Osciladores como Objetos de Software. Plazo 18 20 de junio 23:59 hrs.
Notas, detalles, comentarios, detallesv2
Javier Cabezas & Pascal Sigel
Tarea 4: Bolas, Resortes y Puntos de Apoyo como Objetos de Software en C++, Plazo 29 de Julio, 23:59 hrs.
Quien la entregue sumará (Peor*0.3+ T4*0.7)*2  a las otras dos tareas, sobre el total de 4 tareas.

Proyecto grupal:   Instrucciones generales, aquí inscripción de temas, aquí temas ya inscritos.
* Inscripción: 10% por definición a tiempo Plazo:  28 de Mayo. 11 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 ... Algunas applet 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, Orden de presentaciónCronómetroEvaluar, Notas de pares.
Grupo: Si un grupo no llega el día programado, presenta al final; su nota de presentación se multiplica por 0.8 Tema
Insc./Inf. en Plazo
1. Pedro Espinoza Catrilef, Felipe Veas Soto, Luis Ojeda Orbenes
Implementación modular para manipulación de componentes de domótica
Sí/No
2. Gonzalo Callender - Matias Lacasia - Diego Carvajal Oculus Rift-Manejo de sensores
Sí/Sí
3. Pascal Sigel, Javier Cabezas
Análisis cinemático de una estructura motorizada
Sí/No
4. Roberto Cifuentes; Oscar Tapia; Camilo Barra
Gestión de Memoria a través de Memoria Virtual
Sí/Sí
5. Ignacio Ambiado - Renato Casas-Cordero
Gestión de sensores a través de Applet (Domótica)
Sí/Sí
6. Bernardo Farias, Francisco Garcia, Marcela Polanco
Arbitraje automático de partidos para RoboCup Small Size
Sí/Sí
7. Cristóbal Badilla, Roberto Farías y Cristóbal Ramírez
Programación visual usando bloques para describir flujo, variables y funciones
Sí/Sí
8. Marco Benzi, Rene Pozo, Andrés Ulloa
GeoMago
Sí/Sí
9. Anibal Catalan, Carlos Polanco, Gonzalo Sánchez, Daniel Veas
API's REST y aplicaciones multiplataforma
Sí/No

Proyectos interesantes que bien se les pueden ocurrir a ustedes como memoria.


Misceláeos
    Encuesta docente 2013
    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. Otro en MIT.
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