這節課我們來試試開發一個簡單的命令行小遊戲,來完整的體驗一次所謂的“開發過程”。
遊戲設定是這樣的:
這是一種棋盤類游戲,我們來猜測敵人戰艦的位置,只要命中數發就可以擊沉它們。
我們給這些戰艦貼點標籤……比如各種網站吧?所以,這就成了一個攻擊網站的程序……捂臉。
遊戲目標
我們要玩家以最少的次數攻擊網站,把它擊垮。然後我們根據玩家的猜測次數來進行評分。
大致設計
我們畫一個7*7[……]
這節課我們來試試開發一個簡單的命令行小遊戲,來完整的體驗一次所謂的“開發過程”。
這是一種棋盤類游戲,我們來猜測敵人戰艦的位置,只要命中數發就可以擊沉它們。
我們給這些戰艦貼點標籤……比如各種網站吧?所以,這就成了一個攻擊網站的程序……捂臉。
我們要玩家以最少的次數攻擊網站,把它擊垮。然後我們根據玩家的猜測次數來進行評分。
我們畫一個7*7[……]
我們在上課之前,一起來回顧一下以前曾提過的“SoC”的概念,我們說這個叫做“Separation of Concerns”,我把它翻譯為責任分離——即不同的部分專注於自己的那一部分。或者說一個對象完成一個目標。
這樣做的目標既讓代碼更加模塊化易於維護,也讓系統運行效率更高。所以說,我們要讓對象之間的通信變得更加規範才行。
你去看看你在寫代碼時候用到的那些框架,哪個給你直接展示了[……]
我們使用 var 來聲明一個變量,就好像從櫃子裡拿出了一個試管放在了實驗台上;
我們給變量規定了一個類型,就好像在試管上貼上了標籤;
那麼放入的試劑就必須是標籤上標記了的——否則可能導致中毒或者爆炸。
同樣的,如果我們試圖給一個儲存器放入一個錯誤的數據類型,那麼編譯器就會報錯——沒錯總有辦法能夠騙過編譯器——反正我不會教你這個方法,那樣就會導致程序崩潰啦。[……]
上一節課我們第一次領略了 OOP 的風采,於模棱兩可的類和對象究竟是什麼東西呢?這節課我們用一個簡單的小栗子來向你介紹。
我們說類和對象的關係是設計圖和產品的關係,就拿我們的房子來說,一棟樓肯定會有對應的設計圖,但設計圖絕不會只能對應一棟樓,至少一個小區肯定會用一套設計圖不是嗎?我們的“類”就是這個“設計圖”。我們用這個設計圖設計了對象的屬性、功能等等的一系列內容,然後通過實例化來產[……]
考慮到有的同學沒有 iPhone,但學習 Swift 語言大家至少都會有 OS X 操作系統,我們的代碼演示都會在 OS X 下完成,使用 CLI 界面。這樣雖然又顯得古老了,但相信我去掉 GUI 會讓你省心不少——因為那又是另一回事了。
我們來看看,用 OOP 進行開發到底會是個什麼樣子?
考慮到我們現在並沒有很高的開發水平,那麼我們把所有的功能實[……]
我們都知道在 Java 中聲明一個抽象的類或者方法要使用 abstract 關鍵字,可是很遺憾熟悉的東西總會逝去,在 Swift 中已經沒有了這個標籤。
那麼,我們究竟要如何來聲明一個抽象的類呢?
這一點倒是讓人很熟悉對吧?吧構造器私有了那這個類肯定就不能被初始化了,自然就不能創建對象實例……不過……哪有那麼多但是,反正能用就行了!
[crayon-67b78[……]