POO en Java: diseñar con objetos
Encapsular, heredar, componer, e implementar bien los contratos que Java espera de un objeto.
13 aulas · 10 horas de práctica · en el navegador, sin instalar nada
Temario
- Clases y objetos — Una clase es un molde; `new` fabrica objetos a partir de él. Constructor, `this`, y por qué cada objeto tiene su propio estado.
- Encapsulamiento — `private` esconde el estado; los métodos públicos deciden qué cambios son válidos. La diferencia entre poder tocar un campo y poder romperlo.
- Herencia — `extends` reusa una clase entera; `super` llama a lo del padre; `@Override` reemplaza un método. Cuándo una clase realmente "es un" tipo de otra.
- Polimorfismo — Una referencia al tipo padre, un método que cada hijo resuelve a su manera. El `if` que la herencia reemplaza.
- Taller — La fábrica de robots defectuosos — Cada robot llega con una ficha de datos que puede estar rota. Validás en el constructor, separás los que se arman bien de los que hay que arreglar, y cerrás el círculo reparando y reintentando.
- Clases abstractas e interfaces — `abstract` obliga a las subclases a completar el contrato; `interface` lo declara sin dar ninguna implementación. `Comparable` para que un objeto sepa ordenarse solo.
- Taller — Sistema de reservas — Un cine chico, de verdad: asientos que se reservan y liberan, una sala que los organiza en una grilla, y precios que varían según el tipo de entrada.
- Interfaces múltiples y métodos default — Una clase puede cumplir varios contratos a la vez. Los métodos `default` le dan a una interfaz código compartido, sin dejar de ser un contrato.
- equals(), hashCode() y toString() — Por defecto, dos objetos solo son "iguales" si son el mismo objeto en memoria. Sobreescribir equals (y hashCode con él) cambia esa pregunta a "¿valen lo mismo?".
- Records — Una clase pensada para llevar datos, sin escribir el `equals`/`hashCode`/`toString`/constructor a mano. El compact constructor, el lugar exacto para validar.
- Enums — Un conjunto fijo de valores con nombre, cada uno con sus propios datos. Reemplaza los `if` sobre "qué fase es esta" por información que vive adentro del enum.
- Composición vs herencia, y SOLID — "Tiene un" contra "es un": cuándo conviene que un objeto delegue en otro en vez de heredar. Y las cinco letras que resumen lo que este curso ya venía enseñando.
- Taller — Refactor a SOLID — Una clase `Notificador` que valida, decide el canal y envía, todo junto. La separás en piezas, y al final agregás un canal nuevo sin tocar una línea de lo que ya funciona.