📜  红宝石 |封装

📅  最后修改于: 2022-05-13 01:55:39.316000             🧑  作者: Mango

红宝石 |封装

封装被定义为将数据包装在一个单元中。它是将代码和它操作的数据绑定在一起的机制。换句话说,封装是一种保护屏障,可以防止数据被该屏障之外的代码访问。

  • 从技术上讲,在封装中,一个类的变量或数据对任何其他类都是隐藏的,只能通过声明它们的类的任何成员函数来访问。
  • 封装可以通过将类中的所有变量声明为私有并在类中编写公共方法来设置和获取变量的值来实现。

例子:

# Ruby program to illustrate encapsulation
#!/usr/bin/ruby 
    
class Demoencapsulation 
        
def initialize(id, name, addr) 
         
 # Instance Variables      
 @cust_id = id 
 @cust_name = name 
 @cust_addr = addr 
 end
     
 # displaying result 
 def display_details() 
 puts "Customer id: #@cust_id"
 puts "Customer name: #@cust_name"
 puts "Customer address: #@cust_addr"
 end
end
    
# Create Objects 
cust1 = Demoencapsulation .new("1", "Mike", 
              "Wisdom Apartments, Ludhiya") 
  
cust2 = Demoencapsulation .new("2", "Jackey", 
                "New Empire road, Khandala") 
    
# Call Methods 
cust1.display_details() 
cust2.display_details() 

输出:

Customer id: 1
Customer name: Mike
Customer address: Wisdom Apartments, Ludhiya
Customer id: 2
Customer name: Jackey
Customer address: New Empire road, Khandala

说明:上述程序中,类Demoencapsulation封装了类的方法。您只能在Demoencapsulation类的对象(即cust1cust2 )的帮助下访问这些方法。

封装的优点:

  • 数据隐藏:用户不知道类的内部实现。用户看不到类如何在变量中存储值。他只知道我们正在将值传递给 setter 方法,并且变量正在使用该值进行初始化。
  • 可重用性:封装还提高了可重用性,并且易于随着新的需求而改变。
  • 测试代码很容易:封装的代码很容易测试单元测试。