Ruby 是一種完美的面向?qū)ο缶幊陶Z言。面向?qū)ο缶幊陶Z言的特性包括:
這些特性將在 面向?qū)ο蟮?Ruby 中進(jìn)行討論。
一個面向?qū)ο蟮某绦颍婕暗降念惡蛯ο?。類是個別對象創(chuàng)建的藍(lán)圖。在面向?qū)ο蟮男g(shù)語中,您的自行車是自行車類的一個實例。
以車輛為例,它包括車輪(wheels)、馬力(horsepower)、燃油或燃?xì)夤奕萘浚╢uel or gas tank capacity)。這些屬性形成了車輛(Vehicle)類的數(shù)據(jù)成員。借助這些屬性您能把一個車輛從其他車輛中區(qū)分出來。
車輛也能包含特定的函數(shù),比如暫停(halting)、駕駛(driving)、超速(speeding)。這些函數(shù)形成了車輛(Vehicle)類的數(shù)據(jù)成員。因此,您可以定義類為屬性和函數(shù)的組合。
類 Vehicle 的定義如下:
Class Vehicle { Number no_of_wheels Number horsepower Characters type_of_tank Number Capacity Function speeding { } Function driving { } Function halting { } }
通過給這些數(shù)據(jù)成員分配不同的值,您可以創(chuàng)建類 Vehicle 的不同實例。例如,一架飛機有三個輪子,馬力 1,000,燃油罐容量為 100 升。以同樣的方式,一輛汽車有四個輪子,馬力 200,煤氣罐容量為 25 升。
為了使用 Ruby 實現(xiàn)面向?qū)ο缶幊?,您需要先學(xué)習(xí)如何在 Ruby 中創(chuàng)建對象和類。
在 Ruby 中,類總是以關(guān)鍵字 class 開始,后跟類的名稱。類名的首字母應(yīng)該大寫。類 Customer 如下所示:
class Customer end
您可以使用關(guān)鍵字 end 終止一個類。類 中的所有數(shù)據(jù)成員都是介于類定義和 end 關(guān)鍵字之間。
Ruby 提供了四種類型的變量:
使用類變量 @@no_of_customers,您可以判斷被創(chuàng)建的對象數(shù)量,這樣可以確定客戶數(shù)量。
class Customer @@no_of_customers=0 end
對象是類的實例?,F(xiàn)在您將學(xué)習(xí)如何在 Ruby 中創(chuàng)建類的對象。在 Ruby 中,您可以使用類的方法 new 創(chuàng)建對象。
方法 new 是一種獨特的方法,在 Ruby 庫中預(yù)定義。new 方法屬于類方法。
下面的實例創(chuàng)建了類 Customer 的兩個對象 cust1 和 cust2:
cust1 = Customer. new cust2 = Customer. new
在這里,cust1 和 cust2 是兩個對象的名稱。對象名稱后跟著等號(=),等號后跟著類名,然后是點運算符和關(guān)鍵字 new。
您可以給方法 new 傳遞參數(shù),這些參數(shù)可用于初始化類變量。
當(dāng)您想要聲明帶參數(shù)的 new 方法時,您需要在創(chuàng)建類的同時聲明方法 initialize。
initialize 方法是一種特殊類型的方法,將在調(diào)用帶參數(shù)的類的 new 方法時執(zhí)行。
下面的實例創(chuàng)建了 initialize 方法:
class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end end
在本實例中,您可以聲明帶有 id、name、addr 作為局部變量的 initialize方法。在這里,def 和 end 用于定義 Ruby 方法 initialize。在后續(xù)的章節(jié)中,您將學(xué)習(xí)有關(guān)方法的更多細(xì)節(jié)。
在 initialize 方法中,把這些局部變量的值傳給實例變量 @cust_id、@cust_name 和 @cust_addr。在這里,局部變量的值是隨著 new 方法進(jìn)行傳遞的。
現(xiàn)在,您可以創(chuàng)建對象,如下所示:
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
在 Ruby 中,函數(shù)被稱為方法。類中的每個方法是以關(guān)鍵字 def 開始,后跟方法名。
方法名總是以小寫字母開頭。在 Ruby 中,您可以使用關(guān)鍵字 end 來結(jié)束一個方法。
下面的實例定義了一個 Ruby 方法:
class Sample def function statement 1 statement 2 end end
在這里,statement 1 和 statement 2 是類 Sample 內(nèi)的方法 function 的主體的組成部分。這些語句可以是任何有效的 Ruby 語句。例如,我們可以使用方法 puts 來輸出 Hello Ruby,如下所示:
class Sample def hello puts "Hello Ruby!" end end
下面的實例將創(chuàng)建類 Sample 的一個對象,并調(diào)用 hello 方法:
#!/usr/bin/ruby class Sample def hello puts "Hello Ruby!" end end # 使用上面的類來創(chuàng)建對象 object = Sample. new object.hello
這將會產(chǎn)生下面的結(jié)果:
Hello Ruby!
如果您想要做更多有關(guān)類和對象的練習(xí),這里有一個案例研究:
更多建議: