ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2018 de 32 30 sesiones
General
Contenidos
Evaluación
Tareas
Proyecto
Profesor: Agustín J. González,   Horario de Oficina, Paralelo 2: Prof. Cristóbal Nettle
Oficina:  B-301        Fono: (56-32) 2654196
Horario clases: Lunes 11:30-13:00 Par 1: P-101; Par 2: P308     Miércoles 11:30-13:00 Par 1: Lab. Sala P004 P008;   Par 2: B213 PC-04 (DCSC)
Ayudante: Paralelo 1: Jesús Márquez; Paralelo 2: Pilar Arancibia, 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)  (Código de la 10° Edición)
  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
5/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 2017  Mejor Solución
Perfil del Ingeniero Solicitado el 2016
The 2017 Top Programming Lenguages
2
8/3
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 los ejemplos de esta clase
Relación entre Android y Java
3
12/3
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
14/3
A contar de esta clase, los miércoles el Paralelo 1 trabajará en Lab. P008 (mismo piso sala previa pero en otro pasillo)
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.
Actividad a desarrollar fuera de la clase.
Terminal para Windows con servidor X
5
19/3
Java: Herencia, clases abstractas, clase Object -equals- (pdf, ppt)  Ejemplo: ManagerTest.java: Managers son empleados, Rectangle.java


Semana Mechona
6
26/3
Terminar Herencia, clases abstractas. (pdf, ppt) 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
7
28/3
Avnazar Interfaces, clases anidadas y clone. (pdf, ppt)
Comentar Tarea 1: comenzar con etapa 1.
Documentación Git Libro 2014 Understanding Git Flow
Paltario GIT
8
2/4
Concluir clases anidadas, Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic JFrame  WindowListener  WindowsAdapter 
9
4/4
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: Mimic, MimicCharByChar
 Actividad en clases: Trabajar en grupos en desarrollo de la tarea.
Tutorial sobre Swing
(2017) Adobe decide discontinuar Flash
10
9/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
11
11/4
Actividad "Handson": Creando aplicaciones gráficas en Java

12
16/4
Administradores del Espacio: Layout Managers: Cómo posicionar componentes dentro de un contenedor.
Explicar la tarea 2
Java: Manejo de excepciones (pdf, ppt). Ejemplos: Efecto en desempeño ExceptionalTest
Ejemplos de Layout Managers
Tutorial Excepciones
13
18/4
Handson Lab: Desarrollo de etapa 1 de la tarea 2.

14 23/4
Java Archives (pdf, ppt)
Generación de paquetes y documentación, Javadoc (pdf. ppt)
Ejemplos: PackageTest, Account y documentación resultante
Documentar en clases su clase Robot y generar documentación con javadoc.
Si queda tiempo, generar archivo .jar ejecutable para la etapa 1 de la tarea.
Tutorial sobre creación de jar files
Documentación de código en Java
Experiencia de ex-alumno
15
25/4
Actividad de avance en Tarea 2, etapa 2.
Introducción a desarrollo de aplicaciones móviles con Java: Android
Aplicación Android simple: Clickme SimpleClickMeApp
The future of Java Applets
Estadísticas Subtel
Introduction to Android
Android API Classes
Paso de App de Eclipse a teléfono
16
30/4
Clase suspendida por instrucción del señor Rector, Circular N°7 de los Vice-rectores, 9 de abril 2018.

17
2/5
Primer Certamen: Paraleleo 1, Prof. González: C227; Paralelo 2, Prof. Nettle: B221.   Ambos en horario normal 11:30 hrs.  Contenidos a evaluar hasta antes de Android.
18
7/5
Introducción a C++ (pdf, pptIO_simple.cpp IO_simple_2.cpp
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
9/5
Hablar sobre Proyecto de la asignatura
Constantes, referencias y cambios de tipo en C++ (pdf, ppt)
Actividad handson

20
14/5
Sobrecarga de Operadores. Ejemplo: CVector
Incomplete Class Declarations
21
16/5
Paralelo del Prof. González tendrá esta clase el Jueves 17 a las 9:45 hrs en Lab P004.
Ningún alumno llegó a clases en ambos paralelos por Paro de Estudiantes


21/05
27/05
Vacaciones de estudiantes

22
28/05
Calificador Friend y Static (pdf, ppt), Ejemplo: Función CVectorFriend
Manejo de punteros y objetos en memoria dinámica (pdf, ppt)
dynamic_cast 


Con motivo del Paro de Estudiantes, las autoridades nos pide seguir con el curso con los alumnos internacionales dentro de las fechas normales del semestre
Como se trata de menos de 8 alumnos, las clases son por tutoría. Nos reunieremos una vez por semana.
La página para los estudiantes SIN PARO se actualizará cuando decidan retomar el curso.

23
25/07
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida, Privada.
Actividad en clases: a partir de su solución de la tarea1 avance en la primera etapa de la tarea3.
Ligado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplos: VirtualMotor, CatsAndDogs
Clase estándar exception

24
30/07
Excepciones (pdf, ppt)
Programación Genérica: Templates (Pantillas) en C++ (pdf, ppt) Ejemplos: cuentaRepeticiones, Máximo
Biblioteca estándar de plantillas y Algoritmos genéricos: "Vector" e "Iterators" (pdf, ppt)

25
1/08
Programación gráfica en C++: Desarrollo en Qt   Ejemplos: HelloWorld PainterRect  Scene  Conversor de temperatura Celcius-Fahrenheit
Motivación: Método (Jorge Guerra, Pin Pon)
Ingeniería de software: Introducción (pdf, ppt)

Aprenda Qt desde Hoy Mismo
¿Es esto importante? Mauricio Venegas
26
6/08
Proceso de Desarrollo de Software (pdf. ppt)
Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt)

27
8/08
Herramientas de desarrollo de software: Casos de uso, Tarjetas CRC, UML (pdf, ppt)
Niveles de Certificación CMM (pdf, ppt)
Violet UML Editor Instalación
Certificación
28
13/08
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.

29
20/08
Presentación de Proyectos
Plazo para entregar informe final
30
22/08
Segundo certamen: Paraleleo 1, Prof. González: C227; Paralelo 2, Prof. Nettle: B221.   Ambos en horario normal 11:30 hrs.

31




Evaluación  Notas Finales: Paralelo1: 6.09.18   Paralelo2: 6.09.18  Paralelo1: 11.09.18 
                                    /  0.65*Certámenes + 0.25*Tareas + 0.10*Proyecto,  si promedio de certámenes es superior o igual a 50.
            Nota Final= <
                                    \  0.90*Certámenes + 0.07*Tareas + 0.03*Proyecto,   en otro caso
2 Certámenes 2 de mayo,  27 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.solución()
C1_P1.Notas()   C1_P2.Notas()
C1_P1.Histo()   C1_p2.Histo()
Marcelo Barrientos, Filip Ekstrom, Francisco Frez, Marcelo González, Andrés Romo, Sebastián Ubiergo
C2.solución()
C2_P1.Notas()   C2_P2.Notas()
C2_P1.Histo()  C2_P2.Histo()
Marcelo Barrientos, Francisco Frez, Luis Leiva, Martín Miranda, Yeriel Paz, Gonzalo Rojas, Gabriel Rudloff, Sebastián Ubiergo, Anibal Weippert,
Otros Años: 1º Certamen: 2017 2016 2015 2014 2013 2012 2011 2010, 2009, 2008, 2007;      Certamen Final: 2017 2016 2015 2014 2013 2012 2011 2010, 2009, 2008, 2007

Tareas de programación  y sus mejores Soluciones: Instrucciones
Tarea (grupos de 3 integrantes)
Evaluación
Mejores Soluciones
Tarea 1: Robot en Laberinto como Objeto de Software  Plazo 12 13 de abril, 20:00 23:59 hrs. Notas RecorreccionesDetalle observaciones  Recorrecciones Eduardo Hales y Nicole Bernal
Tarea 2: Aplicación Gráfica para Robots en Laberinto    Plazo 30 de abril 23:59 hrs.
Notas Recorrecciones  Detalle  Recorrecciones Matías Contreras, Francisco Frez y Damian Quiroz
Tarea 3: Robot en Laberinto como Objetos de Software en C++  Plazo 1 de Junio 27 31 de julio 23:59 hrs.
Notas Recorrecciones Detalle Recorrecciones
Matías Contreras, Francisco Frez y Damian Quiroz
Tarea 4 (voluntaria): Aplicación Gráfica para Robots en Laberinto en C++ y QT (etapas equivalentes a Tarea2 sin generación automática de documentación) Plazo 17 de agosto 23: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. González, paraleo Prof. Nettle. Temas ya inscritos: paralelo Prof. González, Prof. Nettle.
* Inscripción: 10% por definición a tiempo Plazo: 31 de Mayo. Ejemplos de temas: Estudie algún patrón de diseño explíquelo y haga algún ejemplo de su uso. Implementar la tarea 2 en Android. Desarrollar un sistema para formular preguntas en debate.
* 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. González  Prof. Nettle, Orden de presentación: Prof. González  Prof. NettleCronó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
Sebastián Araneda, Nicolás Calderón, Marcelo Barrientos Browser de web local No presenta/no entrega informe
Sebastián Ubiergo, Luis Leiva, Felipe Muñoz Detección de rostro con openCV
Matias Díaz, Nicolás Hernández Sistema voto electrónico basado en blockchain
Mario Araya - Marcelo González - Valentina Yévenes Juego utilizando c++ y Allegro
Matías Contreras - Francisco Frez - Damián Quiroz Desarrollo Interfaz Gráfica en Qt (Proyecto USMZero)
José Rojel Aplicación orientada a conductores de locomoción colectiva
Gonzalo Rojas, Marcelo Araya, Gabriel Fuentes Desarrollo de aplicación Android para control de herramientas del teléfono
Diego Riquelme, Gabriel Rudloff, Leonardo Solis Zamora Sistema de registro de patente
Gabriel Carrillo Implementación de videojuegos online en tiempo real. No presenta/no entrega informe
Martin Miranda (201430022), Javier Campos(201273065) Pokedex
Anibal Weippert Sebastian Villanelo Dots Game
Nicole Bernal, Eduardo Hales Aplicación en Android para transcripción de audio a texto.
Paralelo 2
Jorge Fernandez, Jose Benavente, Martin Lara [Juego]Combate Naval
Yeriel Paz, Oscar Guajardo, Cristian Bruna Role Master
Javiera Rojas-Andres Romo Libreria e interfaz para brazo robotico educativo
Lorens Paez, Jose Quinteros, Lucas Villarroel Carrobombapp
Fabian Guerrero, Axel Silva Afinador de instrumentos
Agustin Acevedo - Stefano Aguilera - Cristian Lezana Aplicacion Android - Busqueda y ruta a sala de clases
Daniel Bernal - Juan Pablo Sanchez, Pascal Arriagada Aplicación de Android para registro de datos en una BD

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
Un libro que ha sido útil para algunos. Ejemplos del libro.
Sitios pra ejercitar la programación en Java (para registrarse puede usar una dirección de correo, pero nunca la misma clave): w3resource, Hackerrank
Versión comprimida de los ejemplos de a revisar en el curso.
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