如何在 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 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.