位置:首頁 > 腳本語言 > Ruby教學 > Ruby類案例學習

Ruby類案例學習

為了方便實例學習研究,我們將創建一個Ruby類稱為Customer ,將聲明兩種方法:

  • display_details: 方法將顯示客戶的詳細信息。

  • total_no_of_customers: 方法將顯示在係統中創建的客戶的總數。


#!/usr/bin/ruby

class Customer
   @@no_of_customers=0
   def initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@cust_addr"
    end
    def total_no_of_customers()
       @@no_of_customers += 1
       puts "Total number of customers: #@@no_of_customers"
    end
end

display_details方法包含三個把報表顯示客戶ID,客戶名稱,客戶地址。puts語句: 

puts "Customer id #@cust_id"

將顯示客戶ID的變量@cust_id的值的在單獨一行文本中。

想在單獨一行中中顯示的文字和實例變量的值,需要在變量名之前puts語句的hash符號(#)。應括在雙引號中的文字和實例變量隨著哈希符號(#)。

第二種方法中,total_no_of_customers,該方法包含類變量@@no_of_customers。表達@@no_of_customers+=1,每次被調用的方法total_no_of_customers。通過這種方式,將永遠持有客戶總數的類變量。

現在,創建兩個客戶如下:

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

在這裡,我們創建了兩個對象Customer類為cust1 cust2,並通過new方法傳遞必要的參數。 initialize方法被調用時,對象的屬性初始化。

一旦對象被創建,需要調用類的方法,通過使用兩個對象。如果想調用方法或任何數據成員,看看如下寫法:

cust1.display_details()
cust1.total_no_of_customers()

對象名稱,應始終遵循一個點,依次其次是方法的名字或任何數據成員。我們已經看到,如何調用兩種方法使用cust1對象。要使用cust2對象,可以調用這兩個方法,如下所示:

cust2.display_details()
cust2.total_no_of_customers()

保存並執行代碼:

main.rb文件,現在把這段源代碼如下:

#!/usr/bin/ruby

class Customer
   @@no_of_customers=0
   def initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@cust_addr"
   end
   def total_no_of_customers()
      @@no_of_customers += 1
      puts "Total number of customers: #@@no_of_customers"
   end
end

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

# Call Methods
cust1.display_details()
cust1.total_no_of_customers()
cust2.display_details()
cust2.total_no_of_customers()

現在運行這個程序如下:

$ ruby main.rb

這將產生以下結果:

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Total number of customers: 1
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala
Total number of customers: 2