ELO 329 Diseño y Programación Orientados a Objetos
Primer Semestre 2016 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  B213
Ayudante: Nicolás Olivos, 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
  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
7/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 2015
2
9/3
HOY NOS JUNTAREMOS EN LA B215
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 PC, instale Java, compile y corra estos ejemplos
Relación entre Android y Java
3
14/9
Tipos de datos y control de flujo básicos (pdf, ppt). Ejemplos: Puntos y líneas, prueba; InputExample InputTest Clase Scanner
4
16/9
La clase será en B213
Java: objetos, clases (pdf, ppt). Ejemplos: Employee, ConstructorTest.
Actividad en clases
Terminal para Windows con servidor X
5
21/3
Java: Herencia, clases abstractas, clase Object -equals- (pdf, ppt)  Ejemplo: ManagerTest: Managers son empleados, Rectangle.java
6
24/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
28/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
31/3
Explicar Tarea 1. Actividad en clases: Comenzar primera etapa.
 
9
4/4
Programación basada en eventos (o dirigida por eventos): Conceptos (pdf, ppt). Ejemplos: CloseableFrame, SimpleMimic, Mimic, MimicCharByChar JFrame  WindowListener  WindowsAdapter
10
6/4
Actividad en clases Tutorial sobre Swing, Programas de ejemplo
SwingSet3 Demo, Guía Visual de componentes Swing
11
11/4
Programación de interfaces gráficas en Java. Swing (pdf, ppt) Ejemplos: GlassPaneDemo LayeredPane MenuDemo CreaBotones, Sketch, MouseTest, ShapesDemo2D

13/4
Semana Mechona Todos a participar
12
18/4
Java: Manejo de excepciones (pdf, ppt). Ejemplos: Efecto en desempeño ExceptionalTest
Persistencia y Serialización con Archivos (pdf, ppt).   Elemplo: Grabando objetos empleados en archivo: ObjectFileTest.java
Tutorial Excepciones
13
20/4
Generación de paquetes y documentación, Javadoc (pdf. ppt), Ejemplos:PackageTest, Account documentación  resultante
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
14 25/4
Administradores del Espacio: Layout Managers: Cómo posicionar componentes dentro de un contenedor.
Ejemplos
15
27/4
Applets (pdf, ppt)
NotHelloWorldApplet (Prueba); TumbleItem (Prueba); Calculator Application, Applet (Prueba embebida, Popup); Chart (Prueba); Tic Tac Toe; Bookmarks (Prueba).
Actividad en clases: Incorporando un menú a una aplicación
Ver demo de Applet
Tutorial sobre Applets
Para ver plugins en firefox about:plugins
The future of Java Applets
16
2/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++
17
4/5
Primer Certamen
18
9/5
Constantes, referencias y cambios de tipo en C++ (pdf, ppt) Type casting: dynamic_cast <new_type> (expression), static_cast <new_type> (expression), const_cast <new_type> (expression)
Revisar construcción de Makefiles
19
11/5
Nadie llegó a clases (Paro estudiantil)


16/5
20/5
Vacaciones para estudiantes

20
23/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)
Incomplete Class Declarations
21
25/5
OJO: Hoy vence plazo para inscribir tema de proyecto.
Actividades en clases: codificación en C++ de clase en Java  e implementación de clase CVector
Herencia en C++ (pdf, ppt) Ejemplos: Herencia Pública, Protegida. Privada.
 

22
30/5
Ligado dinámico en C++: Métodos Virtuales (pdf, ppt) Ejemplos: VirtualMotor, CatsAndDogs
Excepciones (pdf, ppt)
Clase estándar exception
23
1/6
Consultas sobre la Tarea 3.
Motivación: Método (Jorge Guerra, Pin Pon)
Ingeniería de software: Introducción (pdf, ppt)
Proceso de Desarrollo de Software (pdf. ppt)
¿Es esto importante? Mauricio Venegas
24
6/6
Metodologías de desarrollo de software: Desarrollo Iterativo e Incremental (pdf, ppt) Tómbola
25
8/6
Esta clase no se realizó por Paro de Estudiantes

26
13/6
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)
ArgoUML (wiki)
UML Umbrello (es)
Certificación
27
15/6
Programación Genérica: Plantillas (templates) en C++ (pdf, ppt)
Ejemplos: cuentaRepeticiones (C2_2s2008), Máximo (C2_2s2009)
Actividad en clases: Clases en C++ y templaes.
STL,
Algoritmos Genéricos de la STL
 Clases Genéricas en Java,
28
20/6
Biblioteca estándar de plantillas y Algoritmos genéricos: "Vector" e "Iterators" (pdf, ppt)
Ejemplo de Algoritmo genérico: Objeto función (Functor). Functor es una función con estado.
Listas (pdf, ppt)
Patrones de Diseño (pdf, ppt)
Destructor Virtual: si se requiere un destructor en clase hija, en el padre debemos ponerlo como virtual. Un ejemplo.
Design patterns
Singleton
Diseño de patrones en C++
Ejemplo de MVC en Java, patrón observador
29
22/6
Presentación de Proyectos
Cada grupo contará con 20 minutos.
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.


27/6
Feriado

30
29/6
Segundo certamen

31
4/7
Presentación de Proyectos
32
6/7
Certamen Recuperativo (todos los contenidos)


Evaluación  Notas Finales:  al 14.07 
                                    /  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 4 de Mayo de 29 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.Histograma()
Tomás Alberto Gómez Molina
C2.solución()
C2.Notas()
C2.Histograma()

Otros Años: 1º Certamen: 2015 2014 2013 2012 2011 2010, 2009, 2008, 2007, 2006, 2005, 2004;      Certamen Final: 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: Bolas Libres y Enlazadas en Espacio Cerrado como Objetos de Software. Plazo entrega 19 de abril, 21:59 hrs. Notas
Tomás Gómez, Jesús Márquez &  Johannes Rothkegel
Tarea 2: Simulación Gráfica de Bolas Libres y Enlazadas en Espacio Cerrado como Objetos de Software. Plazo de entrega 13 de Mayo, 21:59 hrs.
Notas v2
Camila Carrasco & Petri Manninen
Tarea 3:  Bolas Libres y Enlazadas en Espacio Cerrado como Objetos de Software en C++. Plazo 2 de junio, 21:59 hrs. Notas
Jesús Máquez & Diego Pandolfa

Proyecto grupal:   Instrucciones generales, aquí inscripción de temas, aquí temas ya inscritos.
* Inscripción: 10% por definición a tiempo Plazo: 25 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 hechas ya aquí. Otros: Estudie algún patrón de diseño explíquelo y haga algún ejemplo de su uso.  Simuladores para fenómenos de la química.
* 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, Orden de presentaciónCronómetroEvaluar, Evaluación 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
Camila Carrasco, Petri Manninen
Juego para aumentar vocabulario de otros idiomas.
OK / OK
Jesús Márquez Barrera - Diego Pandolfa
Editor de Circuitos
OK/ OK
Tomás Gómez Molina - Johannes Rothkegel Sielfeld
Sistema de fichas clínicas y manejo de horarios en un centro dental.
OK/ 5 de julio
Mario Marin, Felipe Silva
Implementacion de 'block de notas' encriptado en servidor centralizado
OK/ OK
Mauricio Aros Morales, Vicente Inostroza Olavarría, Pablo Reyes Robles
Desarrollo de Software de Apoyo para Aprendizaje de Lenguaje (código)
OK/ OK
Pilar Arancibia
Juego de Mesa
OK/ OK
Francisco Cid Nieto, Miguel Ferreri Guerrero
Interfaz para Bomberos utilizando la API de Twitter
OK/ 5 de Julio

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, manual de emacs) , jgrasp (Java), Netbeans, Eclipse. Java Programming with Eclipse at Stanford University
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