ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2018 de 32 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/5
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 en Paro se actualizará cuando decidan retomar el curso.

23
30/5
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
OJO: Mañana vence plazo para inscribir tema de proyecto.

24
4/6
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)
Clase estándar exception
Standar Template Library: Algorithms
¿Es esto importante? Mauricio Venegas
25
6/6
Programación gráfica en C++: Desarrollo en Qt   Ejemplos: HelloWorld PainterRect  Scene  Conversor de temperatura Celsius-Fahrenheit
Motivación: Método (Jorge Guerra, Pin Pon)
Ingeniería de software: Introducción (pdf, ppt)
Proceso de Desarrollo de Software (pdf. ppt)
Aprenda Qt desde Hoy Mismo (local)
QT download
Violet UML Editor Instalación
Certificación
26
11/6
Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt)
27
13/6
Herramientas de apoyo al desarrollo de software:  Casos de uso. Tarjetas CRC, UML (Unified Modeling Language) (pdf, ppt)

28
18/6
Niveles de Certificación CMM (pdf, ppt)
29
20/6
Avanzar en proyecto
30
25/6
Atención de consultas asociadas al Certamen
 Se evaluará contenidos desde la clase del 7 de Mayo.
21
27/6
Segundo certamen
32
4/7
Presentación de Proyectos Plazo para entregar informe final

Evaluación  Notas Finales:  Aquí serán publicadas ....
                                    /  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, Sebastián Ubiergo, Andrés Romo
C2.solución()
P1_C2.Notas()   P2_C2.Notas()
C2.Histograma()

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 Detalle Matías Contreras, Francisco Frez y Damian Quiroz
Tarea 3: Robot en Laberinto como Objetos de Software en C++  Plazo 1 de Junio 23:59 hrs.
Notas: Est. Intercambio Detalle:Est. Intercambio

Tarea 4:
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. Nettle,  Cronómetro,  Evaluar: Paral_1   Paral_2, Evaluación de pares: Paral_1,  Paral_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
Filip Ekstrom & David Magiera
Interfaz para facilitar los estudios
OK/OK
Ferran & François
Enciclopedia del Vino (Source)
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
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