Curso de Java: Fundamentos de Programación
Bienvenido al Curso de Fundamentos de Programación con Java. Está pensado para personas que nunca han programado y cubre el temario completo de una asignatura de programación de primer curso: el módulo de Programación de los ciclos formativos (DAM y DAW) y las asignaturas de Fundamentos de Programación y Programación Orientada a Objetos de los grados universitarios de Informática.
💡 Consejo: Cuando termines este curso, continúa con el Curso de Java Avanzado: programación funcional, concurrencia, bases de datos con JDBC e Hibernate, y aplicaciones con Spring Boot.
¿Qué vas a aprender?
Al finalizar este curso serás capaz de:
- Comprender cómo funciona un ordenador al ejecutar un programa y qué son la JVM, el JDK y el bytecode
- Resolver problemas diseñando algoritmos con pseudocódigo y diagramas de flujo
- Escribir programas en Java con variables, operadores, entrada/salida, condicionales y bucles
- Descomponer problemas en métodos y aplicar la recursividad
- Trabajar con arrays, matrices y algoritmos clásicos de búsqueda y ordenación
- Manipular cadenas de texto
- Programar orientado a objetos: clases, objetos, encapsulación, herencia, polimorfismo, clases abstractas e interfaces
- Usar enumeraciones, records, clases selladas y pattern matching
- Gestionar errores con excepciones
- Almacenar datos en colecciones (listas, conjuntos y mapas) con genéricos
- Leer y escribir ficheros
- Representar tus diseños con diagramas de clases UML
- Probar tu código con JUnit y depurarlo con el IDE
- Escribir código limpio, documentarlo y versionarlo con Git
- Desarrollar una aplicación completa de principio a fin
Versión del curso
El curso utiliza Java 25, la versión con soporte a largo plazo (LTS) actual. Incluye las novedades que simplifican el aprendizaje, como los ficheros fuente compactos con void main() y la clase IO, sin olvidar la forma clásica de escribir programas que encontrarás en el código profesional.
Estructura del curso
El curso se divide en 22 módulos agrupados en cuatro bloques:
Bloque 1: Introducción a la programación (Módulos 00-04)
| Módulo | Tema | Descripción |
|---|---|---|
| 00 | Introducción a la programación y a Java | Qué es programar, lenguajes, compilación e interpretación, historia de Java, JVM, JDK y JRE |
| 01 | Entorno de desarrollo | Instalación del JDK 25, IntelliJ IDEA, VS Code, JShell, primer programa y estructura de un proyecto |
| 02 | Algoritmos, pseudocódigo y diagramas de flujo | Resolución de problemas, diseño de algoritmos, pseudocódigo, diagramas de flujo y trazas |
| 03 | Variables, tipos de datos y operadores | Tipos primitivos, variables, constantes, var, conversiones, operadores y expresiones |
| 04 | Entrada y salida por consola | System.out, printf, la clase IO, Scanner y validación de la entrada |
Bloque 2: Programación estructurada (Módulos 05-09)
| Módulo | Tema | Descripción |
|---|---|---|
| 05 | Estructuras condicionales | if, else, switch clásico y expresiones switch, operador ternario |
| 06 | Estructuras repetitivas | while, do-while, for, bucles anidados, contadores, acumuladores y banderas |
| 07 | Métodos y recursividad | Definición, parámetros, retorno, ámbito, sobrecarga, paso por valor y recursividad |
| 08 | Arrays y algoritmos | Arrays unidimensionales y bidimensionales, búsqueda lineal y binaria, ordenación |
| 09 | Cadenas de caracteres | String, StringBuilder, métodos, comparación, text blocks y expresiones regulares básicas |
Bloque 3: Programación orientada a objetos (Módulos 10-16)
| Módulo | Tema | Descripción |
|---|---|---|
| 10 | Clases y objetos | Paradigma orientado a objetos, clases, atributos, métodos, constructores, this y memoria |
| 11 | Encapsulación, miembros estáticos y paquetes | Modificadores de acceso, getters y setters, static, paquetes, clases envoltorio e inmutabilidad |
| 12 | Herencia | extends, super, sobrescritura, Object, equals, hashCode, toString y final |
| 13 | Polimorfismo, clases abstractas e interfaces | Polimorfismo, upcasting y downcasting, clases abstractas, interfaces y métodos por defecto |
| 14 | Enumeraciones, records y clases selladas | enum, record, clases selladas, pattern matching con instanceof y switch |
| 15 | Excepciones | Jerarquía, try/catch/finally, throw, throws, excepciones propias y try-with-resources |
| 16 | Colecciones y genéricos | List, Set, Map, iteradores, Comparable, Comparator y clases genéricas |
Bloque 4: Ficheros, diseño y calidad (Módulos 17-21)
| Módulo | Tema | Descripción |
|---|---|---|
| 17 | Ficheros | Rutas, java.nio.file, ficheros de texto, CSV, ficheros binarios y serialización |
| 18 | Diagramas UML de clases | Clases, relaciones (asociación, agregación, composición, herencia, dependencia) y de UML a Java |
| 19 | Pruebas y depuración | Depurador del IDE, pruebas unitarias con JUnit, casos de prueba y TDD |
| 20 | Buenas prácticas | Convenciones, código limpio, Javadoc, refactorización y control de versiones con Git |
| 21 | Proyecto final | Aplicación completa de consola con POO, colecciones, ficheros, excepciones y pruebas |
Requisitos
- Ningún conocimiento previo de programación
- Un ordenador con Windows, macOS o Linux
- Conexión a internet para descargar el JDK 25 y el IDE (se explica en el módulo 01)
Convenciones utilizadas
A lo largo del curso encontrarás estos indicadores:
📘 Concepto: Explicación teórica de un concepto importante.
💻 Ejemplo: Código de ejemplo que puedes copiar y ejecutar.
✏️ Ejercicio: Práctica para que resuelvas por tu cuenta.
⚠️ Importante: Información crucial que debes recordar.
💡 Consejo: Trucos y buenas prácticas profesionales.
Table of contents
- 00 - Introducción a la programación y a Java
- 01 - Entorno de desarrollo
- 02 - Algoritmos, pseudocódigo y diagramas de flujo
- 03 - Variables, tipos de datos y operadores
- 04 - Entrada y salida por consola
- 05 - Estructuras condicionales
- 06 - Estructuras repetitivas
- 07 - Métodos y recursividad
- 08 - Arrays y algoritmos
- 09 - Cadenas de caracteres
- 10 - Clases y objetos
- 11 - Encapsulación, miembros estáticos y paquetes
- 12 - Herencia
- 13 - Polimorfismo, clases abstractas e interfaces
- 14 - Enumeraciones, records y clases selladas
- 15 - Excepciones
- 16 - Colecciones y genéricos
- 17 - Ficheros
- 18 - Diagramas UML de clases
- 19 - Pruebas y depuración
- 20 - Buenas prácticas
- 21 - Proyecto final