PRESENTACIÓN DEL CURSO
Descripción general del curso
- Programación Orientada a Objetos
- Resolución de Problemas
- Herramientas del Lenguaje Java
- Conocimiento y Desarrollo de Algoritmos
- Armado de un Proyecto
- Uso de Ansi SQL
- Java para la Web
Metodología
- Utilizaremos un campus virtual:
loom.wecode.io
- Se registrará su progreso en dicho campus
- Habrá ejercitación y tareas para trabajar en los días que no haya cursada
- Utilizaremos moodle
- Habrá una evaluación formal al finalizar cada tramo (Java, SQL, Java Web)
Calendario tentativo
Semana 1: Java/POO
- Repaso de conceptos de programación. Planteo del paradigma de orientación a objetos. Ventajas y desventajas. Mención de otros paradigmas.
- Pilares de la programación orientada a objetos. POJOs (plain old java objects). Getters y setters
- Constructores
- Encapsulamiento
Semana 2: Java/POO + Java/Diseño
- Responsabilidades e incumbencias de los objetos. Coherencia y cohesión en el armado de clases.
- Herencia. Polimorfismo.
- Interfaces y clases abstractas.
- Responsabilidades e incumbencias de los objetos. Coherencia y cohesión en el armado de clases.
- Modelado con objetos.
Calendario tentativo
Semana 3: Problemas y algoritmos
- Diseño outside-in.
- Resolución guiada por consignas para trabajo en clase.
- Herramientas del lenguaje. Excepciones. Colecciones.
- Conceptos de pruebas de software.
- Búsqueda de máximos/mínimos.
Semana 4: Algoritmos y práctica
- Búsqueda secuencial. Algoritmos de ordenamiento elementales.
- Problemas sobre la base de estos algoritmos.
- Lectura y análisis de la consigna. Planteo en equipos y conjunto de la solución con objetos.
- Diseño. Especificación de la solución. Programación.
- Pruebas. Refinamiento
Calendario tentativo
Semana 5: Demo y SQL
- Demostración.
- Definiciones y estructura de un SGBD
- select, from
- group by
- order by
Semana 6: SQL
- insert
- delete, update
- joins, exists, limit
- Integridad referencial, índices
- Mejoras de performance. Problemas reales acotados
Calendario tentativo
Semana 7: Web/HTML+CSS
- Análisis desde los conocimientos preexistentes, en función de su uso de la web.
- Conceptos básicos del templating.
- Elementos. Sintaxis.
- Nociones de look and feel.
Semana 8: Web/Javascript + Java Web
- Conceptos básicos del lenguaje. Utilidades principales para el desarrollo web.
- Conceptos básicos del lenguaje. Utilidades principales para el desarrollo web.
- Conceptos básicos del lenguaje. Utilidades principales para el desarrollo web.
- Introducción al paradigma WEB. Protocolo HTTP. Stateless. Sesión. Request.
- Conceptos básicos del patrón MVC. Arquitectura. Responsabilidades. Incumbencias.
Calendario tentativo
Semana 9: Java Web
- Ejemplos básicos. Ejemplos más complejos.
- JSP/Thymeleaf. Adaptar los HTML generados a un formato interpolado.
- Introducción al paradigma ORM. Adaptación de los conocimientos.
Semana 10: Proyecto final
- Presentación
- Demostración
PRIMERA PARTE
Ejercicio 00. Diagnóstico (trabajo por pares)
¿Por qué Java?
- Es el lenguaje más utilizado en el mundo https://www.tiobe.com/tiobe-index/
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
¿Por qué Java?
- Es uno de los lenguajes más utilizados en el mundo (índice TIOBE)
- Principalmente es un lenguaje Orientado a Objetos
- Portátil (aunque esta característica deja de ser relevante)
- Excelente desempeño y escalabilidad
- Amplio soporte para la seguridad
Hola, mundo!
Programación Orientada a Objetos
- ¿Qué es?
- Paradigmas
- Imperativo
- Funcional
- Lógico
- Pilares
- Encapsulamiento
- Herencia
- Polimorfismo
Ejercicio 01. Cuentas Bancarias. Capítulo I
Encapsulamiento
- Concepto
- Diferencia con "ocultamiento de la información"
- ¿Para qué sirve?
Ejercicio 02. Cuentas Bancarias. Capítulo II
Colaboración
- Programación sobre interfaces
- Responsabilidades y límites
- Sobrecarga
- Conceptos de Diseño Orientado a Objetos
Ejercicio 03. Cuentas Bancarias. Capítulo III
Tarea: Leer "JUnit Cookbook"
https://junit.org/junit4/cookbook.html
Herencia
- ¿Qué es?
- ¿Qué NO es?
- Ventajas y deventajas
- Reutilización vs. acoplamiento
Herencia en Java
Conceptos relacionados con la Herencia
- Sobreescritura
- Modificación de comportamiento
- Extensión de comportamiento
- NO DEBE rechazar comportamiento
Ejercicio 04. Cuentas Bancarias. Capítulo IV
Polimorfismo
- Concepto
- Polimorfismo de tipos
- Polimorfismo de comportamiento
Polimorfismo en Java (I)
Polimorfismo en Java (II)
Para pensar…
Sea…
¿Son válidas?
Ejercicio 05. Cuentas Bancarias. Capítulo V
Tarea 1: Tarea de revisión por pares
Tarea 2: FlashCards
FIN (por ahora)