terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat poo-encapsulamiento.md
guest@codeandosimple: ~/blog/poo $ cat encapsulamiento.md

Encapsulamiento_

// "El éxito depende del esfuerzo" - Sófocles

En este capítulo hablaremos del concepto de encapsulamiento y ocultamiento de información, fundamentos críticos en la programación orientada a objetos, ya que promueven un diseño de software más seguro y mantenible.

Por un lado, encapsular, agrupar datos y comportamiento en un mismo lugar, y por otro ocultar, no dejar visibles los detalles internos y además controlar el acceso.

Veremos cómo estos conceptos ayudan a proteger los datos y a estructurar el código de una manera más lógica y robusta.

# ¿Qué es el Encapsulamiento?

El encapsulamiento es uno de los cuatro principios fundamentales de la programación orientada a objetos.

Se refiere a la práctica de agrupar los datos (atributos) y los métodos que operan sobre esos datos en una única entidad, o clase, y restringir el acceso a ciertos componentes de esa clase.

Esto no solo protege los datos de un acceso indebido, sino que también hace el código más fácil de mantener y entender.

# Ocultamiento de Información

Ocultar información está fuertemente ligado al encapsulamiento. Se trata de esconder los detalles internos del funcionamiento de una clase y exponer solo lo que es necesario para el resto del programa.

Esto significa que los usuarios de una clase no necesitan entender su complejidad interna para poder usarla.

# Modificadores de Acceso

En la mayoría de los lenguajes, incluyendo Java, existen modificadores de acceso, para establecer el nivel de acceso a las clases, constructores, métodos y variables. Los más comunes son:

  • private: El miembro solo es accesible dentro de la misma clase.

  • public: El miembro es accesible desde cualquier clase.

  • protected: El miembro es accesible dentro de su propia clase, en clases del mismo paquete, y en subclases.

  • Sin modificador (default): El miembro es accesible solo dentro de su propio paquete.

# Getters y Setter

Los getters y setters son métodos que permiten leer y modificar, respectivamente, el valor de los atributos privados de una clase.

Estos son un ejemplo clásico de encapsulamiento y ocultamiento de información:

  • Getters: Métodos que retornan el valor de un atributo.

  • Setters: Métodos que establecen o actualizan el valor de un atributo.

# Ejemplo

Refactorizar una clase para aplicar principios de encapsulamiento.

Tenemos la clase “CuentaBancaria†que no usa encapsulamiento: 

public class CuentaBancaria {
  public String titular;
  public double saldo;

  public void depositar(double cantidad) {
      saldo += cantidad;
  }

  public void retirar(double cantidad) {
      saldo -= cantidad;
  }
}

Desde cualquier lugar se puede acceder directamente a los atributos titular o saldo.

CuentaBancaria miCuenta = new CuentaBancaria();
miCuenta.titular = "Juan Perez";

Refactorizamos esta clase para aplicar el encapsulamiento:

public class CuentaBancaria {
  // Atributos privados
  private String titular;
  private double saldo;

  // Constructor
  public CuentaBancaria(String titular, double saldoInicial) {
      this.titular = titular;
      this.saldo = saldoInicial;
  }

  // Getters y Setters
  public String getTitular() {
      return titular;
  }

  public void setTitular(String titular) {
      this.titular = titular;
  }

  public double getSaldo() {
      return saldo;
  }

  // Métodos para depositar y retirar
  public void depositar(double cantidad) {
      if (cantidad > 0) {
          saldo += cantidad;
      }
  }

  public void retirar(double cantidad) {
      if (cantidad <= saldo) {
          saldo -= cantidad;
      }
  }
}

En esta versión, los atributos titular y saldo son privados, lo que significa que no pueden ser modificados directamente desde fuera de la clase. En su lugar, se utilizan los métodos getters y setters para acceder y modificar estos valores, permitiendo la validación y el control sobre cómo y cuándo se accede a los datos.

CuentaBancaria miCuenta = new CuentaBancaria();
miCuenta.setTitular("Juan Perez");

# Conclusiones

El encapsulamiento y el ocultamiento de información son conceptos clave en la programación orientada a objetos, ayudan a proteger los datos y a hacer un código más seguro, organizado y mantenible.

Al usar modificadores de acceso, getters y setters, se puede controlar cómo se accede y se modifica el estado interno de un objetos, lo que lleva a aplicaciones más robustas y fiables.

A medida que continúes tu camino en la programación, te darás cuenta de que el encapsulamiento no es solo una técnica, sino una filosofía, que guía un diseño de software sólido y efectivo.