什麼是物件導向?
物件導向(object-oriented),其實是「物件導向程式設計」較簡短的說法
由於物件導向可以很抽象,也可以很具體,端你看怎麼敘述
為了讓大家比較好理解,作者會大量使用現實生活中我們常見的事物「類比」程式的設計方式
舉例來說,生活中常常可以看到許許多多的物體,在程式中我們稱為物件
像是房屋、汽車、電腦、手機,甚至人都是不同的物件
「物體」和「物件」這兩個詞基本上是一樣的,只是使用的情境不太一樣
在日常的對話中我們會使用「物體」,而在程式語言中的敘述我們會使用「物件」
但兩個詞表示的是一樣的東西
而這些物件都有3種特性
狀態(state):
物件的狀態指的是「物件本身所包含的資訊」
比如人有姓名、身高等等資訊,貓/狗有體重、毛色等等資訊,或是汽車的顏色、目前剩下多少油等等資訊行為(behavior):
物件的行為,或是物件提供的操作
比如說貓狗可以奔跑、叫,或是汽車可以發動、加速、熄火等等身份唯一(identity):
每個物件都是唯一的,假設你有養一隻哈士奇,而世界上也有非常多隻哈士奇
但是你養的哈士奇是世界上唯一的,沒有任何一隻哈士奇是你家養的那一隻
將上述的物件用表格呈現物件特性:
狀態 | 行為 | |
---|---|---|
汽車 | 車身顏色、剩下的汽油量 | 發動、加速、熄火 |
電腦 | 硬體規格、種類(筆電、桌電...) | 開機、輸入資料、關機 |
手機 | 螢幕尺寸、儲存容量 | 響鈴、通話、拍照 |
人 | 膚色、眼睛大小、頭髮顏色、身高 | 吃飯、睡覺、慢跑 |
貓/狗 | 品種、重量、 | 叫(喵/汪) |
講了那麼多,那麼什麼是物件導向?
用作者的話來說,物件導向就是「用世界中物體的特性跟使用方式來設計程式」
也可以說是「用程式來模擬真實世界物體的特性和使用方式」
看不太懂沒關係,我們先繼續往下看其他的文章
大致了解後再回來看看這句話,你可能會更有感覺
程式新手常常會認為物件導向只是一種程式的「寫法」
但作者個人認為這麼說並非完全正確
物件導向只是一種「概念」或是「想法」,而我們運用這個「概念」跟「想法」來設計並撰寫程式
就算不用物件導向,也能夠寫出能跑出一樣結果的程式
那麼為什麼物件導向是目前的程式設計的主流呢?
大致上能夠歸納成2個原因:
- 物件的觀念與想法跟我們的生活息息相關,是一種比較讓人容易理解的描述方式。
- 物件導向程式設計的架構,讓程式更有彈性,在未來較容易維護與修改程式碼