如何在 Ruby 中实现数据抽象?


抽象是面向对象编程的概念,其中显示事物的基本属性,并隐藏所有不必要的属性。通过这种方法,可以隐藏实现细节,并仅提供重要的接口。

抽象的一个很好的例子是你的汽车。它是一个很好的抽象例子。当你转动钥匙或按下启动按钮启动汽车时,你不需要知道引擎是如何工作的或它是如何启动的,以及汽车中有哪些部件或其他什么东西。这些与驾驶员无关的细节对用户来说是隐藏的,因为没有必要增加复杂性,因此数据抽象在 Ruby 中的工作方式就是这样。

现在,我们已经讨论了抽象在一般编程术语中的含义。现在,让我们谈谈 Ruby 中的抽象

Ruby 中的抽象发生在三个级别(或方式)。我们将在下面讨论这三种方式。

模块中的数据抽象

我们知道,在 Ruby 中,模块包含不同的方法,我们可以使用这些方法。考虑sqrt()方法的情况,我们可以调用它并在其中传递数字。我们不必担心sqrt()方法是如何实际计算平方根的。

类中的数据抽象

可以使用不同的访问修饰符来控制信息并在 Ruby 中执行数据抽象。

使用访问控制进行数据抽象

在 Ruby 中,我们可以使用private、publicprotected等访问修饰符来实现数据抽象。

当我们在类中将成员声明为 public 时,该成员可以在程序的任何地方访问。如果我们将其声明为 private,则该成员只能在类内部访问。

让我们考虑一个简单的示例,我们将声明一个类并使用两个方法定义它们,其中第一个方法为public,第二个方法本质上为private

示例 1

请考虑以下所示的代码

class Coders

   # defining the public Method
   public
   def publicMethod
      puts "In Public Method!"
   end

   # defining the private Method
   private
   def privateMethod
      puts "In Private Method!"
   end

end

# creating an object of class Coders
object1 = Coders.new

# calling the public method of class Coders
object1.publicMethod

输出

当我们执行此代码时,它将产生以下输出:

In Public Method!

示例 2

在此示例中,我们将尝试从另一个类调用声明为private的方法,并查看会发生什么。

class Coders
   # defining the public Method
   public
   def publicMethod
      puts "In Public Method!"
   end

   # defining privateMethod
   private
   def privateMethod
      puts "In Private Method!"
   end
end

class Sample
   private
   def privateMethod
      puts "Trying..."
   end
end

# creating an object of class Coders
obj1 = Coders.new
obj2 = Sample.new
obj1.publicMethod
obj2.privateMethod

输出

如果我们在任何 Ruby IDE 上编写以下代码,那么我们将在终端中获得以下输出。

In Public Method!
Traceback (most recent call last):
main.rb:34:in `<main>': private method `privateMethod' called for #<Sample:0x00005573b8da04e0> (NoMethodError)

更新于: 2022年4月12日

989 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告