Volver a Java Básico

Introducción

Crear clases personalizadas es uno de los pilares fundamentales de la programación orientada a objetos. En este capítulo aprenderás cómo definir clases, proteger sus atributos y aplicar buenas prácticas de encapsulamiento.

Definición de una Clase

Una clase es una plantilla que describe la estructura y el comportamiento de los objetos. Contiene atributos (datos) y métodos (funciones).

// Definición de una clase personalizada public class Alumno { private String nombre; private int edad; // Constructor public Alumno(String nombre, int edad) { this.nombre = nombre; this.edad = edad; } // Getter public String getNombre() { return nombre; } // Setter con validación public void setNombre(String nombre) { if (nombre != null && !nombre.isEmpty()) { this.nombre = nombre; } } // Getter public int getEdad() { return edad; } // Setter con validación public void setEdad(int edad) { if (edad >= 0) { this.edad = edad; } } // Método personalizado public void saludar() { System.out.println("Hola, soy " + nombre + " y tengo " + edad + " años."); } } // Uso de la clase Alumno Alumno a = new Alumno("Ana", 20); a.saludar(); a.setEdad(25); System.out.println(a.getEdad());

Encapsulamiento

Encapsulamiento significa proteger los datos de una clase haciendo los atributos privados y accediendo a ellos solo a través de getters y setters. Esto te permite:

  • Controlar cómo se modifica la información
  • Agregar validaciones
  • Mantener la integridad del código

Buenas Prácticas

  • Siempre haz los atributos private
  • Usa getters y setters para acceder y modificar
  • Añade validaciones en los setters
  • Usa constructores para inicializar objetos
  • Crea métodos personalizados con propósito claro

Malas Prácticas Comunes

  • Hacer todos los atributos public
  • No validar datos en los setters
  • Crear clases sin propósito claro
  • Tener demasiada lógica en una sola clase

Ejemplo Práctico

Si estás construyendo un sistema de gestión de usuarios, puedes crear una clase Usuario con validación:

public class Usuario { private String nombreUsuario; private String email; public Usuario(String nombreUsuario, String email) { this.nombreUsuario = nombreUsuario; this.email = email; } public void setEmail(String email) { if (email.contains("@")) { this.email = email; } else { System.out.println("Email inválido"); } } }

Conclusión

El encapsulamiento es esencial para escribir código seguro y mantenible. Al proteger tus datos y validar cambios, aseguras que tus objetos mantengan su integridad.

En el próximo capítulo, exploraremos herencia y cómo reutilizar código entre clases relacionadas.