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