ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2017 de 30 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 P409 P004
Ayudante: Jesús Alberto Márquez su cuenta gmail es elo329 punto utfsm
Lista de correo: elo329 arroba listas PUNTO usm PUNTO cl.
Para inscribirse llenar este formulario.
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 (Última edición Dic 2016)
  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
6/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: Tarea 2 2016  Mejor Solución
Perfil del Ingeniero Solicitado el 2015
The 2017 Top Programming Lenguages
2
8/3
ESTA CLASE SERÁ EN LA C226 PARA DAR CABIDA A TODOS MIENTRAS SE ABRE PARALELO
Introducción a Java: Máquina virtual. Entornos de desarrollo para proyectos en Java (pdf, ppt).
Ejemplos:  FirstSample.java  SecondSample.java  Si arroja warnings asociado a acentos, compilar con: javac -encoding ISO8859_1
Entornos de desarrollo: 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 computador instale Java, compile y corra estos ejemplos
Relación entre Android y Java
3
13/3
9/03: La Reunión del Consejo de Departamento se ha postergado para el martes 14. El Director me indica "Yo trataría de tranquilizar a los alumnos de tu ramo, que este paralelo se abrirá, pero que esperen la confirmación hasta el martes."
Tipos de datos y control de flujo básicos (pdf, ppt). Ejemplos: Puntos y líneas; entrada de texto:InputExample; Entrada gráfica: InputTest
Clase Scanner
4
15/3
ESTA CLASE SERÁ EN LA M101 PARA TODOS LOS INTERESADOS. EL SEGUNDO PARALELO PARTE LA PRÓXIMA SEMANA
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.
Actividad a desarrollar fuera de la clase.
Terminal para Windows con servidor X
5
20/3
HORARIO SEGUNDO PARALELO: lunes y miércoles en horario 11:30 a 13:00 (MISMO HORARIO DE PARALELO 1) B221
Java: Herencia, clases abstractas, clase Object -equals- (pdf, ppt)  Ejemplo: ManagerTest: Managers son empleados, Rectangle.java

6
22/3
Terminar Herencia, clases abstractas. (pdf, ppt) PersonTest, Cats and Dogs, Clase Object: EqualsTest
Actividad en clases Para trabajo en aragorn desde Windows se recomienda Mobaxterm (seleccionar "Ayuda Aragorn")
Equals es problemático en algunos casos, ideas similares aplican a clone  ReflectionTest  Java Collections
7
27/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
Comentar Tarea 1
   (Sala definitiva del paralelo 2 días lunes: P-308)
   

29/3
Semana Mechona

8
3/4
Concluimos clases anidadas, explicamos documentación mobaxterm y diseño general de la tarea1.
JFrame  WindowListener  WindowsAdapter 
9
5/4
Explicar diagrama de clases sugerido para la tarea: Etapa1, Etapa2, Etapa3 (fueron generados con Jgrasp) Actividad en clases
10
10/4
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic, Mimic, MimicCharByChar
Tutorial sobre Swing
11
12/4
Actividad "Handson": Creando aplicaciones gráficas en Java

12
17/4
Programación de interfaces gráficas en Java. Swing (pdf, ppt) Ejemplos: Sketch.java y MouseTest.java, CreaBotones

Ejemplos: GlassPaneDemo, LayeredPaneDemo, MenuDemo, ShapesDemo2D
Programas de ejemplo
Guía Visual de componentes Swing  Swing Painting Guidelines
Tutorial Excepciones

19/4
Suspensión por censo

13
24/4
Administradores del Espacio: Layout Managers: Cómo posicionar componentes dentro de un contenedor.
Java: Manejo de excepciones (pdf, ppt). Ejemplos: Efecto en desempeño ExceptionalTest
Java Archives (pdf, ppt)
Ejemplos de Layout Managers
Tutorial sobre creación de jar files
14 26/4
Generación de paquetes y documentación, Javadoc (pdf. ppt), Experiencia de ex-alumno,
Ejemplos: PackageTest, Account y documentación resultante
Actividad en clases: Documentación, generación de archives y generación de paquete.
Documentación de código en Java


1/5
Feriado

15
3/5
GIT  (paltario Git)
Applets (pdf, ppt)

Documentación Git  Understanding Git Flow
Ver demo de Applet
Tutorial sobre Applets
Para ver plugins en firefox about:plugins
The future of Java Applets
16
8/5
Introducción a desarrollo de aplicaciones móviles con Java: Android
Aplicación Android simple: Clickme
Estadísticas Subtel
Introduction to Android
Android API Classes
Paso de App de Eclipse a teléfono
17
10/5
Primer Certamen 19:00 hrs. Paralelo Prof. González en C225,  Paralelo Prof. Olivares C226 Hasta contenidos de la clase del 3 de Mayo (No incluye Applet)

15/05
19/05
Semana libre de clases

18
22/5
Introducción a C++ (pdf, pptIO_simple.cpp IO_simple_2.cpp
Hablar sobre Proyecto de la asignatura.
Clases en C++ (pdf, ppt).  Ejemplos: CRectangle

Pre-procesador (documentación gnu)
C++ Resources Network
Tutorial C++
Type casting: dynamic_cast <new_type> (expression), static_cast <new_type> (expression), const_cast <new_type> (expression)
Revisar construcción de Makefiles
19
24/5
Constantes, referencias y cambios de tipo en C++ (pdf, ppt)
Sobrecarga de Operadores. Ejemplo: CVector
Actividad handson

20
29/5
Calificador Friend y Static (pdf, ppt), Ejemplo: Función CVectorFriend
Manejo de punteros y objetos en memoria dinámica (pdf, ppt)
Incomplete Class Declarations
21
31/5
OJO: Hoy vence plazo para inscribir tema de proyecto.
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida, Privada.
Actividades en clases
 

22
5/6
Ligado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplos: VirtualMotor, CatsAndDogs
Excepciones (pdf, ppt)
dynamic_cast 
Clase estándar exception
23
7/6
Motivación: Método (Jorge Guerra, Pin Pon)
Ingeniería de software: Introducción (pdf, ppt)
Proceso de Desarrollo de Software (pdf. ppt)
Actividad en clases
¿Es esto importante? Mauricio Venegas
24
12/6
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)

25
14/6
Terminar Herramientas de desarrollo de software: Casos de uso, Tarjetas CRC, UML
Niveles de Certificación CMM (pdf, ppt)
Actividad handson
ArgoUML (wiki)
UML Umbrello (es)
Certificación
26
19/6
Programación gráfica en C++: Desarrollo en Qt   Ejemplos: HelloWorld PainterRect  Scene 
Tómbola Paralelo 1  Paralelo 2 Resultado: Par1 Par2
27
21/6
Actividad en clases  Solución para esta actividad
Aprenda Qt desde Hoy Mismo

26/6
Feriado


28/6
Esta sesión se posterga para el 10 de Julio


3/7
El 29/06 Los estudiantes Inician Paro
Presentación de Proyectos
Cada grupo contará con X minutos (a determinar según número de grupos).
Las presentaciones serán evaluadas por todos los presentes según:
Contenido (25%)  : El tema es pertinente al ramo, lo presentado es lo importante del tema e interesante para el curso.
Dominio   (30%)  : Los integrantes tienen muy buen dominio del tema, lo conocen bien.
Comunicación (15%): Usan bien el material de apoyo y tiene buena expresión oral de las ideas.
Demostración (30%): Evalúe su funcionamiento, su resultado y aporte.


5/7
Segundo certamen  (Paro continúa)


10/7
Segunda clase de presentaciones de proyectos (Paro continúa)
23:59 Vence plazo para enviar informe vía correo a su profesor

12/7
Certamen Recuperativo (todos los contenidos)
Sólo para inasistencias documentadas
28 21/08
Presentación de Proyectos (primera mitad de grupos)  Paralelo Prof González en C233
Se retoman actividades luego de Paro.
29
23/08
Presentación de Proyectos  (grupos restantes)   Paralelo Prof. González en Lab 004, edificio P1.
Jueves 24, 23:59 hrs plazo para entregar informe final; si ya lo entregó, puede entregar versión mejorada.
30
23/08
Segundo Certamen 19:00 hrs. Paralelo Prof. González en C225,  Paralelo Prof. Olivares C226 Desde Andriod en adelante

Evaluación  Notas Finales:  5.09.17: Paralelo1   Paralelo2 
                                    /  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 de 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.solución()
P1_C1.Notas()   P2_C1.Notas()
P1_C1.Histo()   P2_C1.Histo()
Felipe Arriagada, Guillermo Becerra, Marcelo Cárdenas, Andrew Morrison, Johannes Rothkegel, Boris Vidal, Matías Zúñiga
C2.solución()
P1_C2.Notas()   P2_C2.Notas()
C2.Histograma()

Otros Años: 1º Certamen: 2016 2015 2014 2013 2012 2011 2010, 2009, 2008, 2007, 2006, 2005, 2004;      Certamen Final: 2016 2015 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: Ascensor como Objeto de Software, plazo 13 de Abril 21:59 hrs.
Notas Detalle observaciones
-
Tarea 2: Simulación Gráfica de Ascensor, plazo 5 de Mayo 21:59 hrs.
Notas Detalle Camila Carrasco & Christian Wiche
Tarea 3: Ascensor como Objeto de Software en C++, plazo 19 de Junio, 21:59 hrs.
Notas Detalle

Tarea 4 (Voluntaria): Ascensor en C++ con Interfaz Gráfica en Qt, plazo 10 de Julio, 21:59 hrs. Elimina la peor nota entre las 4 tareas. Quien no entregue, se queda con sus tres notas previas.
Notas


Proyecto grupal:   Instrucciones generales, inscripción de temas paralelo Prof. Olivares, paraleo Prof. González. Temas ya inscritos paralelo Prof. Olivares, Prof. González.
* Inscripción: 10% por definición a tiempo Plazo: 31 de Mayo. Posible proyecto para quienes tomaron elo322: hacer una aplicación Java para ilustrar cómo TCP logra confiabilidad, o cómo hace control de flujo, o cómo hace control de congestión. Otros: Estudie algún patrón de diseño explíquelo y haga algún ejemplo de su uso. Implementar la tarea 2 en Android.
* Resultados y Demostración 90%: informe (en formato html, plazo: el día de la última presentación), presentación y demostración.
Tómbola Prof. Olivares  Prof. González, Orden de presentación: Prof. Olivares  Prof. GonzálezCronómetro,  Evaluar: Paral_1   Paral_2, Evaluación de pares: Paral_1Paral_2.
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
Paralelo1
Danilo Avila, Felipe Cordero, Miguel Torres, Luis Vidal Programa de Inventario de Productos OK / OK
Juan Pablo Rotkegel , Raul Cortes , Johannes Rothkegel Software para el manejo de reservas de habitaciones para Hotel OK / OK
Marcelo Cárdenas, Ignacio Radic Afinador de instrumentos OK / OK
Eduardo Grendi
Piano sintetizador con opción de lectura de archivo OK / OK
Constanza Lorca; Arriagada Felipe; Becerra Guillermo; Vidal Boris Aproximación de imágenes por polígonos mediante el uso de un algoritmo genético OK / OK
Sebastián Yuste, Matías Zúñiga Maquina de turing OK / OK
Jaime Guzman - Francisco Cantillana (Prof. Gonzalez) y Cristobal Mancilla (Prof. Olivares) Herramienta base para el desarrollo de juegos 2D OK / 25.08
Alonso Rodríguez Barreda Reproductor de audio !OK / 29.08
Camila Carrasco, Christian Wiche Latorre Organización de archivos de video (Video Demo)
OK / 25.08
Andrew Morrison - Javier Gonzalez -Carlos Antinopai Araya Juego de cartas virtual OK / 28.08
Paralelo 2
José Gallardo;Ignacio García;Daryl Hernández
Transbank
OK / OK
Jose Villar
Proyecto RPG
OK / ??
Eduardo Arancibia, Luis Araya, Felipe Condon
FlipiGas
OK / OK
Jose Catalan y Christian Fuentes
Desktop Editor
OK / 25.08
Matías Concha, Martín Lara , Juan Sánchez
Introducir una plataforma robótica genérica orientada a objetos en Programa de Robótica Educativa en la USM
OK / OK
Joaquín Rodríguez-Marcelo Villablanca- Yerko Tapia
Chinchon
OK / OK
Valentina Yévenes, Lilian Rosales
Recetario
!OK / OK
Pilar Arancibia - Felipe Pinto
Numen - Juego de tablero y cartas original
OK / OK
Fabián Guerrero, Axel Silva, Luis Vega
Afinador de instrumentos
OK / OK
Daniel Bernal
CloudGrounded
OK / ??
Alejandro Peralta Paulo Rivera Vanessa Pulgar
Simulador de estanques
!OK / OK

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


Misceláeos
    Instrucciones para trabajar en aragorn desde windows (seleccionar Ayuda Aragorn)

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, tutorial emacs, manual de emacs) , jgrasp (Java), Netbeans, Eclipse.
C++:
Usando Preprocesador C++
C++ Preprocessor por Sh. Mannan
Compilador C++ para Windows (recomendado por alumnos año 2016)
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