ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2015 de 32 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-101   Miércoles 11:30-13:00 Lab. Sala 7 P2
Ayudante: Pascal Sigel , su cuenta gmail es elo329 punto utfsm
Lista de correo: elo329 arroba listas PUNTO usm PUNTO cl.
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) Página año previo
Clase
Fecha Material
Material adicional de apoyo
1
9/3
Introducción: Contenidos, estructura del ramo, evaluación.
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).
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
11/3
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
Entornos de desarrollo: Sun (Oracle),
Virtual Machine, Operating system-level virtualization, Ver Editores y Ambientes de trabajo, Documentación SE 8 (sólo API)
Tarea individual: Si usted tiene acceso a un PC, instale Java, compile y corra estos ejemplos
3
16/3
Tipos de datos y control de flujo básicos (pdf, ppt). Ejemplos: Puntos y líneas, prueba; InputExample InputTest Clase Scanner
4
18/3
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.
Actividad en clases
Terminal para Windows con servidor X
5
23/3
Java: Herencia, clases abstractas, clase Object -equals- (pdf, ppt)  Ejemplo: ManagerTest: Managers son empleados, Rectangle.java
6
25/3
Terminar Herencia, clases abstractas. (pdf, ppt) PersonTest, Cats and Dogs, Clase Object: EqualsTest
Actividad en clases
Equals es problemático en algunos casos, ideas similares aplican a clone  ReflectionTest  Java Collections
7
30/3
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
   
8
1/4
Actividad en clases: Explicar Tarea 1. Entrega de claves para uso de Git en repositorio de LabCom (Informática). Comenzar con etapa 1 de la Tarea.
  Hoy la clase es en B215 Lab. dde Telemática.
9
6/4
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic, Mimic, MimicCharByChar JFrame  WindowListener  WindowsAdapter

8/4
Semana Sansana (no hay clase)
Todos a participar
10
13/4
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
SwingSet3 Demo, Guía Visual de componentes Swing
11
15/4
Actividad en clases: Pasando T1 a 2 dimensiones: Clase Vector2D, clase Ball revisada, agregando una vista para la pelota.  
12
20/4
Java: Manejo de excepciones (pdf, ppt). Ejemplos: Efecto en desempeño ExceptionalTest Tutorial Excepciones
13
22/4
Generación de paquetes y documentación, Javadoc (pdf. ppt), Ejemplos:PackageTest, Account
Java Archives (pdf, ppt)
Actividad en clases: Documentación, generación de paquete, jegeración de archive.
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
14
27/4
Suspendida por profesor

15
29/4
Administradores del Espacio: Cómo posicionar componentes dentro de un contenedor. (Layout Managers)
16
4/5
Applets (pdf, ppt)
NotHelloWorldApplet (Prueba); TumbleItem (Prueba); Calculator Application, Applet (Prueba embebida, Popup); Chart (Prueba); Tic Tac Toe; Bookmarks (Prueba).
Introducción a C++ (pdf, pptIO_simple.cpp IO_simple_2.cpp
Ver demo de Applet
Tutorial sobre Applets
Para ver plugins en firefox about:plugins
Pre-procesador (documentación gnu)
C++ Resources Network
Tutorial C++
17
6/5
Primer Certamen Hasta applets inclusive (hasta lámina 15)
18
11/5
Hablar sobre Proyecto de la asignatura.
Clases en C++ (pdf, ppt).  Ejemplos: CRectangle 

19
13/5
Constantes, referencias y cambios de tipo en C++ (pdf, ppt)
Actividades en clases: Revisar clases Java Employee.java  y EmployeeTest.java generar clases equivalentes en C++
Type casting: dynamic_cast <new_type> (expression), static_cast <new_type> (expression), const_cast <new_type> (expression)
Revisar construcción de Makefiles

18-13/5
Vacaciones para estudiantes

20
25/5
Sobrecarga de Operadores. Ejemplo: CVector
Calificador Friend y Static (pdf, ppt), Ejemplo: Función CVectorFriend
Manejo de punteros y objetos en memoria dinámica (pdf, ppt)

21
27/5
OJO: Hoy vence plazo parra inscribir tema de proyecto.
Actividad en clases: Implementación de clases en C++
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida. Privada.
 

22
1/6
Ligado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplos: VirtualMotor, CatsAndDogs
23
3/6
Excepciones (pdf, ppt) Clase estándar exception
24
8/6
Motivación: Método (Jorge Guerra, Pin Pon) ¿Es esto importante? Mauricio Venegas
Ingeniería de software: Introducción (pdf, ppt)
Proceso de Desarrollo de Software (pdf. ppt)



A contar del 9 de Junio se inicia un paro de estudiantes que concluye en la votación del 1 de septiembre (12 semanas u 84 días)

25
2/9
Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt)
Tómbola
26
7/9
Herramientas de apoyo al desarrollo de software:  Casos de uso. Tarjetas CRC. UML (Unified Modeling Language) (pdf, ppt)
Niveles de Certificación CMM (pdf, ppt)
Programación Genérica: Plantillas (templates) en C++ (pdf, ppt)
ArgoUML (wiki)
UML Umbrello (es)
Certificación
STL,Algoritmos Genéricos de la STL  Clases Genéricas en Java,
27
9/9
Ejemplos: cuentaRepeticiones (C2_2s2008), Máximo (C2_2s2009)
Actividad en clases: Analice y complete el programa Naipe Inglés.
 Biblioteca estándar de plantillas y Algoritmos genéricos: Vector (pdf, ppt)
Ejemplo de Algoritmo genérico: Objeto función (Functor).
Listas (pdf, ppt)

28
14/9
Patrones de Diseño (pdf, ppt)
Destructor Virtual, un ejemplo.
Design patterns
Singleton
Ejemplo de MVC en Java, patrón observador
29
16/9
Segundo certamen

30
21/9
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
23/9
Presentación de Proyectos

28/9
Certamen Recuperativo (todos los contenidos)


Evaluación  Notas Finales: al 2.10 
                                    /  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 Mayo de 1 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() v2
C1.Histo()
Felipe Fernández, Javier Romero
C2.Sol()
C2.Notas()
C2.Histo()
Felipe Fernández
Otros Años: 1º Certamen: 2014 2013 2012 2011 2010, 2009, 2008, 2007, 2006, 2005, 2004;      Certamen Final: 2014 2013 2012 2011 2010, 2009, 2008, 2007, 2006, 2005, 2004

Tareas de programación  y sus mejores Soluciones: Instrucciones
Tarea (grupos de 3 integrantes)
Evaluación
Mejores Soluciones
Tarea 1: Sistema de bolas, resortes, osciladores y amortiguadores. Plazo 15 de abril, 23:59 hrs.
T1 v2 Detalles v2
Angelo Amadei,Nicolás Frois,Eduardo Valdivia
Tarea 2: Simulación Gráfica de Bolas, Resortes, Osciladores y Amortiguadores como Objetos de Software. Plazo 8 de mayo, 23:59 hrs.
T2 Detalles
Edgard Abarcas, Nicolás Olivos
Tarea 3: Bolas, Resortes, Osciladores y Amortiguadores como Objetos de Software en C++. Plazo 11 de Junio 24 de Agosto 8 de Septiembre, 23:59 hrs.
T3 Detalles
Ya viene..
Tarea 4:



Proyecto grupal:   Instrucciones generales, aquí inscripción de temas, aquí temas ya inscritos.
* Inscripción: 10% por definición a tiempo Plazo: 27 de Mayo. Posible proyecto para quienes tomaron elo322: hacer un applet para ilustrar  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. Desarrollo de un simulador de cuerdas vocales, simuladores para fenómenos de la química.
* 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
Ricardo Valencia, Silvana Papagallo
Sistema de Pedido para Locales de Comida Rápida
OK / 24 Sep
Matías Contreras
Introducción a Qt
OK / 23 Sep
Angelo Amadei - Eduardo Valdivia - Nicolás Frois
Gungi - Juego de Mesa
OK / 25 Sep
Nicolas Olivos, Edgard Abarcas
Sistema de Control de Asistencia
OK / 25 Sep
Javier Romero, Felipe Fernandez, Kurt Gehrkue
Sistemas de Control de Alarmas mediante el uso de Arduino
OK /  27 Sep

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 8 (local SE 8, Directo al API)
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