在之前的章節中有提過 Ruby 是一個以物件導向為設計的程式語言,而在學其他程式語言時,多少都會碰到物件導向這個名詞吧!
今天就來補一下這個物件導向的坑吧!
我們先來看一下維基百科怎麼說吧!
物件導向程式設計(英語:Object-oriented programming,縮寫:OOP)是種具有物件概念的程式設計典範,同時也是一種程式開發的抽象方針。它可能包含資料、特性、程式碼與方法。物件則指的是類別(class)的實例。它將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充性,物件裡的程式可以存取及經常修改物件相關連的資料。在物件導向程式程式設計裡,電腦程式會被設計成彼此相關的物件。
霹哩啪拉講了一堆,但是還是看不懂對吧!
簡單來說,它主要包含三大概念:
封裝的目的是為了讓使用者不需知道物件內部是如何運作,就能透過操作介
面,完成使用的目的,如電視遙控器。
在 Ruby 可以這樣對變數及方法進行封裝:
讓一個類別(子類別subclass)繼承另一個類別(父類別superclass)的方法和屬性。
白話文就是你要的我也要!
舉例來說,鴨子會游泳,那小鴨也繼承了鴨子會游泳的能力。
在 Ruby 中可以用 <
這個符號來繼承:
class Duck
def swim
# ......
end
end
class Duckling < Duck
end
這樣小鴨就繼承了鴨子的會游泳的能力了。
指由繼承而產生的相關的不同的類別,其物件對同一訊息會做出不同的響應。
像是狗和雞都有「叫」這一方法,但是呼叫狗的「叫」,狗會吠叫;呼叫雞的「叫」,雞則會啼叫。
class Animal
def initialize(name)
@name = name
end
def action
puts "我們是動物,都會叫"
end
end
class Dog < Animal
def action
puts "我是#{@name},我會吠"
end
end
class Chicken < Animal
def action
puts "我是#{@name},我會啼"
end
end
dog = Dog.new("狗")
dog.action
chicken = Chicken.new("雞")
chicken.action
參考資料: