ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2012 de 26 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 B-221,   Miércoles 11:30-13:00 B-221
Ayudante: Fabrizio Cabaleiro, 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, 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 2011
Clase
Fecha Material
Material adicional de apoyo
1
09/4 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 2010
2
11/04 Objeto, comportamiento, estado; clase, jerarquías, herencia, polimorfismo; Ligado dinámico, abstracción, subtipo. Diseño orientado a objetos (pdf, ppt). 


16/04
Suspensión por semana mechona

18/04
Suspensión por semana mechona
3
23/04
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
4
25/04
Tipos de datos y control de flujo básicos (pdf, ppt). Ejemplos: Puntos y líneas, prueba; InputExample InputTest Clase Scanner

30/04
Suspensión de ctividades decretadas por la autoridad universitaria

5
02/05
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.

6
07/05
Java: Herencia, clases abstractas, clase Object -equals, clone- (pdf, ppt)  Ejemplo: Manager son empleados, Rectangle.java
7
9/05
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  Java Collections 
8
10/05
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  B221, Auditorio ELO, Clase adelantada 

21/05
Feriado

9
23/05
Continuamos con Interfaces

10
24/05
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic, Mimic, MimicCharByChar. Clase recuperativa JFrame  WindowListener  WindowsAdapter
11
28/05
Programación de interfaces gráficas en Java. Swing (pdf, ppt) Ejemplos: GlassPaneDemo LayeredPane MenuDemo CreaBotones, Sketch, MouseTest, ShapesDemo2D 
Tutorial sobre Swing, Guía visual de las componentes de Swing, Programas de ejemplo SwingSet Demo
12
30/05
Java: Manejo de excepciones (pdf, ppt). Ejemplos: Efecto en desempeño ExceptionalTest
Tutorial Excepciones
13
04/06
Generación de paquetes y documentación, Javadoc (pdf. ppt), Ejemplos:PackageTest, Account  Resultados de Javadoc Documentación de código en Java 
14
06/06
Applets (pdf, ppt)
NotHelloWorldApplet (Prueba); TumbleItem (Prueba); Calculator Applicaton, Applet (Prueba embebida, Popup); Chart (Prueba); Tic Tac Toe; Bookmarks (Prueba).
Ver demo de Applet
Tutorial sobre Applets
15
11/06
Primer Certamen
16
13/06
Administradores del Espacio (Layout Managers)
Java Archives (pdf, ppt)
Motivación: Método (Jorge Guerra, Pin Pon) Mauricio Venegas
Tutorial sobre creación de jar files
Grupos en proyecto son de 3 personas (casos de N+1, hablar con profesor)
17
18/06
Ingeniería de software: Introducción (pdf, ppt)
Proceso de Desarrollo de Software (pdf. ppt)

18
20/06
Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt)
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)
19
25/06
Niveles de Certificación CMM (pdf, ppt)

20 27/06
Introducción a C++ (pdf, pptIO_simple.cpp IO_simple_2.cpp
Clases en C++ (pdf, ppt).  Ejemplos: CRectangle
Pre-procesador 
C++ Resources Network
Tutorial C++

02/07
Feriado

21
4/07
Constantes, referencias y cambios de tipo en C++ (pdf, ppt)
Sobrecarga de Operadores. Ejemplo: CVector
Type casting: dynamic_cast <new_type> (expression), static_cast <new_type> (expression), const_cast <new_type> (expression)
22
09/07
Calificador Friend y Static (pdf, ppt), Ejemplo: Función Friend
Manejo de punteros y objetos en memoria dinámica (pdf, ppt)
Revisar construcción de Makefiles
23
11/07
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida. Privada.
Ligado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplo: VirtualMotor, CatsAndDogs
Excepciones (pdf, ppt)
Tómbola.

16/07
Feriado

24
18/07
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, ppt)
Clase estándar exception
STL,Algoritmos Genéricos de la STL  Clases Genéricas en Java,


Listas (pdf, odp)
Patrones de Diseño (pdf, odp) Ejemplo en Java MVC

25
23/07
Segundo certamen

26
25/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.
Todos los grupos presentan.


Certamen Recuperativo
  ?

Evaluación  Notas Finales 6.08.12
                                    /  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 : 6 de junio y 23 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()
Vamos que se puede!   Vamos que se puede!
C2.sol() C2.Notas()
C2.Histo()
Gabriel Ahumada, Sebastián Arriagada, Cristobal Ganter, Rimsky Rojas, Pedro Sariego, Constanza Valdés
Otros Años: 1º Certamen: 2011 2010, 2009, 2008, 2007, 2006, 2005, 2004;      Certamen Final: 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 Ayudas para su desarrollo (preparadas por Tomás Girardi 2009, actualizadas por Edward Alvarado 2010)
Tarea (grupos de 2 ó 3 integrantes)
Evaluación
Mejores Soluciones
Tarea 1: Bolas Móviles en Espacio Cerrado como Objetos de Software, plazo: 24 de mayo, 23:59hrs
T1.detaleTexto(), T1.detalleNúmeros()  T1.nota()
Sebatián Zúñiga & Cristobal Ganter
Tarea 2: Simulación Gráfica de Bolas Móviles y Paredes como Objetos de Software, plazo 21 de junio, 23:59 hrs.
T2.detalleTexto(), T2.detalleNotas()
Cristian Acuña, Sebastián Arriagada&José Escobar , Constanza Valdés&Gabriel Ahumada&Rimsky Rojas
Tarea 3: Applet para Simulador de Bolas Móviles y Paredes como Objetos de Software, plazo 10 de Julio, 23:59 hrs
T3.detalleTexto(), T3.detalleNotas()
Cristian Acuña&Sebastián Arriagada&José Escobar, Eduardo Barra&Cristóbal Nettle&Tomás Rodenas
Tarea 4: Voluntaria ídem a tarea 1 pero en C++ Bolas Móviles en Espacio Cerrado como Objetos de Software, plazo: 26 de Julio, 23:59hrs Quien la entregue, mejora peor tarea ponderando Peor*0.3+ T4*0.7


Proyecto grupal:   Instrucciones generales, aquí inscripción de temas, aquí temas ya inscritos.
* Inscripción: 10% por definición a tiempo Plazo:  20 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. en Plazo
Carlos Cofré, Iván Hopenhayn Aplicación Java para comunicación con microcontrolador
OK
Daniel Guerra, Camille Le Roi, Niklas Tampier Faîtes de la musique: Sintetizador gráfico interactivo de música
OK
Mario Castro, Cristóbal Rodríguez Master League
OK
Alvaro Rojas El interés en la lectura y el aprendizaje
OK
Oscar Bahamonde ; Luis Vera Applet de Control de Congestion de TCP
!OK
Pedro Sariego, Sebastian Zuñiga, Cristóbal Ganter Simulación de Órbitas de Cuerpos Celestes en 3D
OK
Eduardo Barra, Tomás Rodenas, Cristóbal Nettle Simulación de sistema Dribbler para "Small Size robot soccer"
OK
Cristian Acuña, Sebastian Arriagada, José Escobar Ensayo Virtual PSU
OK
Gabriel Ahumada, Rimsky Rojas, Constanza Valdés Calculadora Android con manejo de complejos
OK

Proyectos interesantes que bien se les pueden ocurrir a ustedes como memoria. Yo postulé con ERPHA, pero como la idea era de profesores, nos descalificaron luego de haber sido seleccionados por Chile.


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