如何在 Ruby 中實現資料抽象?
抽象是面向物件程式設計的概念,其中顯示事物的基本屬性,並隱藏所有不必要的屬性。透過這種方法,可以隱藏實現細節,並僅提供重要的介面。
抽象的一個很好的例子是你的汽車。它是一個很好的抽象例子。當你轉動鑰匙或按下啟動按鈕啟動汽車時,你不需要知道引擎是如何工作的或它是如何啟動的,以及汽車中有哪些部件或其他什麼東西。這些與駕駛員無關的細節對使用者來說是隱藏的,因為沒有必要增加複雜性,因此資料抽象在 Ruby 中的工作方式就是這樣。
現在,我們已經討論了抽象在一般程式設計術語中的含義。現在,讓我們談談 Ruby 中的抽象。
Ruby 中的抽象發生在三個級別(或方式)。我們將在下面討論這三種方式。
模組中的資料抽象
我們知道,在 Ruby 中,模組包含不同的方法,我們可以使用這些方法。考慮sqrt()方法的情況,我們可以呼叫它並在其中傳遞數字。我們不必擔心sqrt()方法是如何實際計算平方根的。
類中的資料抽象
可以使用不同的訪問修飾符來控制資訊並在 Ruby 中執行資料抽象。
使用訪問控制進行資料抽象
在 Ruby 中,我們可以使用private、public和protected等訪問修飾符來實現資料抽象。
當我們在類中將成員宣告為 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)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP