Ruby - 類和物件



Ruby 是一種完美的面向物件程式語言。面向物件程式語言的特性包括:

  • 資料封裝
  • 資料抽象
  • 多型性
  • 繼承

這些特性在章節 面向物件 Ruby 中進行了討論。

面向物件程式涉及類和物件。類是建立單個物件的藍圖。用面向物件的術語來說,我們可以說你的腳踏車是稱為腳踏車的物件類的一個例項。

以任何車輛為例。它包括車輪、馬力以及燃油或油箱容量。這些特性構成了 Vehicle 類的成員資料。您可以藉助這些特性來區分一輛車輛與另一輛車輛。

車輛還可以具有一些功能,例如停止、駕駛和加速。即使這些功能也構成了 Vehicle 類的成員資料。因此,您可以將類定義為特徵和功能的組合。

可以將 Vehicle 類定義為:

Class Vehicle {

   Number no_of_wheels
   Number horsepower
   Characters type_of_tank
   Number Capacity
   Function speeding {
   }
   
   Function driving {
   }
   
   Function halting {
   }
}

透過為這些資料成員分配不同的值,您可以形成 Vehicle 類的多個例項。例如,飛機有三個車輪,馬力為 1000,燃油為油箱型別,容量為 100 升。同樣,汽車有四個車輪,馬力為 200,汽油為油箱型別,容量為 25 升。

在 Ruby 中定義類

要使用 Ruby 實現面向物件程式設計,您首先需要學習如何在 Ruby 中建立物件和類。

Ruby 中的類始終以關鍵字class開頭,後跟類名。名稱應始終以大寫字母開頭。Customer 類可以顯示為:

class Customer
end

您可以使用關鍵字end終止類。class中的所有資料成員都在類定義和end關鍵字之間。

Ruby 類中的變數

Ruby 提供四種類型的變數:

  • 區域性變數 - 區域性變數是在方法中定義的變數。區域性變數在方法外部不可用。您將在後續章節中看到有關方法的更多詳細資訊。區域性變數以小寫字母或 _ 開頭。

  • 例項變數 - 例項變數在任何特定例項或物件的各種方法中都可用。這意味著例項變數因物件而異。例項變數以 at 符號 (@) 開頭,後跟變數名。

  • 類變數 - 類變數在不同的物件之間可用。類變數屬於類,是類的特徵。它們以 @@ 符號開頭,後跟變數名。

  • 全域性變數 - 類變數在類之間不可用。如果要有一個在類之間可用的單個變數,則需要定義一個全域性變數。全域性變數始終以美元符號 ($) 開頭。

示例

使用類變數 @@no_of_customers,您可以確定正在建立的物件的數量。這有助於確定客戶的數量。

class Customer
   @@no_of_customers = 0
end

使用 new 方法在 Ruby 中建立物件

物件是類的例項。您現在將學習如何在 Ruby 中建立類的物件。您可以使用類的new方法在 Ruby 中建立物件。

new方法是一種在 Ruby 庫中預定義的唯一方法型別。new 方法屬於方法。

以下是如何建立 Customer 類的兩個物件 cust1 和 cust2 的示例:

cust1 = Customer. new
cust2 = Customer. new

這裡,cust1 和 cust2 是兩個物件的名稱。您在物件名稱後寫上等於號 (=),然後是類名。然後,點運算子和關鍵字new將緊隨其後。

自定義方法來建立 Ruby 物件

您可以將引數傳遞給new方法,這些引數可用於初始化類變數。

當您計劃用引數宣告new方法時,您需要在建立類時宣告initialize方法。

initialize方法是一種特殊型別的特殊方法,當用引數呼叫類的new方法時,它將被執行。

以下是如何建立 initialize 方法的示例:

class Customer
   @@no_of_customers = 0
   def initialize(id, name, addr)
      @cust_id = id
      @cust_name = name
      @cust_addr = addr
   end
end

在此示例中,您聲明瞭initialize方法,並使用id、nameaddr作為區域性變數。這裡,defend用於定義 Ruby 方法initialize。您將在後續章節中學習有關方法的更多資訊。

initialize方法中,您將這些區域性變數的值傳遞給例項變數 @cust_id、@cust_name 和 @cust_addr。這裡區域性變數儲存與 new 方法一起傳遞的值。

現在,您可以如下建立物件:

cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")

Ruby 類中的成員函式

在 Ruby 中,函式稱為方法。class中的每個方法都以關鍵字def開頭,後跟方法名。

方法名始終以小寫字母為佳。您可以在 Ruby 中使用關鍵字end結束方法。

以下是如何定義 Ruby 方法的示例:

class Sample
   def function
      statement 1
      statement 2
   end
end

這裡,statement 1statement 2是 Sample 類中function方法主體的一部分。這些語句可以是任何有效的 Ruby 語句。例如,我們可以使用puts方法列印Hello Ruby,如下所示:

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

現在在以下示例中,建立一個 Sample 類的物件並呼叫hello方法,檢視結果:

#!/usr/bin/ruby

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

# Now using above class to create objects
object = Sample. new
object.hello

這將產生以下結果:

Hello Ruby!

簡單案例研究

如果您想更多地練習類和物件,這裡有一個案例研究。

Ruby 類案例研究

廣告

© . All rights reserved.