Perl OOPs中的封装

Perl OOPs中的封装

Perl中的 封装 是将数据封装起来的过程,以保护它不被外部来源接触到代码的那一部分。封装是面向对象编程的一部分,它被用来绑定数据和用来操作这些数据的子程序。
从另一个角度来说,封装是一个保护罩,防止数据被这个保护罩外的代码访问。

  • 从技术上讲,在封装中,一个类的变量或数据被隐藏起来,不受任何其他类的影响,只能通过它们所声明的自己类的任何成员函数来访问。
  • 正如在封装中,一个类中的数据被隐藏起来,不被其他类发现,所以它也被称为 数据隐藏。
  • 封装可以通过以下方式实现: 将类中的所有变量声明为局部变量,并通过导入包获取类的方法来设置和获取变量的值。

Perl  OOPs中的封装

考虑一个现实生活中的封装例子,在一个公司中,有不同的部门,如账务部门、财务部门、销售部门等。财务部门处理所有的财务交易,并保存所有与财务有关的数据记录。同样地,销售部门处理所有与销售有关的活动,并保存所有销售记录。现在可能会出现这样的情况:由于某种原因,财务部门的官员需要某月的所有销售数据。在这种情况下,他不被允许直接访问销售部门的数据。他首先要联系销售部门的其他官员,然后要求他提供特定的数据。这就是封装的作用。在这里,销售部门的数据和可以操作这些数据的员工被包裹在一个名称 “销售部门 “之下。

例子

# 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; 
        
    myself = { 
                '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 
{ 
    myself = shift; 
       
    print "Name is: self->{'name'}\n"; 
    print "Age is:self->{'age'}\n"; 
    print "Roll_no is: self->{'roll_no'}"; 
} 
     
# Object creation and calling
myobj1 = Student->new("Rahul", 25, 12);
$obj1->get_details();

输出。

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

在上面的代码中,如果需要访问该类的数据进行任何修改或只是打印该类的数据,那么就不能直接进行。需要创建一个该类的对象,然后使用get_details()方法访问数据。这个过程被称为 “数据封装”

封装的优点

  • 数据隐藏: 用户对类的内部实现一无所知。用户不会看到类是如何在变量中存储数值的。他只知道我们把值传递给访问器,变量被初始化为该值。
  • 增加灵活性: 我们可以根据我们的要求将类的变量设置为只读或只写。如果我们想让变量成为只读,那么我们必须在代码中只使用Get Accessor。如果我们想让变量成为只写的,那么我们只能使用Set Accessor。
  • 可重用性: 封装也提高了可重用性,并易于根据新的要求进行修改。
  • 测试代码很容易: 封装的代码很容易进行单元测试。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程