ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2019 de 32 sesiones
General
Contenidos
Evaluación
Tareas
Proyecto
Profesor Paralelo 1: Agustín J. González,   Horario de Oficina
Oficina:  B-301        Fono: (56-32) 2654196
Horario clases: Lunes 11:30-13:00, sala P-101 P008;  Miércoles 11:30-13:00, lab. P008
Profesor Paralelo 2: Prof. Cristóbal Nettle   Horario de Oficina
Oficina:
Horario clases: Lunes 11:30-13:00, sala  P308;  Miércoles 11:30-13:00, Lab. PC-04
Ayudantes: Paralelo 1: Jesús Márquez (jesus PUNTO marquez PUNTO 12 arroba sansano.usm.cl)
Paralelo 2: Gonzalo Rojas S. (gonzalo PUNTO rojass arroba alumnos.usm.cl)
Correo : cuenta gmail es elo329 punto utfsm
Listas de correo: elo329_P1 arroba listas PUNTO usm PUNTO cl, y
elo329_P2 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 (Ú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    Códigos Java a revisar durante el curso
Clase
Fecha Material
Material adicional de apoyo
1
4/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: Tarea2 2017 2018; Solución: 20172018
Perfil del Ingeniero Solicitado el 2018
The best programming languages to learn in 2019 (for jobs & future)
2
6/3
Introducción a Java: Máquina virtual. Entornos de desarrollo para proyectos en Java (pdf, ppt).
Ejemplos:  FirstSample.java  SecondSample.java (clase Punto) 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)
Tutoriales de Java por Oracle
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
11/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
13/3
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.
Actividad a desarrollar en clase.
 What Programming Languages Engineers and Employers Love—and Hate
5
18/3
Comentar Hackerrank
Java: Herencia, clases abstractas, clase Object -equals- (pdf, ppt)  Ejemplo: ManagerTest.java: Managers son empleados, Rectangle.java


20/3 Suspendida por Semana Mechona
6
25/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
27/3
Avanzar Interfaces, clases anidadas y clone (pdf, ppt)
Explicar  Tarea 1, iniciar el desarrollo de la primera etapa.
Documentación Git Libro 2014 Understanding Git Flow
Paltario GIT
8
1/4
Concluir clases anidadas,
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic, Mimic
JFrame  WindowListener  WindowsAdapter 
9
3/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
8/4
Programación de interfaces gráficas en Java. Swing (pdf, ppt) Ejemplos: MyOwnGraphicsObject.java Sketch.java y MouseTest.java, CreaBotones Ejemplos: GlassPaneDemo, LayeredPaneDemo, MenuDemo, ShapesDemo2D
Programas de ejemplo
Guía Visual de componentes Swing  Swing Painting Guidelines
11
10/4
Actividad "Hands-on": Si su grupo ya terminó la tarea, desarrolle las siguientes actividades: Creando aplicaciones gráficas en Java
Si su grupo no ha terminado la tarea, trabaje en ella.

12
15/4
Administradores del Espacio: Layout Managers: Cómo posicionar componentes dentro de un contenedor. Orden para explicarlos: FlowLayout, BoxLayout, BorderLayout, GridLayout, GridBagLayout, CardLayout,
Mostrar Guía visula de componentes Swing
Java: Manejo de excepciones (pdf, ppt). Ejemplos: Efecto en desempeño ExceptionalTest
Ejemplos de Layout Managers
Tutorial Excepciones
13
17/4
Hands-on Lab: Creando objetos gráficos y preparando archvios Jar
Java Archives (pdf, ppt)
Tutorial sobre creación de jar files
14 22/4
Explicar tarea 2
Generación de paquetes y documentación, Javadoc (pdf. ppt)
Ejemplos: PackageTest, Account y documentación resultante
Avanzar en etapa 1 de la tarea.
Documentación de código en Java
Experiencia de ex-alumno
15
24/4
Por inauguración del año académico, esta clase comienza a las 12:00 hrs.
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 29/4 Programación Android, comentar desarrollo usando Android Studio: ClickMe en Android Studio
Mencionar necesidad de inscribir (P1, P2) proyecto de asignatura
Desarrollo de Aplicaciones Android con Eclipse: Era la IDE oficial para Android pero fue reemplazada por Android Studio (2015).
17 6/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
18
07/05
??/??
Por paro, esta clase será recuperada más adelante.
Primer Certamen (Por Paro Estudiantil se efectuará el lunes 13 no antes del 15 de mayo, en horario de clases)

Se evaluará hasta clase del 29 de Abril
19 5/8 Estudiantes deponen paro
20
7/8
Mencionar plazo para inscribir Proyecto de la asignatura
Constantes, referencias y cambios de tipo en C++ (pdf, ppt)


7/8 Sobrecarga de Operadores. Ejemplo: CVector
Hands-on Lab
Incomplete Class Declarations
21 12/8
Certamen 1
Plazo para inscribir proyecto!
Se evaluará hasta clase del 29 de Abril
22
14/8
Calificador Friend y Static (pdf, ppt), Ejemplo: Función CVectorFriend
Manejo de punteros y objetos en memoria dinámica (pdf, ppt)
dynamic_cast 

14/8
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida, Privada.
Ligado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplos: VirtualMotor, CatsAndDogs



14/8
Actividad en clases: a partir de su solución de la tarea1 avance en la primera etapa de la tarea3.
Excepciones (pdf, ppt)
Programación Genérica: Templates (Pantillas) en C++ (pdf, ppt) Ejemplos: cuentaRepeticiones, Máximo
Clase estándar exception
23 19/8
Biblioteca estándar de plantillas y Algoritmos genéricos: "Vector" e "Iterators" (pdf, ppt)
Programación gráfica en C++: Desarrollo en Qt   Ejemplos: HelloWorld PainterRect  Scene  Conversor de temperatura Celcius-Fahrenheit
Aprenda Qt desde Hoy Mismo
¿Es esto importante? por Mauricio Venegas

19/8
Motivación: Método (Jorge Guerra, Pin Pon)
Ingeniería de software: Introducción (pdf, ppt)

24
21/8 Proceso de Desarrollo de Software (pdf. ppt) Violet UML Editor Instalación
Certificación

21/8 Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt)

21/8 Herramientas de desarrollo de software: Casos de uso, Tarjetas CRC, UML (pdf, ppt)
Niveles de Certificación CMM (pdf, ppt)

25
26/8
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.

26
28/8
Presentación de Proyectos 30 de agosto, 20: hrs Plazo para entregar informe final por mail a su profesor
27
2/9
Responder dudas

4/9

28 9/9
Certamen 2 Se evaluará contenidos posteriores a la clase del 29 de abril

Evaluación  Notas Finales: 01.10.19    ......
                                    /  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ámenes8 de mayo, 26 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.Notas()
C1.Histo()
Francisco Pereira Serra, Bastian Quezada Muñoz
C2.Solución()
C2.Notas()
C2.Histo()
Cristóbal Garrido Valenzuela, Arturo Morales Bugueño
Otros Años: 1º Certamen: 2018 2017 2016 2015 2014 2013 2012 2011 2010, 2009;      Certamen Final: 2018 2017 2016 2015 2014 2013 2012 2011 2010, 2009

Tareas de programación  y sus mejores Soluciones: Instrucciones
Tarea (grupos de 3 integrantes)
Evaluación
Mejores Soluciones
Tarea 1 Semáforos como Objetos de Software, Plazo 12 15 de Abril, 20:00 hrs.
Lista de Cotejo: (Notas) Post-recorrección  Detalle
Cristóbal Garrido, Matías Hernández, y Ulises Leiva
Tarea 2: Aplicación Gráfica para Semáforos en Intersección, Plazo 3 de Mayo, 20:00 hrs
Lista de Cotejo: Notas    Detalle
María Rivas, Matías Contreras y Camilo Fernández
Tarea 3: Semáforos como Objetos de Software en C++, Plazo 24 26 de Julio, 20:00 hrs
Penalización por atraso: 2 puntos/día calendario (sólo esta tarea).
Notas , Detalle
María Rivas, Matías Contreras y Camilo Fernández
Tarea 4: (voluntaria): Aplicación Gráfica para Semáforos en Intersección en C++ y QT (etapas equivalentes a Tarea2 sin generación automática de documentación y usando como intersección 1 Norte con Avda. Sporting) Plazo 5 12 de agosto 2 de Septiembre 20:00 hrs. Elimina la peor nota entre las 4 tareas. Quien no entregue, se queda con sus tres notas previas.

Eduardo León y Bastián Quezada

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: 29 de Mayo 10 de Julio 12 de agosto. 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.
* 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. Nettle (sugerido)Cronó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
Lesly Fuentes - Alonso Muñoz
Aplicación móvil para gestionar notas
OK / 28.08
Luciano Muñoz , Italo Salgado,  Javier Quiroga
Aplicación Móvil de Control remoto
OK / 30.08
Javier Ortiz - Sergio Castro - Carlos Fernández
Aplicación móvil para la gestión de tiempo e información sobre la universidad
OK / 30.08
Fernando Salgado, Byron Prado, Joaquín Zenteno
Desarrollo de videojuegos
OK / ---
Eduardo León - Bastián Quezada
Aplicación Móvil de Horario para estudiantes de la USM (Android)
!OK / 30.08
Francisco Pereira - Sebastián Acevedo - Arturo Morales
Juego Android: Slug War
OK / 30.08
Matías Contreras - Camilo Fernández - María Rivas
"PrioriJava"
OK / 28.08
Cristobal Garrido, Matias Hernández y Ulises Leiva
Casino Usm
OK / 30.08
Nicolás Aguayo, José Pablo Fuenzalida
Utui
OK / 30.08
Paralelo 2





















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 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