Dominando Java
Java es un lenguaje orientado a objetos, portátil y fuertemente tipado. Una vez que entiendes sus pilares, entiendes la base de casi cualquier lenguaje moderno.
¿Por qué Java?
Java sigue el principio "Write Once, Run Anywhere". Tu código se compila a bytecode que corre en la JVM (Java Virtual Machine) sin importar el sistema operativo.
Fuertemente Tipado
Cada variable tiene un tipo fijo en tiempo de compilación. Esto ayuda a detectar errores antes de ejecutar el programa y hace el código más predecible y seguro.
¿Qué vas a aprender?
01. Instalación de NetBeans
NetBeans es el IDE recomendado para empezar con Java. Viene con el JDK integrado, así que no tendrás que configurar nada extra.
Windows
Descarga el instalador .exe con JDK incluido
macOS
Descarga el .dmg o instala via Homebrew
Linux
Descarga el .sh o usa el gestor de paquetes
Descargá el instalador
Entrá a netbeans.apache.org y descargá la versión con JDK Bundle. Es más pesado pero incluye todo lo necesario.
Ejecutá el instalador
Seguí el wizard. Aceptá la licencia y dejá las opciones por defecto. NetBeans detectará el JDK automáticamente.
Creá tu primer proyecto
Abrí NetBeans → File → New Project → Java Application. Poné un nombre y desactivá "Create Main Class" si querés empezar desde cero.
Ejecutá con F6
Para correr tu proyecto presioná F6 o el botón ▶ verde. La salida aparece en la consola de abajo.
¿Problemas al abrir?
Si NetBeans no abre, puede ser que tu sistema no tenga instalado
Java. Verificalo descargando el JDK 21 LTS directamente
desde adoptium.net antes
de instalar NetBeans.
02. Clases y Objetos
En Java, todo gira alrededor de clases y objetos. Una clase es el plano o plantilla; un objeto es la instancia concreta creada a partir de ese plano.
Analogía
La clase es el plano de un edificio
El plano define cómo será el edificio (habitaciones, puertas, ventanas). Pero el plano en sí no es un edificio — el objeto es el edificio construido a partir de ese plano.
Terminología
ClasePlantilla que define atributos y métodos.
ObjetoInstancia concreta de una clase.
AtributoVariable que pertenece a la clase.
MétodoFunción que pertenece a la clase.
ConstructorMétodo especial que crea el objeto.
public classPersona{
// Atributos
String nombre = "Juan";
int edad =25;
String carrera = "Sistemas";
// Constructor
Persona(String n,int e,String c) {
nombre= n;
edad= e;
carrera= c;
}
}
Objeto instanciado en memoria
Editar objeto
03. Los 4 Pilares de la POO
La Programación Orientada a Objetos descansa en cuatro pilares fundamentales. Dominarlos es la diferencia entre escribir código y diseñarlo.
Encapsulamiento
Consiste en proteger los datos internos de un objeto. Pensá en los atributos como "cajas de almacenamiento" pasivas y en los métodos (getters/setters) como guardianes activos.
A diferencia de una variable simple, un método puede ejecutar código para validar datos, registrar auditorías o llamar a otros métodos antes de guardar un valor.
✅ Ventajas
- • Protege datos de modificaciones accidentales
- • Permite validar valores al ingresar
- • Oculta la complejidad interna
public class Cuenta{
private double saldo;
// El Setter actúa como filtro
public void setSaldo(double s) {
if (s >= 0) {
saldo = s;
}else{
// ¡Error evitado!
}
}
}
Protejamos el código de incidentes
Simulá un intento de ingresar un sueldo negativo. Mirá cómo reacciona el sistema con y sin protección.
Escenario A: Acceso Directo
obj.sueldo = -500;Error crítico: La consistencia se rompió.
Escenario B: Encapsulado
obj.setSueldo(-500);Seguro: El setter rechazó el valor inválido.
04. Arrays
Un array es una colección de elementos del mismo tipo, almacenados en
posiciones contiguas de memoria. El índice comienza siempre en 0.
// Declarar e inicializar
int[] notas = new int[5];
// Asignar valores
notas[0] = 8;
notas[1] = 6;
notas[2] = 9;
notas[3] = 7;
notas[4] = 10;
// Recorrer con for
for (int i = 0; i < notas.length; i++) {
System.out.println(notas[i]);
}
Datos a saber
• El tamaño del array es fijo al crearlo.
• El primer índice siempre es 0.
• El último es array.length - 1.
• Para tamaño dinámico usá ArrayList (ver abajo).
Atajo de inicialización
int[] notas = {8, 6, 9, 7, 10};Java infiere el tamaño automáticamente.
ArrayList
La evolución dinámica de los arrays tradicionales
01. Importación
importjava.util.ArrayList;
Sin esta línea al principio del archivo, Java no sabe qué es un ArrayList.
02. Cómo llamarlo (Sintaxis)
// ArrayList<Tipo> nombre = new ArrayList<>();
ArrayList<String> lista = newArrayList<>();
Ojo: No acepta tipos primitivos.
Usá su Clase Wrapper: Integer (int), Double (double),
etc.
03. Cómo se usa (Métodos)
.add(x)Agrega un elemento al final
.get(i)Obtiene el valor por índice
.remove(i)Borra el elemento en el índice i
.set(i, x)Reemplaza el valor en el índice i
.size()Retorna el total de elementos
.clear()Vacía la lista por completoVisualizador de Array
Hacé click en una celda o usá el botón para iterar
Arrays Bidimensionales (Matrices)
Un array de arrays. Pensalo como una tabla con filas y columnas.
int[][] matriz = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// matriz[fila][columna]
matriz[1][2] = 6; // fila 1, col 2
05. Interfaces
Una interfaz es un contrato: define qué
métodos debe tener una clase, pero no cómo implementarlos. Cualquier
clase puede implementar múltiples interfaces con la keyword implements.
// Definir una interfaz
interfaceVolador{
voidvolar();
}
// Implementar la interfaz
classPajaroimplementsVolador{
public voidvolar() {
System.out.println("Aleteo con mis alas");
}
}
classAvionimplementsVolador{
public voidvolar() {
System.out.println("Uso motores a reacción");
}
}
Interfaz vs Clase Abstracta
Solo métodos sin cuerpo (salvo default). Una
clase puede implementar muchas.
Puede tener métodos con cuerpo. Solo se hereda una.
Múltiples Interfaces
classPatoimplements
Volador, Nadador{ ... }
Un pato puede volar Y nadar. En Java, la herencia múltiple de clases no existe, pero sí la de interfaces.
Diagrama: Interfaz como Contrato
«interface»
Volador
+ volar(): void
Pajaro
implements Volador
Avion
implements Volador
Dron
implements Volador
06. Vistas y GUI (JFrame)
En Java, las Interfaces Gráficas de Usuario (GUI) permiten al usuario interactuar visualmente con el sistema usando ventanas, botones y cajas de texto. Usaremos la librería Swing, que viene incorporada por defecto.
Componentes Principales
JFrameLa ventana principal de la aplicación.
JPanelUn contenedor invisible para agrupar elementos.
JButtonUn botón cliqueable.
JLabelTexto estático o imágenes.
JTextFieldCaja para que el usuario ingrese texto corto.
🛠️ El Diseñador de NetBeans
Crear interfaces escribiendo código a mano es tedioso. Por eso NetBeans incluye un Diseñador Visual (Matisse).
- Hacé click derecho en tu paquete → New
- Seleccioná JFrame Form
- Arrastrá componentes desde la Palette (derecha) hacia tu ventana.
- Doble click en un botón para escribir el código de su "Evento".
Ejemplo Visual
07. Modelo MVC
Model–View–Controller es un patrón de arquitectura que separa la lógica de negocio, la presentación y el control de flujo en tres componentes independientes.
Modelo
Gestiona los datos y la lógica de negocio. No sabe nada de la interfaz. Contiene las clases de entidad y la comunicación con la base de datos.
class Producto { int id; String nombre; double precio; }Vista
Muestra los datos al usuario. No procesa lógica, solo renderiza. Recibe datos del Controlador y los presenta.
JTable, JLabel, JTextField — los componentes gráficos.Controlador
Es el intermediario. Recibe eventos de la Vista, llama al Modelo y actualiza la Vista con los resultados.
btnGuardar.addActionListener(e -> modelo.guardar(...));Simulación del Flujo MVC
Simulá una acción de usuario para ver cómo viajan los datos
🖥️ Vista
Esperando al usuario...
⚙️ Controlador
Esperando evento...
🗄️ Modelo
Conectado a BD
Estructura de Paquetes MVC
📁 mi-proyecto/
📁 model/
Producto.java
ProductoDAO.java
📁 view/
ProductoForm.java
ProductoListView.java
📁 controller/
ProductoController.java
📄 Main.java
Model — Producto.java
Clase POJO con atributos y getters/setters. El DAO (Data Access Object) maneja la BD.
View — ProductoForm.java
Clase Swing/JavaFX que extiende JFrame. No tiene lógica de negocio.
Controller — ProductoController.java
Inicializa la vista, registra los listeners y coordina Model ↔ View.
¡Java dominado!
Ahora practicá creando un proyecto MVC simple en NetBeans. La teoría se asienta con código real.
Volver a Cursos