certmundo.
es‑mx

6 min de lectura

¿Qué es la programación orientada a objetos y cómo usarla en Java?

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.

Puntos clave

  • Una **clase** es una plantilla que define atributos y métodos; un **objeto** es una instancia concreta creada con `new` a partir de esa clase.
  • El **constructor** inicializa los atributos del objeto al momento de crearlo; usa `this.atributo = parametro` para evitar confusiones cuando ambos tienen el mismo nombre.
  • Puedes crear múltiples objetos a partir de la misma clase, cada uno con sus propios datos pero compartiendo la misma estructura y los mismos métodos.
  • Los cuatro pilares de la POO son encapsulamiento, abstracción, herencia y polimorfismo; dominar los dos primeros es la base para avanzar a Java intermedio.
  • Tu siguiente paso es practicar creando clases propias, explorar `ArrayList` y `HashMap`, y construir un proyecto personal que puedas mostrar en tu CV.

Comparte esta lección:

¿Qué es la programación orientada a objetos y cómo usarla en Java? | Programación en Java Básico | Certmundo