淺析Ruby中的類(lèi)對(duì)象的概念
面向?qū)ο蟮某绦蛏婕邦?lèi)和對(duì)象。 一個(gè)類(lèi)是藍(lán)本,從個(gè)別對(duì)象被創(chuàng)建。在面向?qū)ο蟮男g(shù)語(yǔ),我們說(shuō)小明的自行車(chē)是被稱(chēng)為自行車(chē)類(lèi)的對(duì)象實(shí)例。
任何車(chē)輛的例子。它包括輪子,馬力,燃油或燃?xì)夤奕萘?。這些特點(diǎn)形成的類(lèi)車(chē)輛的數(shù)據(jù)成員??梢詮钠渌?chē)輛區(qū)分這些特征。
車(chē)輛也有一定的功能,如停止,駕駛,超速駕駛。即使這些功能形成的類(lèi)車(chē)輛的數(shù)據(jù)成員。因此,可以定義一個(gè)類(lèi)作為一個(gè)組合的特點(diǎn)和功能。
車(chē)輛類(lèi)可以被定義為:
Class Vehicle
{
Number no_of_wheels
Number horsepower
Characters type_of_tank
Number Capacity
Function speeding
{
}
Function driving
{
}
Function halting
{
}
}
通過(guò)這些數(shù)據(jù)成員分配不同的值,可以形成類(lèi)車(chē)輛的幾個(gè)實(shí)例。例如,飛機(jī)的有三個(gè)輪子,1,000馬力,不同的燃料罐及容量為100升。同樣的方式,一輛汽車(chē)有四個(gè)輪子,200馬力,氣體作為不同的罐及容量25升。
Ruby中定義一個(gè)類(lèi):
要通過(guò)使用Ruby實(shí)現(xiàn)面向?qū)ο缶幊?,需要先學(xué)習(xí)如何創(chuàng)建對(duì)象和Ruby中的類(lèi)。
Ruby中一個(gè)類(lèi)總是以關(guān)鍵字class類(lèi)的名稱(chēng)開(kāi)頭。名稱(chēng)應(yīng)始終以首字母大寫(xiě)。如以是Customer類(lèi)可以顯示為:
class Customer end
類(lèi)定義結(jié)束通過(guò)使用關(guān)鍵字end結(jié)束。在類(lèi)的所有數(shù)據(jù)成員是類(lèi)之間的定義,并以end關(guān)鍵字作為結(jié)束符。
Ruby類(lèi)中的變量:
Ruby提供了四種類(lèi)型的變量:
局部變量: 局部變量是在一個(gè)方法中定義的變量。局部變量是不可用的方法外。更多細(xì)節(jié)在隨后的章節(jié)中的方法中會(huì)介紹。局部變量一般以小寫(xiě)字母或_開(kāi)頭。
實(shí)例變量: 實(shí)例變量是可跨越任何特定實(shí)例或?qū)ο蟮姆椒?。這意味著,從對(duì)象到對(duì)象的實(shí)例變量改變。實(shí)例變量前面加上at符號(hào)(@),跟著變量名。
類(lèi)變量:類(lèi)變量是可在各種不同的對(duì)象。 一個(gè)類(lèi)變量屬于類(lèi),是類(lèi)的一個(gè)特點(diǎn)。他們前面的符號(hào)@@跟著的變量名。
全局變量: 類(lèi)變量是不能跨類(lèi)。如果想要一個(gè)單一的變量可以跨類(lèi),需要定義一個(gè)全局變量。全局變量的前面總是用美元符號(hào)($)。
例子:
使用類(lèi)變量@@no_of_customers,能確定創(chuàng)建的對(duì)象的數(shù)量。這使得導(dǎo)出的客戶(hù)數(shù)量。
class Customer @@no_of_customers=0 end
Ruby中使用new方法創(chuàng)建對(duì)象:
對(duì)象是類(lèi)的實(shí)例?,F(xiàn)在,將學(xué)習(xí)如何在Ruby中創(chuàng)建對(duì)象一個(gè)類(lèi)對(duì)象。Ruby中通過(guò)使用new方法創(chuàng)建對(duì)象。
new方法是一種獨(dú)特的方法,這是預(yù)定義在Ruby庫(kù)。new方法屬于類(lèi)的方法。
下面的例子是創(chuàng)建兩個(gè)對(duì)象類(lèi)客戶(hù)cust1 和 cust2:
cust1 = Customer. new cust2 = Customer. new
在這里,cust1和cust2是兩個(gè)對(duì)象的名字。在等于號(hào)(=)之后,類(lèi)名稱(chēng)將按照對(duì)象名稱(chēng)。然后,點(diǎn)運(yùn)算符和關(guān)鍵字new在后面。
自定義方法來(lái)創(chuàng)建Ruby對(duì)象 :
可以通過(guò)new方法的參數(shù),這些參數(shù)可以用來(lái)初始化類(lèi)變量。
當(dāng)打算聲明的new方法具有參數(shù),需要聲明的方法在創(chuàng)建類(lèi)的時(shí)候初始化。
initialize方法是一種特殊類(lèi)型的方法,該方法時(shí)將執(zhí)行new方法的類(lèi)被稱(chēng)為參數(shù)。
下面的例子是創(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
在這個(gè)例子中,可以聲明局部變量的初始化方法id, name和addr。這里def 結(jié)束被用來(lái)定義一個(gè)Ruby的??方法初始化。這些將在有關(guān)后續(xù)章節(jié)中了解更多。
在initialize方法中,對(duì)這些局部變量的值傳遞到實(shí)例變量@cust_id,@cust_name和@cust_addr。這里的局部變量持有的值由new方法一同傳遞。
現(xiàn)在可以創(chuàng)建對(duì)象,如下所示:
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
Ruby中類(lèi)的成員函數(shù):
在Ruby中,函數(shù)被調(diào)用的方法。在一個(gè)類(lèi)中的每個(gè)方法的方法名用關(guān)鍵字def開(kāi)始。
方法名總是以小寫(xiě)字母最好。你最終的方法Ruby中通過(guò)使用關(guān)鍵字end表示結(jié)束。
下面的例子是定義一個(gè)Ruby的方法:
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
這里statement1和statement2為函數(shù)體的一部分。這些statments可以是任何有效的Ruby語(yǔ)句。例如,我們可以在方法中打印Hello Ruby如下:
class Sample def hello puts "Hello Ruby!" end end
現(xiàn)在,在下面的例子Sample類(lèi)創(chuàng)建一個(gè)對(duì)象,并調(diào)用hello方法,看到的結(jié)果:
#!/usr/bin/ruby class Sample def hello puts "Hello Ruby!" end end # Now using above class to create objects object = Sample. new object.hello
這將產(chǎn)生以下結(jié)果:
Hello Ruby!
相關(guān)文章
舉例理解Ruby on Rails的頁(yè)面緩存機(jī)制
這篇文章主要介紹了舉例理解Ruby on Rails的頁(yè)面緩存機(jī)制,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04
Windows下Ruby+Watir自動(dòng)化測(cè)試的環(huán)境搭建及數(shù)據(jù)讀取
這篇文章主要介紹了Windows下Ruby+Watir自動(dòng)化測(cè)試的環(huán)境搭建及數(shù)據(jù)讀取,Watir是一個(gè)使用Ruby實(shí)現(xiàn)的開(kāi)源Web自動(dòng)化測(cè)試框架,需要的朋友可以參考下2016-03-03
win7安裝ruby on rails開(kāi)發(fā)環(huán)境
看到很多文章都說(shuō)ruby環(huán)境在windows上是非常難搭建,會(huì)出現(xiàn)各種各樣的怪問(wèn)題,所以都推薦到linux和mac上安裝開(kāi)發(fā)。但是我按照教程搭了下,問(wèn)題也不算太多??傔^(guò)大概花費(fèi)了2個(gè)半小時(shí)左右就完成了。下面就把安裝的步驟及具體的版本記錄了一下供大家參考。2014-07-07

