Articulo de referencia

Encapsulación de campo

En programación informática , la encapsulación de campos implica proporcionar métodos que se puedan utilizar para leer o escribir en el campo en lugar de acceder al campo direct...

En programación informática , la encapsulación de campos implica proporcionar métodos que se puedan utilizar para leer o escribir en el campo en lugar de acceder al campo directamente. A veces, estos métodos de acceso se denominan getX y setX (donde X es el nombre del campo), que también se conocen como métodos mutadores. Por lo general, los métodos de acceso tienen visibilidad pública, mientras que el campo que se está encapsulando tiene visibilidad privada ; esto permite que un programador restrinja las acciones que puede realizar otro usuario del código. [1] Compare la siguiente clase Java en la que el campo de nombre no se ha encapsulado:

clase pública NormalFieldClass { pública String nombre ; pública static void main ( String [] args ) { NormalFieldClass ejemplo1 = nueva NormalFieldClass ( ); ejemplo1.nombre = " miNombre " ; System.out.println ( " Mi nombre es " + ejemplo1.nombre ) ; } }   
      
 
        
    
            
          
          
    

con el mismo ejemplo usando encapsulación:

clase pública EncapsulatedFieldClass { cadena privada nombre ; cadena pública getName () { devolver nombre ; } void público setName ( cadena nuevoNombre ) { nombre = nuevoNombre ; } void público estático main ( cadena [] args ) { EncapsulatedFieldClass ejemplo1 = nueva EncapsulatedFieldClass ( ) ; ejemplo1.setName ( " miNombre " ) ; System.out.println ( " Mi nombre es " + ejemplo1.getName ( ) ); } }   
      
 
      
    
         
    
 
       
    
          
    
 
        
    
            
        
          
    

En el primer ejemplo, un usuario es libre de usar la variable de nombre público como crea conveniente; en el segundo, sin embargo, el escritor de la clase conserva el control sobre cómo se lee y escribe la variable de nombre privada , permitiendo el acceso al campo solo a través de sus métodos getName y setName .

Ventajas

  • El formato de almacenamiento interno de los datos está oculto; en el ejemplo, una expectativa de uso de conjuntos de caracteres restringidos podría permitir la compresión de datos mediante la recodificación (por ejemplo, de caracteres de ocho bits a un código de seis bits). Un intento de codificar caracteres fuera del rango de los datos esperados podría entonces manejarse mediante la emisión de un error en la rutina de configuración .
  • En general, los métodos get y set se pueden producir en dos versiones: un método eficiente que supone que el llamador está entregando datos apropiados y que los datos se han almacenado correctamente, y una versión de depuración que, si bien es más lenta, realiza comprobaciones de validez de los datos recibidos y entregados. Esta detección es útil cuando se crean o modifican nuevas rutinas (que llaman o se llaman) o formatos de almacenamiento interno.
  • La ubicación de los datos almacenados dentro de estructuras más grandes puede ocultarse y, de esta manera, permitir que se realicen cambios en este almacenamiento sin necesidad de cambiar el código que hace referencia a los datos. Esto también reduce la probabilidad de que se produzcan efectos secundarios inesperados a partir de dichos cambios. Esto es especialmente ventajoso cuando los métodos de acceso forman parte de un sistema operativo (OS), un caso en el que el código de llamada (aplicación) puede no estar disponible para los desarrolladores del OS.

Desventajas

El acceso a una subrutina implica una sobrecarga adicional que no existe cuando se accede directamente a los datos. Si bien esto se está volviendo menos preocupante con la amplia disponibilidad de procesadores rápidos de propósito general, puede seguir siendo importante en la codificación de algunos sistemas informáticos en tiempo real y sistemas que utilizan procesadores integrados relativamente lentos y simples . En algunos lenguajes, como C++, los métodos getter/setter suelen ser funciones en línea , de modo que cuando se realiza la inserción en línea, el código se ve como un acceso directo a un campo.

Referencias

  1. ^ Liang, Y. Daniel. "9.9 Encapsulación de campos de datos". Revel para Introducción a la programación Java y estructuras de datos .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Encapsulación_de_campos&oldid=1224184193"