swift 語言的基礎 - 物件導向(Object Oriented Programming, OOP)

  1. 物件導向 - 介紹
    1. 類別(Class)
    2. 物件(Object)
    3. 隱藏在 Class 裡的進階觀念
    4. 有關更多 Class 的介紹 會在其他章節再做更詳細的說明

物件導向 - 介紹

在沒有開始使用物件的觀念時,如何用程式撰寫,來寫出對於一輛汽車的描述?

範例:

藍色的東西,有四個輪子,品牌是BMW,還能夠按喇叭。


// 車子的顏色
let carColor =  .blue

// 汽車有 4 個輪胎
let numberOfCarTires =  4

// 品牌
let carBrand = "BMW"

// 按喇叭
func horn(){
  print("Ba Ba Ba")
}

horn() //按一下喇叭

如果改用物件的方式來描述呢?

我們先將一輛車子的設計藍圖先規劃出來,將屬性和操作的可能性,聚合起來,並且將可能改變的數值,變成變數,將其放到設計藍圖的外部。等到有需要建造汽車時,再將變數放進去。

設計藍圖的觀念 就是程式人說的 類別 (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") }
  
}

其中,有一些名詞,慢慢地要開始熟悉,其中 color(顏色) 變數用以描述車子,我們將之稱之為 屬性 (Property),按喇叭是一個操作函數,我們將之稱之為 方法 (Method)

在使用上,如何用程式描述相同的汽車?


// 有一台藍色,有四個輪子,品牌是BMW,還能夠按喇叭。
let car1 = Car(brand: .BMW)

// 有一台藍色,有四個輪子,品牌是Bens,還能夠按喇叭。
let car2 = Car(brand: .Benz)

// 有一台藍色,有四個輪子,品牌是Toyota,還能夠按喇叭。
let car3 = Car(brand: .Toyata)

是不是簡潔許多,又可重複地使用設計藍圖一直打造汽車了呢? 這就是物件導向的優點。

物件(Object)

那物件呢? 其實就是透過Class被製造(init)出來的實體 car1,car2,car3,就是一個個物件了

我們可以讓 car2 按一下喇叭

car2.horn()

隱藏在 Class 裡的進階觀念

Class 屬於 Reference Type 的型別, 那什麼是 Reference Type 呢?

留待下一章 Reference Type / Value Type 時再解釋。

有關更多 Class 的介紹 會在其他章節再做更詳細的說明


轉載請註明來源,歡迎對文章中的引用來源進行考證,歡迎指出任何有錯誤或不夠清晰的表達。可以郵件至 [email protected]