iT邦幫忙

2023 iThome 鐵人賽

DAY 10
1
Software Development

Zero to Ruby on Rails系列 第 10

Day 10 - Object-Oriented Programming - part 1 物件導向程式設計(一)

  • 分享至 

  • xImage
  •  

件導向程式設計(OOP)是一種軟體開發方法,它將現實世界中的事物抽象為程式中的物件。每個物件都包含數據(屬性)和操作這些數據的方法。這種抽象方法有助於簡化複雜的問題,提高代碼的可維護性和可重用性。

什麼是物件 object?

物件 = 狀態(名詞) + 行為(動詞),在 Ruby 裡,幾乎什麼東西都是物件,少數如先前章節提到的 block 就不是。

什麼是類別 class?

在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

這邊要特別注意:類別的命名規定必須是常數,第一個字必須是大寫。

什麼是實體 instance?

在 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

什麼是繼承 inheritance?

以前生物課學到的界門綱目科屬種就是繼承的概念同時也是分類,繼承就是把共同的特徵放在同一個分類(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 預計繼續介紹物件導向程式設計(二),我們明天見!


上一篇
Day 09 - Block 程式碼區塊
下一篇
Day 11 - Object-Oriented Programming - part 2 物件導向程式設計(二)
系列文
Zero to Ruby on Rails30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Weber
iT邦新手 4 級 ‧ 2023-09-25 23:36:02

大阪見~

我要留言

立即登入留言