iOS新手必看 — 當個創世神之物件導向基礎篇

威爾哥(Will, Tsai)
蔡胖想學做生意
6 min readJul 16, 2018

諸君!

好久不見!

沒錯,我就是

人帥心善打字快, 寫code debug樣樣來 的 威爾哥!

歡迎來到威爾哥的iOS小教室。

今天要講的題目是,物件導向程式設計。

英文叫做 object-oriented Programming,簡稱OOP。

OOP就是指根據物件導向(OO)這個概念來進行程式開發。

同學在進入職場的時候,有的時候會看到求職訊息上PO出需要懂OOP。

這就是在要求求職者要具備物件導向的思維,並且能實際運用在程式寫作上。

不過不懂這個概念的人一樣可以寫程式,所以有些人根本不在意。

但是如果能徹底了解這個概念的話,那麼寫出來的程式品質將會大幅的提升,輕鬆甩開不懂這個概念的工程師好幾條街。

既然我們都要寫iOS APP了,那就要立志當一個好棒棒的iOS工程師,因此這個概念我們是一定要學會的!

所以今天就讓我們一舉把物件導向這個概念拿下吧!

🔔威爾哥的小叮嚀:
如果想要進入程度比較好的公司,或者到國外上班的話,懂OOP算是基本中的基本。所以各位同學一定要學會唷。

整篇文章將分為以下幾個部分!

  1. 什麼是物件導向?
  2. 使用物件導向的好處
  3. 物件導向的核心-Class
  4. 實務操作
  5. 物件導向就這樣嗎?

好der~那麼各位安全帶繫好,威爾哥要開車囉~~哺哺。

叭叭,叭叭,車來了呀!!

什麼是物件導向?

正所謂,知其然也要知其所以然,在學習物件導向最重要的就是,先了解物件導向是什麼東西!

首先,物件導向是一種思考的方式,也是寫程式時候必須遵從的準則。

英國詩人布萊克說,一沙一世界 一花一天堂。我們這個世界是由許許多多不同的物件所建造起來的。
舉例來說,天上有太陽,雲朵,星星,月亮等等物件,地上有人類,動物,植物,山,河等物件。,

而每一個物件,又是由更小的物件來組成。例如人體是由器官,水,骨頭…等等不同物件所組成。汽車,是由輪胎,玻璃,引擎等不同物件組成。然後,這些物件又分別使用其他物件所組成。

因此,我們可以說世間萬物都是由一個一個小物件所組成的大物件

🛎️ 世間萬物皆物件

而當我們在開發軟體的時候,一個完整的軟體就是一個虛擬的世界,該軟體具有的畫面與功能,都是一個個活在這個世界的小物件。這些物件全部組合起來就是一個完整的軟體。

而身為工程師的我們就是虛擬世界的神。

為了搭建我們的世界,我們需要設計一個又一個的物件。

使用物件導向的好處

基本上,物件導向是一種協助我們使用程式碼來描述或模擬現實世界中的任何事物與概念的一種思考工具。

了解物件導向之後,可以賦予我們寫出來的程式以下幾個好處,

1. 好懂

使用物件導向寫出來的程式清晰好懂,因為整份程式所有的功能已經使用人類看得懂的方式給包裝起來,對於閱讀程式碼的人就像在看故事書一樣,十分好懂。(前提是這個人物件導向學的好…XD)

2. 好維護

物件導向概念下,所有的功能都會被封裝成一個一個小小的物件。

如果某些功能出錯了,我們可以很簡單地找出出錯的地方並且進行修改,不需要整份程式碼都進行變動。

3. 可重複利用

因為所有的功能都被封裝成一個一個物件,因此如果程式中需要在不同地方實作相同功能,我們只要寫一次這個功能,便可以到處使用,不需要一直寫重複的程式碼。

4. 功能容易擴充

如果有些功能需要增加新功能,我們可以在原有的程式碼之上進行修改,而且不用擔心影響到原本寫好的部分。

🛎️ 舉例來說:有人發明了引擎之後,如果我們想要利用引擎來製造一台車,我們不需要自己去發明引擎。我們可以直接去買一個別人做好的引擎(功能可重複利用)。如果車子不能發動了,我們透過檢查,發現是引擎壞了,這時候我們只要維修引擎就好,不需要整台車子都進行維護。(好維護)萬一引擎不符合我們的需求,或者說我們要增加新的功能,那麼我們只要在現有引擎的基礎上做加工即可。(容易擴充)

上面這些好處,等到了解物件導向程式設計中的三大特性,封裝繼承多型之後,相信會有更深刻的體會。

但是因為這是屬於比較進階一點的課題,對於剛開始學iOS開發的我們,可以先不用急著了解。

物件導向的基礎 — 類別(Class)

在OOP的世界中,Class(類別)就是代表著物件的設計圖

有了設計圖之後,我們就可以產生許多一模一樣的物件。

🛎️ 舉例來說:我們要請工廠做一台夢幻跑車。所以我們請來各大車廠的專家幫我們畫了一張夢幻跑車的設計圖。當設計圖完成之後,只要我們拿去車廠請對方按照設計圖來做,我們就可以獲得夢幻跑車。不管我們要製造幾台,只要設計圖沒改變,我們都可以獲得同樣規格的夢幻跑車,不用擔心第一次拿到三個輪子的,第二次拿到沒有引擎的跑車。

那麼當我們在設計物件的Class的時候,要怎麼開始呢?

一個物件的Class應該包含以下兩個部分

  1. 屬性(Property):代表這物件可以儲存與提供的資訊
  2. 方法(Method):代表這個物件可以執行的動作
🛎️ 舉例來說:人類這個物件,儲存的資訊有:姓名,性別,身高,體重….等等可以執行的動作有:吃,喝,拉,撒,睡…等

使用同類別產生的物件,都會具有相同的屬性與方法

所以,如果我們在路上遇到人類,不管他是哪一國的人,我們都可以問一下他的名字是什麼,性別是什麼。也可以請他吃東西,喝飲料。

因為每個我們遇到的人都是使用人類這個類別製造出來的實體,每個實體的型別都是人類。

實體,型別是什麼東西?在程式中,我們使用設計圖(Class)製造物件。實體 - 使用某Class製造出來的物件,在程式中被稱為某個class的實體(原文是instance,也翻譯為實例)。型別 - 用來製造該instance的類別就是該instance的型別。

實際操作

在我們搞懂物件導向這個概念之後,在實務上我們該如何實作物件導向呢?

導播,上影片!!

物件導向就這樣嗎?

當然不是!

這篇文章的內容只是在解釋物件導向最基礎的概念。

如果想讓我們寫出來的程式碼非常物件導向,那麼我們需要去研究OOP(物件導向程式設計)的三個核心觀念,封裝,繼承與多形。

如果我們想讓整個APP的架構設計的非常物件導向的話,那麼就需要去研究OOAD(物件導向分析與設計)。

不過凡事沒有一蹴可及的,所以就讓我們一步一步來,先掌握最基本的概念再慢慢學習其他學問吧。

結論

其實物件導向是一件很好玩的事情,同學只要了解物件導向之後,寫起程式保證暢行無阻,而且效率高,Bug少,實在是居家旅行必備良藥!所以,諸位同修請一定要搞懂這個概念,萬一一時三刻搞不懂的話,記得多看幾次威爾哥的實作影片,然後自己動手下去做,相信多寫幾次後,就可以得心應手啦!

這篇文章就到這邊,謝謝各位的收看。

持續關注威爾哥,學習iOS笑呵呵。

威爾哥的iOS小教室,我們下次見!

️千山萬水總是情,按個「拍手」行不行。如果你覺得我的文章還不錯,可以「Follow」我,然後順手按個拍手鼓勵鼓勵我!我會非常高興的。按住👏 1秒 ,神清氣爽。
按住👏 5秒 ,通體舒暢。
按住👏 10秒,說吧,要吃什麼,今晚宵夜我請。
謝謝大家!

--

--

威爾哥(Will, Tsai)
蔡胖想學做生意

作者自稱威爾哥,是個想養貓但是自己都需要人養,漂流在墨爾本的程式設計師,曾經碰過前端開發,後端開發,android開發,現在主要研究iOS開發,興趣是寫寫廢文跟大家分享。