Ruby類和對象
Ruby是一個完美的麵向對象編程語言。擁有麵向對象的編程語言的功能,包括:
-
1、數據封裝
-
2、數據抽象
-
3、多態性
-
4、繼承
這些功能已在討論麵向對象Ruby
麵向對象的程序涉及類和對象。 一個類是藍本,從個彆對象被創建。在麵向對象的術語,我們說小明的自行車是被稱為自行車類的對象實例。
任何車輛的例子。它包括輪子,馬力,燃油或燃氣罐容量。這些特點形成的類車輛的數據成員。可以從其他車輛區分這些特征。
車輛也有一定的功能,如停止,駕駛,超速駕駛。即使這些功能形成的類車輛的數據成員。因此,可以定義一個類作為一個組合的特點和功能。
車輛類可以被定義為:
Class Vehicle { Number no_of_wheels Number horsepower Characters type_of_tank Number Capacity Function speeding { } Function driving { } Function halting { } }
通過這些數據成員分配不同的值,可以形成類車輛的幾個實例。例如,飛機的有三個輪子,1,000馬力,不同的燃料罐及容量為100升。同樣的方式,一輛汽車有四個輪子,200馬力,氣體作為不同的罐及容量25升。
Ruby中定義一個類:
要通過使用Ruby實現麵向對象編程,需要先學習如何創建對象和Ruby中的類。
Ruby中一個類總是以關鍵字class類的名稱開頭。名稱應始終以首字母大寫。如以是Customer類可以顯示為:
class Customer end
類定義結束通過使用關鍵字end結束。在類的所有數據成員是類之間的定義,並以end關鍵字作為結束符。
Ruby類中的變量:
Ruby提供了四種類型的變量:
-
局部變量: 局部變量是在一個方法中定義的變量。局部變量是不可用的方法外。更多細節在隨後的章節中的方法中會介紹。局部變量一般以小寫字母或_開頭。
-
實例變量: 實例變量是可跨越任何特定實例或對象的方法。這意味著,從對象到對象的實例變量改變。實例變量前麵加上at符號(@),跟著變量名。
-
類變量:類變量是可在各種不同的對象。 一個類變量屬於類,是類的一個特點。他們前麵的符號@@跟著的變量名。
-
全局變量: 類變量是不能跨類。如果想要一個單一的變量可以跨類,需要定義一個全局變量。全局變量的前麵總是用美元符號($)。
例子:
使用類變量@@no_of_customers,能確定創建的對象的數量。這使得導出的客戶數量。
class Customer @@no_of_customers=0 end
Ruby中使用new方法創建對象:
下麵的例子是創建兩個對象類客戶cust1 和 cust2:
cust1 = Customer. new cust2 = Customer. new
在這裡,cust1和cust2是兩個對象的名字。在等於號(=)之後,類名稱將按照對象名稱。然後,點運算符和關鍵字new在後麵。
自定義方法來創建Ruby對象 :
可以通過new方法的參數,這些參數可以用來初始化類變量。
當打算聲明的new方法具有參數,需要聲明的方法在創建類的時候初始化。
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
在這個例子中,可以聲明局部變量的初始化方法id, name和addr。這裡def 結束被用來定義一個Ruby的方法初始化。這些將在有關後續章節中了解更多。
在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中,函數被調用的方法。在一個類中的每個方法的方法名用關鍵字def開始。
方法名總是以小寫字母最好。你最終的方法Ruby中通過使用關鍵字end表示結束。
下麵的例子是定義一個Ruby的方法:
class Sample def function statement 1 statement 2 end end
這裡statement1和statement2為函數體的一部分。這些statments可以是任何有效的Ruby語句。例如,我們可以在方法中打印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!
簡單的例子學習:
這裡是一個案例研究,如果想要做更多的實踐與類對象,不防看看下麵的一篇文章: