件導向程式設計(OOP)是一種軟體開發方法,它將現實世界中的事物抽象為程式中的物件。每個物件都包含數據(屬性)和操作這些數據的方法。這種抽象方法有助於簡化複雜的問題,提高代碼的可維護性和可重用性。
物件 = 狀態(名詞) + 行為(動詞),在 Ruby 裡,幾乎什麼東西都是物件,少數如先前章節提到的 block 就不是。
在Ruby中,類別是定義物件的模板或藍圖,它定義了物件的屬性和方法,在Ruby中,定義一個類別會使用關鍵字 class
。
class Pirate
attr_accessor :name, :age
# 初始化方法
def initialize(name, age)
@name = name
@age = age
end
# 方法
def greet
puts "Hello, my name is #{@name} and I'm #{@age} years old."
end
end
這邊要特別注意:類別的命名規定必須是常數
,第一個字必須是大寫。
在 Ruby 中,實體
是一個非常重要的詞彙,它是指一個具體的物件或實例。每個實體都是根據某個類別(Class)的定義而創建的,類別充當了實體的模板,定義了它們的屬性和方法。
要創建一個實體,首先需要定義一個類別。類別是一個抽象的概念,它描述了實體的特徵和行為,以上述例子說明:定義了一個名為Pirate的類別,它有一個initialize方法用於初始化實體的屬性,還有一個greet方法用於顯示問候語。現在,我們可以使用這個類別來建立實體。
class Pirate
def initialize(name, age)
@name = name
@age = age
end
def greet
puts "Hello, my name is #{@name} and I'm #{@age} years old."
end
end
建立實體使用類別的new
方法,並傳遞所需的參數。
luffy = Pirate.new("Luffy", 19)
zoro = Pirate.new("Zoro", 21)
建立了兩個 Pirate 類別的實體, luffy 和 zoro ,每個實體都有自己的屬性值 如 name 和 age
以前生物課學到的界門綱目科屬種就是繼承的概念同時也是分類,繼承就是把共同的特徵放在同一個分類(class)
class Animal
def speak
puts "Some sound"
end
end
class Wolf < Animal
def speak
puts "Woo!"
end
end
定義了兩個類別:Animal 和 Wolf , Wolf 是 Animal 的子類別,因此它繼承了 Animal 的 speak 方法。當我們建立一個 Wolf 的實體 Wolf 時,它可以使用 speak 方法,但會執行自己的版本,印出 "Woo!",同時使用 < 符號將子類別(派生類別)指定為父類別(基類別)的子類別。
Day 11 預計繼續介紹物件導向程式設計(二),我們明天見!