我們的實驗環境以及初見 OOP

考慮到有的同學沒有 iPhone,但學習 Swift 語言大家至少都會有 OS X 操作系統,我們的代碼演示都會在 OS X 下完成,使用 CLI 界面。這樣雖然又顯得古老了,但相信我去掉 GUI 會讓你省心不少——因為那又是另一回事了。

那麼現在,讓我們來和 OOP 問個好

我們來看看,用 OOP 進行開發到底會是個什麼樣子?

考慮到我們現在並沒有很高的開發水平,那麼我們把所有的功能實現走用輸出文字代替,僅僅來演示“開發”這個過程本身。

老闆出現了

“我們這次要做一款手機!”

好吧,我們來開發一個手機:

你看,我們的手機系統有四個方法可以使用?

“我們的二代產品要能夠上網!”

好吧,我們再開發一個手機出來:

“我們的三代產品要有 Wifi !”

好吧,畢竟老闆是給你錢的人,我們再來一次吧:

“你可以回家了。“

好吧,以上三個手機的代碼無論給誰看了都會揪心——冗餘的部分太多了——我們做了那麼多的無用功!難怪會以和老闆爭吵薪水最終被炒為結局。

這時候只聽天空 Duang 的一聲,OOP 駕到,讓我們來看看面向對像是如何救場的:

抽象父類

我們說手機三代都有開機關機打電話和發短信的功能,那我們就開發一個類,把它們抽像出來:

“你這樣做然並卵!”(老闆你別急)

有了這個基礎,我們從 CellPhone 繼承子類,每一個子類都有父類的全部功能,我們只要再加上額外的功能就好了:

看吧?這樣就節省了大量的重複開發時間!

“別高興的太早,我還要開發平板電腦! ”

我們都知道其實平板電腦就是個大號的手機,那麼我們只需要增加平板電腦的功能在手機上就好了,硬件換一下就 ok~

“我可不想讓平板電腦代替了手機的位置,它們能上網但不能打電話和發短信! ”

好吧,我們把打電話和發短信的功能重寫一下:

好了,現在平板電腦誕生了。

“哼,我要全部的設備都能開機帶聲音! ”(老闆你這是鬥氣啊~~)

不過沒有關係,不要擼起袖子準備大干一場——重構整個系統是不必要的。

好了,我們只要更改了父類的開機方法,所有子類就都有了這個功能。

 

總結

好吧,整體來說我們這個栗子不是很恰當,但並不妨礙我們領會 OOP 的內涵不是嗎?通過繼承和重寫等 OOP 的機制,我們可以很快速的基於以前的基礎搭建上層建築。而且有類型的規定,我們也可以很方便的修改以前的代碼而不必影響到後續的代碼。

尤其是在多人合作開發的時候,OOP 更是拯救了程序猿的生命,我們可以更加方便的使用別人已經開發寫好的輪子(庫),可以在某某不在的時候也可以繼續開發。

 

不過,類和對像到底是什麼呢?繼承究竟是怎麼運行的呢?我們下節課再來了解。

由...出版 R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

加入對話

3 註釋

您的電子郵件地址不會被公開. 必填字段標 *