iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
自我挑戰組

入坑 RoR 必讀 - Ruby 物件導向設計實踐系列 第 29

Day29 Ruby物件導向實踐-Ruby Object Model

  • 分享至 

  • xImage
  •  

Ruby Object Model 是 Ruby 程式語言中用來描述物件、類別和模組之間關係的模型。 Ruby 的物件模型是其核心概念之一,它有助於理解 Ruby 中物件的創建、繼承、方法查找等關鍵概念。

Ruby Object Model 運作

我們已知在 ruby 裡萬物皆物件(object),物件是類別( class)的實體化,但object上方怎麼還有KernalBasicObject?現在就讓我們一層一層來拆解它吧!

假設今天有個簡易的物件繼承鏈:建立一個puppy 實體,屬於Dog 類別,繼承Animal類別,外掛 Climbable模組

https://ithelp.ithome.com.tw/upload/images/20230929/201454099xpfi9rk27.png

Object(物件)

Object 類別是 Ruby 中所有類別的根類,也就是說,每個類別都是 Object 類別的子類別。因此,Object 類別自己定義了許多在 Ruby 中常見的方法,如to_sinspecteql? 等。

所有物件都會繼承這些方法,因為它們都是 Object 的實例。當我們建立一個自訂的類別時,它會自動成為 Object 的子類別。

Kernel(內核模組)

Kernel 是一個模組,它包含了一些常用的方法,這些方法可以直接被所有物件調用,因為所有物件都包含了 Kernel 模組。

這些方法包括我們常常用到的 putsprintgetsraise 等等。實際上,Ruby 中的許多核心方法都是 Kernel 模組的一部分。

BasicObject(基本物件)

BasicObject 類別位於 Ruby 類別層次結構的最底層,它是所有其他類別的祖先。 BasicObject 定義了非常有限的方法,只包含最基本的方法,如 __send____id__。這使得 BasicObject 可以用作創建非常簡單的、沒有任何額外功能的物件的基礎。通常,BasicObject 不會直接使用,而是用來建立一些高度客製化的基本物件。

Class(類別)

Class 是 Ruby 中用來建立物件類別的關鍵元素。每個類別本身也是一個Object,是 Class 類別的實例。
Ruby 中的大多數物件都是某個類別的實例,這些類別都是 Class 的子類別(包括 Class 本身)。透過定義類別,你可以建立新的物件類型,定義該類型的屬性和方法。類別可以繼承其他類,從而取得其屬性和方法,並可以被其他類別繼承。

現在再來回頭看類別,也就更清楚他在ruby中扮演的角色以及如何使用,心裡有種莫名的踏實感哈哈哈。

Module(模組)

Module 是一種封裝和命名空間機制,用於組織程式碼並將相關方法和常數組織在一起。模組不能實例化,本身也沒有繼承的功能,它主要被用來include, exclude到類別中,以共享方法和常數。模組中的方法可以被多個類別共享,這有助於減少程式碼的重複性。

參考資料:


上一篇
Day28 Ruby物件導向實踐-Error Handling
下一篇
Day30 Ruby物件導向實踐-Enumerable
系列文
入坑 RoR 必讀 - Ruby 物件導向設計實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言