Try   HackMD

PRESENTACIÓN DEL CURSO


Descripción general del curso

  1. Programación Orientada a Objetos
  2. Resolución de Problemas
  3. Herramientas del Lenguaje Java
  4. Conocimiento y Desarrollo de Algoritmos
  5. Armado de un Proyecto
  6. Uso de Ansi SQL
  7. Java para la Web

Metodología

  1. Utilizaremos un campus virtual: loom.wecode.io
  2. Se registrará su progreso en dicho campus
  3. Habrá ejercitación y tareas para trabajar en los días que no haya cursada
  4. Utilizaremos moodle
  5. 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?

  1. 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?

  1. Es uno de los lenguajes más utilizados en el mundo (índice TIOBE)
  2. Principalmente es un lenguaje Orientado a Objetos
  3. Portátil (aunque esta característica deja de ser relevante)
  4. Excelente desempeño y escalabilidad
  5. Amplio soporte para la seguridad

Hola, mundo!

  public class App {
    public static void main(String[] args) {
      System.out.println("Hola, mundo!");
    }
  }

Programación Orientada a Objetos

  • ¿Qué es?
  • Paradigmas
    • Imperativo
    • Funcional
    • Lógico
  • Pilares
    1. Encapsulamiento
    2. Herencia
    3. Polimorfismo

Ejercicio 01. Cuentas Bancarias. Capítulo I


Encapsulamiento

  1. Concepto
  2. Diferencia con "ocultamiento de la información"
  3. ¿Para qué sirve?

Ejercicio 02. Cuentas Bancarias. Capítulo II


Colaboración

  1. Programación sobre interfaces
  2. Responsabilidades y límites
  3. Sobrecarga
  4. 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

  1. ¿Qué es?
  2. ¿Qué NO es?
  3. Ventajas y deventajas
  4. Reutilización vs. acoplamiento

Herencia en Java

  class A  { /* ... */ }

  class B extends A { /* ... */ }

Conceptos relacionados con la Herencia

  1. Sobreescritura
  2. Modificación de comportamiento
  3. Extensión de comportamiento
  4. NO DEBE rechazar comportamiento

Ejercicio 04. Cuentas Bancarias. Capítulo IV


Polimorfismo

  1. Concepto
  2. Polimorfismo de tipos
  3. Polimorfismo de comportamiento

Polimorfismo en Java (I)

  void saludar(Persona persona) {
    persona.saludar();
  }

  //...

  saludar(new Estudiante());
  saludar(new Profesor());


Polimorfismo en Java (II)

  for(Persona persona : listaDePersonas) {
    persona.saludar();
  }


Para pensar

Sea

  class A { /* ... */ }
  class B extends A { /* ... */ }

¿Son válidas?

  A v1 = new A();
  B v2 = new B();
  A v3 = new B();
  B v4 = new A();


Ejercicio 05. Cuentas Bancarias. Capítulo V


Tarea 1: Tarea de revisión por pares

Tarea 2: FlashCards


FIN (por ahora)