La programación orientada a objetos (POO) es un estilo de programación que organiza el código en "clases", que son plantillas para crear objetos con datos y comportamientos propios.
Java fue diseñado desde el inicio para usar este estilo. Entender la POO te abre la puerta a proyectos reales de software en México y en todo el mundo.
¿Qué es una clase y qué es un objeto?
Una clase es una plantilla o molde. Un objeto es algo concreto creado a partir de esa plantilla.
Piénsalo así: la clase Producto describe qué información tiene un producto de Liverpool. Un objeto sería el producto concreto "Televisor Samsung 55 pulgadas" con su precio y código específicos.
En Java, primero defines la clase y después creas objetos basados en ella. Puedes crear tantos objetos como necesites a partir de la misma clase.
Estructura de una clase en Java
Una clase en Java sigue este formato:
class NombreClase {
// Atributos (datos)
tipoDato nombreAtributo;
// Constructor
NombreClase(tipoDato param1, tipoDato param2) {
this.nombreAtributo = param1;
}
// Métodos (comportamientos)
tipoDato nombreMetodo() {
// lógica
return valor;
}
}
Los atributos almacenan la información del objeto. El constructor es un método especial que se ejecuta al crear el objeto. Los métodos definen qué puede hacer el objeto.
Ejemplo 1 — Clase Producto (Liverpool)
Imagina que trabajas en el sistema de inventario de Liverpool. Necesitas representar un producto con nombre y precio.
class Producto {
String nombre;
double precio;
Producto(String nombre, double precio) {
this.nombre = nombre;
this.precio = precio;
}
double calcularPrecioConIVA() {
return precio * 1.16;
}
void mostrarInfo() {
System.out.println("Producto: " + nombre);
System.out.println("Precio sin IVA: $" + precio);
System.out.printf("Precio con IVA: $%.0f%n", calcularPrecioConIVA());
}
}
public class Main {
public static void main(String[] args) {
Producto tv = new Producto("Televisor Samsung 55\'\'" , 12500);
tv.mostrarInfo();
}
}
Salida del programa:
Producto: Televisor Samsung 55''
Precio sin IVA: $12,500
Precio con IVA: $14,500
La palabra clave new crea un objeto nuevo en memoria. La palabra this dentro del constructor se refiere al atributo del objeto, no al parámetro.
Ejemplo 2 — Clase Empleado (Bimbo)
Ahora modela un empleado de Bimbo con nombre, puesto y salario mensual.
class Empleado {
String nombre;
String puesto;
double salarioMensual;
Empleado(String nombre, String puesto, double salarioMensual) {
this.nombre = nombre;
this.puesto = puesto;
this.salarioMensual = salarioMensual;
}
double calcularSalarioAnual() {
return salarioMensual * 12;
}
double calcularAguinaldo() {
// 15 días de salario según la Ley Federal del Trabajo
return (salarioMensual / 30) * 15;
}
void mostrarResumen() {
System.out.println("Empleado: " + nombre);
System.out.println("Puesto: " + puesto);
System.out.printf("Salario mensual: $%.0f%n", salarioMensual);
System.out.printf("Salario anual: $%.0f%n", calcularSalarioAnual());
System.out.printf("Aguinaldo estimado: $%.0f%n", calcularAguinaldo());
}
}
public class Main {
public static void main(String[] args) {
Empleado e1 = new Empleado("Ana Torres", "Supervisora de planta", 18500);
Empleado e2 = new Empleado("Carlos Ríos", "Operador logístico", 11200);
e1.mostrarResumen();
System.out.println("---");
e2.mostrarResumen();
}
}
Salida del programa:
Empleado: Ana Torres
Puesto: Supervisora de planta
Salario mensual: $18,500
Salario anual: $222,000
Aguinaldo estimado: $9,250
---
Empleado: Carlos Ríos
Puesto: Operador logístico
Salario mensual: $11,200
Salario anual: $134,400
Aguinaldo estimado: $5,600
Observa que creaste dos objetos distintos (e1 y e2) a partir de la misma clase Empleado. Cada uno tiene sus propios datos, pero comparte la misma estructura y los mismos métodos.
Ejemplo 3 — Clase Pedido (Mercado Libre)
Este ejemplo combina atributos y métodos más complejos para modelar un pedido en Mercado Libre.
class Pedido {
String idPedido;
String producto;
int cantidad;
double precioUnitario;
boolean envioExpress;
Pedido(String idPedido, String producto, int cantidad, double precioUnitario, boolean envioExpress) {
this.idPedido = idPedido;
this.producto = producto;
this.cantidad = cantidad;
this.precioUnitario = precioUnitario;
this.envioExpress = envioExpress;
}
double calcularSubtotal() {
return cantidad * precioUnitario;
}
double calcularCostoEnvio() {
if (envioExpress) {
return 149;
} else {
return 0;
}
}
double calcularTotal() {
return calcularSubtotal() + calcularCostoEnvio();
}
void imprimirResumen() {
System.out.println("Pedido: " + idPedido);
System.out.println("Producto: " + producto + " x" + cantidad);
System.out.printf("Subtotal: $%.0f%n", calcularSubtotal());
System.out.printf("Envío: $%.0f%n", calcularCostoEnvio());
System.out.printf("Total: $%.0f%n", calcularTotal());
}
}
public class Main {
public static void main(String[] args) {
Pedido p = new Pedido("ML-00291", "Teclado mecánico", 2, 850, true);
p.imprimirResumen();
}
}
Salida del programa:
Pedido: ML-00291
Producto: Teclado mecánico x2
Subtotal: $1,700
Envío: $149
Total: $1,849
Los cuatro pilares de la POO
La POO se basa en cuatro conceptos fundamentales. En este curso básico cubriste los dos primeros.
| Pilar | Descripción breve | Estado en este curso |
|---|---|---|
| Encapsulamiento | Proteger los datos dentro de la clase | Base cubierta |
| Abstracción | Mostrar solo lo necesario al exterior | Base cubierta |
| Herencia | Una clase puede heredar atributos de otra | Nivel intermedio |
| Polimorfismo | Un método puede comportarse diferente según el objeto | Nivel intermedio |
Dominar herencia y polimorfismo es tu siguiente paso en un curso de Java intermedio.
Errores comunes
Error 1 — Confundir la clase con el objeto.
La clase es el molde; el objeto es lo creado con new. Escribir Empleado.calcularSalarioAnual() sin crear un objeto primero produce un error de compilación.
Error 2 — Olvidar this cuando el parámetro tiene el mismo nombre que el atributo.
Si el constructor recibe nombre y el atributo también se llama nombre, debes escribir this.nombre = nombre. Sin this, el atributo nunca recibe el valor.
Error 3 — Crear el objeto pero no guardarlo en una variable.
Escribir new Producto("Laptop", 22000) sin asignarlo a ninguna variable crea el objeto y lo descarta de inmediato. Siempre escribe Producto p = new Producto("Laptop", 22000).
Error 4 — Poner lógica de negocio dentro del constructor. El constructor solo debe asignar valores a los atributos. Los cálculos van en métodos separados. Esto hace tu código más fácil de mantener y de leer.
Comparación: código sin POO vs. con POO
| Aspecto | Sin POO (variables sueltas) | Con POO (clases y objetos) |
|---|---|---|
| Organización | Variables dispersas por todo el programa | Datos y métodos agrupados en una clase |
| Reutilización | Debes copiar y pegar lógica | Creas múltiples objetos con una sola clase |
| Mantenimiento | Cambiar un dato requiere buscar en todo el código | Solo editas la clase en un lugar |
| Escalabilidad | Difícil de crecer | Fácil de agregar nuevas clases o métodos |
Lo que aprendiste en este curso
En estas ocho lecciones construiste una base sólida en Java. Repasamos los temas principales:
- Variables y tipos de datos (
int,double,String,boolean) para almacenar información. - Operadores y expresiones para realizar cálculos con salarios, precios e IVA.
- Condicionales (
if,else,switch) para tomar decisiones en tu programa. - Ciclos (
for,while) para repetir tareas automáticamente. - Arreglos para manejar colecciones de datos como listas de precios.
- Métodos para organizar y reutilizar tu código.
- Clases y objetos para modelar entidades del mundo real.
Tus próximos pasos
Practica creando tus propias clases. Modela una tienda OXXO con clase Producto, o una nómina de FEMSA con clase Empleado. Cuanto más practiques, más natural se vuelve el pensamiento orientado a objetos.
Explora Java intermedio. Los temas de herencia, interfaces y colecciones (ArrayList, HashMap) son el siguiente nivel y te permiten construir aplicaciones completas.
Instala un IDE profesional. IntelliJ IDEA Community Edition es gratuito y es el estándar en empresas mexicanas de software. Te ayuda a detectar errores antes de ejecutar el programa.
Construye un proyecto personal. Un sistema de inventario sencillo, una calculadora de nómina o un registro de pedidos son proyectos concretos que puedes mostrar en tu CV.
La POO no es solo una técnica: es la forma en que se construye el software profesional en México y en el mundo. Dominar clases y objetos en Java te da las herramientas para crear aplicaciones reales, trabajar en equipos de desarrollo y avanzar hacia roles mejor remunerados en el sector tecnológico.