物件導向 - 介紹
在沒有開始使用物件的觀念時,如何用程式撰寫,來寫出對於一輛汽車的描述?
範例:
藍色的東西,有四個輪子,品牌是BMW,還能夠按喇叭。
// 車子的顏色
let carColor = .blue
// 汽車有 4 個輪胎
let numberOfCarTires = 4
// 品牌
let carBrand = "BMW"
// 按喇叭
func horn(){
print("Ba Ba Ba")
}
horn() //按一下喇叭
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
如果改用物件的方式來描述呢?
我們先將一輛車子的設計藍圖先規劃出來,將屬性和操作的可能性,聚合起來,並且將可能改變的數值,變成變數,將其放到設計藍圖的外部。等到有需要建造汽車時,再將變數放進去。
設計藍圖的觀念 就是程式人說的 類別 (Class)
類別(Class)
class Car {
enum Brand {
case BMW, Benz, Toyata
}
// 顏色
let color = .blue
// 幾條腿
let numberOfTires = 4
// 品牌名
let brand: Brand
init(brand: Brand) { self.brand = brand }
func horn(){ print("Ba Ba Ba") }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
其中,有一些名詞,慢慢地要開始熟悉,其中 color(顏色) 變數用以描述車子,我們將之稱之為 屬性 (Property),按喇叭是一個操作函數,我們將之稱之為 方法 (Method)。
在使用上,如何用程式描述相同的汽車?
// 有一台藍色,有四個輪子,品牌是BMW,還能夠按喇叭。
let car1 = Car(brand: .BMW)
// 有一台藍色,有四個輪子,品牌是Bens,還能夠按喇叭。
let car2 = Car(brand: .Benz)
// 有一台藍色,有四個輪子,品牌是Toyota,還能夠按喇叭。
let car3 = Car(brand: .Toyata)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
是不是簡潔許多,又可重複地使用設計藍圖一直打造汽車了呢? 這就是物件導向的優點。
物件(Object)
那物件呢? 其實就是透過Class被製造(init)出來的實體 car1,car2,car3,就是一個個物件了
我們可以讓 car2 按一下喇叭
car2.horn()
- 1
隱藏在 Class 裡的進階觀念
Class 屬於 Reference Type 的型別, 那什麼是 Reference Type 呢?
留待下一章 Reference Type / Value Type 時再解釋。
有關更多 Class 的介紹 會在其他章節再做更詳細的說明
轉載請註明來源,歡迎對文章中的引用來源進行考證,歡迎指出任何有錯誤或不夠清晰的表達。可以郵件至 nobodyyu@gmail.com