Java

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?

NetBeans
Clases & Objetos
Encapsulamiento
Herencia
Abstracción
Polimorfismo
Arrays
Interfaces
Vistas / GUI
MVC

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.

1

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.

2

Ejecutá el instalador

Seguí el wizard. Aceptá la licencia y dejá las opciones por defecto. NetBeans detectará el JDK automáticamente.

3

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.

4

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

Clase

Plantilla que define atributos y métodos.

Objeto

Instancia concreta de una clase.

Atributo

Variable que pertenece a la clase.

Método

Función que pertenece a la clase.

Constructor

Método especial que crea el objeto.

Persona.java — Editor Interactivo

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

Persona @ 0x3d6
Stringnombre=
intedad=
Stringcarrera=

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;
Estado:Sueldo: -500 ❌

Error crítico: La consistencia se rompió.

Escenario B: Encapsulado

obj.setSueldo(-500);
Estado:Sueldo: 0 ✅

Seguro: El setter rechazó el valor inválido.

0
// Mové el slider para probar la validación

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 completo

Visualizador de Array

Hacé click en una celda o usá el botón para iterar

8
[0]
6
[1]
9
[2]
7
[3]
10
[4]
// Hacé click en una celda o presioná 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

1
2
3
4
5
6
7
8
9

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

Interface

Solo métodos sin cuerpo (salvo default). Una clase puede implementar muchas.

Abstract

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

// Hover sobre una clase para ver su implementación

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

JFrame

La ventana principal de la aplicación.

JPanel

Un contenedor invisible para agrupar elementos.

JButton

Un botón cliqueable.

JLabel

Texto estático o imágenes.

JTextField

Caja 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).

  1. Hacé click derecho en tu paquete → New
  2. Seleccioná JFrame Form
  3. Arrastrá componentes desde la Palette (derecha) hacia tu ventana.
  4. Doble click en un botón para escribir el código de su "Evento".

Ejemplo Visual

JFrame (MiAplicacion)
JPanel
JLabel
Ingresá tu nombre:
JTextField
Ju
JButton
Saludar

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.

M

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; }
V

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.
C

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

Data
Data
OK
OK

🖥️ Vista

¡Guardado!
Cafe en grano...
Guardar

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