您好,登錄后才能下訂單哦!
OOP,iOS,MVC
何政達
【前言】:寫這篇文章的目的是總結一下這幾天學到的有關iOS編程的有關知識點。主要分三部分:OOP的設計理念;iOS的構成;MVC的具體應用。
Part I :OOP
說起OOP,大家都知道是什么——面向對象程序設計(Object-OrientedProgramming)。但是我們為什么要使用這樣的一種設計模式來進行我們的程序設計呢?記得一開始學習編程的時候是小學六年級,當時學習的是BASIC;上了初中以后學習PASCAL語言;上了高中開始學習C語言;到了大學之后逐漸熟悉了Java,Python,Object-C。在常用的設計模式當中,面向過程和面向對象這兩種設計模式是使用最廣泛的。面向過程往往用于一個具體任務的設計實現(比如在科學計算當中具體算法的實現);而面向對象的設計模式往往是針對可視化程序、網絡以及移動程序設計的;在這些程序當中,可能沒有一個真正線性的從頭到尾的“流程”。比如一個程序上有許多按鈕,用戶可能隨意按任何一個按鈕,而且人和人之間選擇的方式又有所區別,因此順序式的程序設計顯然不能滿足我們對于程序的高要求。那么下面我們就用非常簡單的語言來描述一下什么叫面向對象程序設計。
面向對象程序設計的靈魂概念是“對象”(別想歪了。。。。)。一個對象就是一個“實例物體”,它具有兩種最基本的屬性:(1)將自己與別人進行區分的instantvariable(2)自己可以執行的一些method。從這我們就可以知道我們使用一個對象的方式其實非常簡單:利用instant variable找到我們想用的對象,然后再使用方法調用來運用相關的方法來完成任務。對象與對象之間的協作也是非常重要的一個方面,我們使用一種所謂“protocol”的方法來進行這樣的協作,用來完成更復雜的任務。當然還可以有delegate這樣的復雜關系(一個對象的方法會使用另一個對象的方法)。
那么我們如何去build一個對象呢?這就需要一個抽象化的思維:類。比如我們人,你和我都是人的實例(也就是對象),我們有自己的名字、年齡、身高、體重,這些數據就是我們的instantvariables;同時我們還擁有一些方法:說話、唱歌、吃飯等等,這些方法說明了我們可以做什么事情。但是人作為一個概念卻具有廣泛的共性,這樣我們就可以將這樣的共性提取出來,和對象一樣,進行兩部分的設計:(1)instantvariables(2)methods。當我們建立好了一個類以后,我們就可以利用類中的Init(初始化)方法來新建一個對象并對其進行初始化。而對于Instantvariable(在Object-C當中稱為property)我們也會有相應的getter與setter來進行選擇和處理。
要想良好的使用OOP的程序設計模式,思考方式的轉變必不可少。原來我們都是以“算法”為中心,以具體的步驟為中心。但是在OOP設計模式中,我們更關心的是Object之間的相互協作來完成復雜的任務。而且在OOP當中,重用性和封裝程度是非常重要的兩個指標,我們需要盡可能增加我們類的重用性以及盡可能將我們需要的功能封裝到類當中。當然如果我們需要對類進行進一步的細節化(但又不是直接新建一個object),那么這個時候就開始了inherite(繼承)的觀念。目前我還沒有學到有關于繼承的深層次的東西,因此這次就不在這里敘述。
總結一下,OOP的核心就是:類àObjectàObject之間的協作。
iOS
什么是iOS?iOS包括哪些東西?這是我們在進行iOS開發之前必須要搞清楚的問題。iOS是運行在iphone以及ipad上的操作系統。它是Unix為底層的一個移動端操作系統。而在unix kernel之上又加了許多的應用和接口(API),以及相應的框架(Framework)。因此iOS最核心的應該是:(1)Objective-C語言(2)Cocoa Touch框架(3)其他的重要服務(視頻、音頻、網絡、游戲等等)。在StanfordCS139P第一講的PPT當中有詳細的介紹。因此在這里就不贅述了,如果好奇想了解更多,不妨去看看第一講的PPT。因此學習iOS程序設計最困難的也就是掌握Cocoa Touch以及iOS包含的眾多Framework。我們要清楚:所有的Framework都是OOP的,它們都使用OOP的設計理念來進行設計并進行整合的。因此整個iOSprogramming就是OOP。這點非常的重要。
MVC
在iOS編程當中,我們使用的設計模式是MVC(Model-View-Controller)。那么下面就分別按照Model,View,Controller進行總結。
Model顧名思義就是你的程序是做什么的,你的程序的具體實現思路怎樣(注意:在model當中的邏輯是完全不考慮UI的,我們就在純粹的思維上去進行思考)。它會包含你的程序所需要的所有數據結構以及數據結構之間的相互作用關系。這就是model。有了model,就知道程序是如何去做的了。
View就是我們程序和用戶進行交互的地方,也是我們如何設計讓我們的程序去執行的地方,但是注意:View完全不知道我們要執行的是什么東西。它只聽Controller的話。Controller讓它干嘛,它就干嘛。讓它顯示什么就顯示什么。
Controller是連接Model和View的橋梁,也是我們需要在Xcode編程當中花大力氣去編寫的。Controller可以向Model詢問,也可以向View詢問。
Model,View,Controller之間的關系:
(1) Controller可以指向Model以及View
(2) Model絕對不能和View進行互動
(3) Model如果改變想提醒Controller,需要使用一種類似于“radio”的方式進行
(4) View如何受到互動(比如用戶按了一個按鈕),那么它會以target-action的方式告訴Controller,然后等待Controller告訴它下一步應該如何去做。
(5) View也會和Controller有兩種方式的互動:一種稱為Data Source,另外一種是“did,should, would”形式的。這個在不同的UIView的Object中會有應用。
如果我們熟練掌握了上面5種MVC中的交互方式,我們就能很好的使用Xcode以及iOS中的Framework,因為它們的設計都是基于MVC的。
【總結】:在上面我們簡單的總結了OOP,iOS以及MVC的相關知識點。當然我才剛剛開始接觸iOS,后面還有很長的路要走,要寫許多許多自己的class;也要熟悉iOS所提供的Framework以及相應的SDK。千里之行始于足下,加油吧。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。