👨‍💻
Coding Library
  • 👨‍💻Coding Library
  • 👾Linux
    • Basic Commands
    • Other commands
      • Ls
      • Mv
      • Chmod
      • Ln
      • Cat
      • Wc
      • Grep
      • Sed
      • Find
    • Sistema de ficheros
      • Inodos
  • 📦Git
    • Page 3
  • 🖊️Vim
    • Vim Basics
      • Gramatica de Vim
      • Moviendote por un archivo
    • Todo y mas
  • 🏛️C
    • Estructuras de datos
      • Listas Enlazadas
      • Colas
      • Pilas
      • Arboles
    • Valgrind
    • Operadores de bits
    • Procesos e Hilos
      • Fork
      • Wait
      • Waitpid
      • Semáforos
      • Estructura sigaction
      • Signals
    • MiniLibX
      • Ventanas (windows)
      • Imprimir Pixels
      • Imagenes
      • Colores
      • Eventos
      • Loops (bucles)
      • Leer imagenes
    • Readline
    • Funciones
      • opendir
      • access
    • Network Programming
      • Structs
      • Llamadas al sistema
      • Synchronous I/O Multiplexing
        • kqueue
  • 🌃C++
    • Clases
      • Herencia
      • Shallow and deeps copies
      • Clases abstractas y Interfaces
      • Reasignar operadores
    • Punteros y referencias
    • Manejo de ficheros
    • Punteros a funciones
    • Excepciones
    • Casting
    • Templates
    • Templated Containers
      • Iterators
      • std::vector
      • std::list
      • std::map
  • 🧠Pyhton
    • Sintaxis basica
    • Scripts
    • Tipos de datos
      • Listas
      • Set
      • Diccionarios
      • Generadores
    • Estructuras de control
      • Iterar con For
      • Iterar con zip
      • Iterar con enumerate
    • Map, Filter and Reduce
    • Funciones
    • Clases
      • Metodos
      • Herencia
    • Formateo con {} y format()
    • Decoradores
  • 📦JAVA
    • Conceptos basicos
    • Programacion estructurada
    • Clases predefinidas
    • POO
      • Clases
      • Herencia
      • Polimorfismo
      • Abstraccion
      • Encapsulacion
    • ArrayList
    • Excepciones
  • ⚒️HTML
    • HTML Basics
    • Elementos de bloque
      • Titulos y parrafos
      • Header, Main y Footer
      • Section, article y aside
    • Elementos en línea
    • Atributos
    • Enlaces <a>
    • Listas
    • Tablas
    • Formularios
      • Input
      • Select y datalist
      • GET y POST
    • Contenido embebido
      • Imagenes
      • Audio y video
      • Iframe
  • 🎨CSS
    • Introduccion
    • Selectores
    • Como funciona CSS
    • Box Model
    • Desbordamiento y Colapso de margenes
    • Display
    • Position
    • Medidas absolutas y relativas
  • 🟡JavaScript
    • Promesas
    • Async/Await
  • 📲Svelte
    • Componentes
    • Reactividad
    • Directivas
    • Eventos
  • 🖥️Sistemas
    • Particiones
  • 🕸️Redes
    • IP Adress
    • Subnet Mask
  • 🕷️Web Scrapping
    • Scrapy
      • Spiders
        • CrawlerSpider
      • Process data
      • Save data
        • CSV y JSON
        • SQLite
    • Splash
    • Selenium
Powered by GitBook
On this page
  • ¿Qué es la Encapsulación?
  • Beneficios de la Encapsulación:
  • Implementación de Encapsulación en Java:
  • Ejemplo de Uso:
  • Metodos de acceso
  1. JAVA
  2. POO

Encapsulacion

PreviousAbstraccionNextArrayList

Last updated 1 year ago

La encapsulación es uno de los principios fundamentales de la programación orientada a objetos (POO) en Java, que se centra en la ocultación de los detalles internos de un objeto y la exposición controlada de su funcionalidad. Este concepto permite la creación de código modular, mantenible y seguro. A continuación, exploraremos qué es la encapsulación, por qué es importante en Java y cómo implementarla.

¿Qué es la Encapsulación?

La encapsulación implica agrupar los datos (variables) y los métodos (funciones) relacionados dentro de una unidad, es decir, una clase en el contexto de Java. Además, se busca restringir el acceso directo a los detalles internos del objeto desde fuera de la clase, fomentando el principio de "ocultar la implementación, mostrar la interfaz".

Beneficios de la Encapsulación:

  1. Seguridad del Objeto: Evita el acceso no autorizado y modificación de los datos internos de un objeto, mejorando la integridad del objeto.

  2. Flexibilidad de Implementación: Permite realizar cambios en la implementación interna de la clase sin afectar el código que utiliza la clase.

  3. Modularidad y Mantenibilidad: Facilita la organización modular del código al agrupar funciones relacionadas, mejorando la mantenibilidad y la comprensión del código.

Implementación de Encapsulación en Java:

  1. Uso de Modificadores de Acceso: Utiliza modificadores de acceso (private, protected, public) para controlar la visibilidad de las variables y métodos.

public class Persona {
    private String nombre;  // Variable encapsulada
    private int edad;       // Variable encapsulada

    // Métodos de acceso (getters y setters)
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        if (edad >= 0) {
            this.edad = edad;
        }
    }
}
  1. Métodos de Acceso (Getters y Setters): Proporciona métodos de acceso para leer (get) y modificar (set) los valores de las variables privadas.

  2. Validaciones y Lógica Interna: Incorpora lógica interna dentro de los métodos de acceso, como validaciones para asegurar la consistencia de los datos.

Ejemplo de Uso:

public class Main {
    public static void main(String[] args) {
        Persona persona = new Persona();
        persona.setNombre("Juan");
        persona.setEdad(25);

        System.out.println("Nombre: " + persona.getNombre());
        System.out.println("Edad: " + persona.getEdad());
    }
}

En este ejemplo, la clase Persona encapsula las variables nombre y edad y proporciona métodos de acceso (getters y setters). El código fuera de la clase no puede acceder directamente a las variables, mejorando la seguridad y la flexibilidad.

La encapsulación en Java es esencial para construir software robusto y mantenible. Al aplicar este principio, se mejora la seguridad, flexibilidad y organización del código, contribuyendo a un desarrollo de software eficiente y confiable.

Metodos de acceso

En Java, los modificadores de acceso son palabras clave que determinan la visibilidad y accesibilidad de las clases, variables, métodos y constructores en el código. Estos modificadores permiten establecer niveles de encapsulación, es decir, controlar qué partes del código pueden acceder a ciertos elementos y cuáles no. En este post, exploraremos los principales modificadores de acceso en Java y cómo se utilizan para gestionar la visibilidad de los miembros de una clase.

Public, Protected, Default y Private: Un Vistazo Rápido

  1. Public (public):

    • Accesible desde cualquier clase y paquete.

    • No hay restricciones en la visibilidad.

    • Puede ser utilizado libremente en cualquier parte del programa.

  2. Protected (protected):

    • Accesible dentro del mismo paquete y por subclases (incluso si están en paquetes diferentes).

    • Proporciona un nivel intermedio de visibilidad.

    • Permite la herencia y extensión de clases, restringiendo el acceso desde clases no relacionadas.

  3. Default (Sin Modificador):

    • Accesible solo dentro del mismo paquete.

    • No se utiliza una palabra clave específica; es el nivel predeterminado si no se especifica ningún modificador.

    • Conocido como "paquete-privado" o "package-private".

  4. Private (private):

    • Accesible solo dentro de la misma clase.

    • Proporciona el mayor nivel de encapsulación.

    • Oculta la implementación interna de la clase y restringe el acceso a otras clases.

Ejemplos de Uso:

// Ejemplo de clase con diferentes modificadores de acceso
public class Ejemplo {

    public int variablePublica;  // Accesible desde cualquier clase

    protected int variableProtegida;  // Accesible dentro del mismo paquete y por subclases

    int variableDefault;  // Accesible solo dentro del mismo paquete

    private int variablePrivada;  // Accesible solo dentro de la misma clase

    // Métodos con diferentes modificadores de acceso
    public void metodoPublico() {
        // Código del método
    }

    protected void metodoProtegido() {
        // Código del método
    }

    void metodoDefault() {
        // Código del método
    }

    private void metodoPrivado() {
        // Código del método
    }
}

Consideraciones de Diseño:

  1. Principio de Menor Visibilidad:

    • Apunta a utilizar el modificador de acceso más restrictivo posible para limitar la visibilidad y prevenir el acceso no autorizado.

  2. Encapsulación:

    • Utiliza private para variables y métodos que deben ser exclusivamente internos a la clase, fortaleciendo la encapsulación.

  3. Interacción entre Clases:

    • Utiliza public y protected con precaución para exponer solo lo necesario para la interacción con otras clases.

Ventajas de Utilizar Modificadores de Acceso:

  1. Seguridad y Control:

    • Permite controlar quién puede acceder y modificar los miembros de una clase.

  2. Encapsulación:

    • Favorece la encapsulación, protegiendo la implementación interna de una clase.

  3. Mantenibilidad:

    • Mejora la mantenibilidad del código al facilitar futuras modificaciones y actualizaciones.

📦