第 9 章
認識結構、 專案組織與程式文件
Most good programmers do programming not because they expect to get paid or adulation by the public, but because it is fun to program.
- Linus Torvalds
如果你是從頭開始與我們一起進行本書所有專案的學習,你已經向前邁進一大步,目前你應該能夠使用 SwiftUI 來建立以清單視圖 為主的 iOS App 了。我們將進一步增強 FoodPin App 並改善其細節視圖及加入更多功能,還有,我們會深入 iOS 的開發必學習其他 API,我會介紹物件導向程式設計(Object Oriented Programming)的基礎,並教導你如何撰寫更佳的程式碼。
不要被「物件導向程式設計」或簡稱「OOP」的專有名詞所嚇到,這並不是新的程式語言,而是一種程式觀念。不像坊間一些程式設計的書籍一樣,一開始就介紹 OOP 的觀念,我在規劃本書內容時便打算在比較後面的章節才來介紹它,我想讓事情保持簡單,所以先介紹如何建立一個 App。我可不想讓一些技術術語或觀念嚇跑了你,而使你放棄學習建立 App。不過,我想是時候來介紹 OOP 觀念了。如果經過了8 個章節之後,而你還在閱讀本書,我相信你已經下定決心要學好 iOS 程式,並且提升自己的程式設計技術到更進階的階段了。
好的,我們開始吧 !
物件導向程式設計的基礎理論
你已經使用過 struct
建立你的第一支 App,不過我尚未說明過 struct
是什麼。進一步談到 struct
之前,我先簡短地介紹一下物件導向程式設計。
和 Objective-C 及許多其他程式語言一樣,Swift 是一種物件導向程式設計(OOP)語言。OOP 是一種以物件的組成來建立軟體應用的方式。換句話說,你在 App 中已經寫過的大多數程式碼,都是以某些方式來處理某種物件。你曾使用過的 View
、 Button
與 List
物件,都是 SwiftUI 框架所帶來的範例物件。你不只可以使用內建物件,你也在專案中建立了你自己的物件,如 RestaurantListView
。
那麼為何需要 OOP 呢?一個非常重要的理由是,我們需要把一個複雜的軟體分解成許多小部分(或者說是建立模塊),以便能夠輕易地開發及維護。這裡所指的小部分就是物件,每一個物件都有它的任務,物件間相互協調來讓軟體能順利運作,這就是 OOP 的基本觀念。
在物件導向程式設計中,一個物件具有二個特徵:「屬性」(Property )與「功能性」(Functionality )。我們以一個真實世界的物件來說明—汽車。一台汽車有自己的顏色、型號、最快速度、製造商等,這些都是汽車的屬性。就功能性術語而言,一台汽車應該提供基本的功能,如加速、剎車及駕駛等。
軟體物件與真實世界物件很相似。我們回到 iOS 世界中,來看一下 Button
物件的屬性及功能性:
- 屬性(Properties) – 背景、尺寸、顏色及字型就是
Button
的屬性。 - 功能性(Functionalities) –當按鈕被點擊時,它會判別點擊事件。偵測觸控的能力是
Button
的眾多功能之一。
在前面的章節中,你總是會碰到一個術語—「方法」(Method )。在 Swift 中,我們建立方法來提供物件的功能性。通常一個方法對應一個物件的特定功能。
本文摘自《iOS 17 App程式設計實戰心法》(SwiftUI)》一書。如果你想更深入學習Swift程式設計和下載完整程式碼,你可以從 AppCoda網站 購買完整電子版