perl | Encapsulación en OOP

La encapsulación en Perl es el proceso de empaquetar datos para protegerlos de fuentes externas que no necesitan tener acceso a esa parte del código. La encapsulación es una parte de la programación orientada a objetos , se usa para vincular los datos y las subrutinas que se usan para manipular esos datos.
De otra manera, el encapsulamiento es un escudo protector que evita que el código acceda a los datos fuera de este escudo.

  • Técnicamente, en la encapsulación, las variables o datos de una clase se ocultan de cualquier otra clase y solo se puede acceder a ellos a través de cualquier función miembro de la propia clase en la que se declaran.
  • Al igual que en la encapsulación, los datos de una clase se ocultan de otras clases, por lo que también se conoce como ocultación de datos .
  • La encapsulación se puede lograr al: Declarar todas las variables en la clase como métodos locales y obtener de la clase mediante la importación de paquetes para establecer y obtener los valores de las variables.

Considere un ejemplo de encapsulación de la vida real, en una empresa, hay diferentes secciones como la sección de cuentas, la sección de finanzas, la sección de ventas, etc. La sección de finanzas maneja todas las transacciones financieras y mantiene registros de todos los datos relacionados con las finanzas. De manera similar, la sección de ventas maneja todas las actividades relacionadas con las ventas y mantiene registros de todas las ventas. Ahora puede surgir una situación en la que, por alguna razón, un funcionario de la sección de finanzas necesite todos los datos sobre las ventas en un mes en particular. En este caso, no se le permite acceder directamente a los datos de la sección de ventas. Primero tendrá que ponerse en contacto con algún otro oficial en la sección de ventas y luego solicitarle que proporcione los datos particulares. Esto es lo que es la encapsulación.

Ejemplo:

# Declaration and definition of Base class 
use strict; 
use warnings; 
   
package Student;
sub new 
{ 
    
    # shift will take package name 'Student'  
    # and assign it to variable 'class' 
    my $class = shift; 
        
    my $self = { 
                'name'=> shift, 
                'age'=> shift,
                'roll_no' => shift
               }; 
        
    # Bless function to bind object to class 
    bless $self, $class; 
        
    # returning object from constructor 
    return $self; 
} 
    
# Method for displaying the details
sub get_details 
{ 
    my $self = shift; 
       
    print "Name is: $self->{'name'}\n"; 
    print "Age is: $self->{'age'}\n"; 
    print "Roll_no is: $self->{'roll_no'}"; 
} 
     
# Object creation and calling
my $obj1 = Student->new("Rahul", 25, 12);
$obj1->get_details();
Producción:

Name is: Rahul
Age is: 25
Roll_no is: 12

En el código anterior, si es necesario acceder a los datos de la clase para cualquier modificación o simplemente para imprimir los datos de la clase, entonces no se puede hacer directamente. Es necesario crear un objeto de esa clase y luego acceder a los datos usando el método get_details(). Este proceso se denomina encapsulación de datos .

Ventajas de la encapsulación:

  • Ocultación de datos: el usuario no tendrá idea de la implementación interna de la clase. No será visible para el usuario cómo se almacenan los valores de la clase en las variables. Solo sabe que estamos pasando los valores a los accesores y que las variables se inicializan con ese valor.
  • Mayor flexibilidad: podemos hacer que las variables de la clase sean de solo lectura o de solo escritura, según nuestros requisitos. Si deseamos que las variables sean de solo lectura, solo debemos usar Get Accessor en el código. Si deseamos que las variables sean de solo escritura, solo debemos usar Set Accessor.
  • Reutilización: la encapsulación también mejora la reutilización y es fácil de cambiar con nuevos requisitos.
  • Probar el código es fácil: el código encapsulado es fácil de probar para las pruebas unitarias.

Publicación traducida automáticamente

Artículo escrito por Code_Mech y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *