字體:小 中 大 | |
|
||||||||||||||
2011/02/15 22:44:29瀏覽12693|回應0|推薦1 | ||||||||||||||
先讓大家了解一些術語,Object, Class, Instance, Method分別代表什麼和意義。 Object 是什麼? Object就是一個實體,物體,物件,而物件導向程式設計就是對這個物體做一些事情。 C語言,是一種程序的程式言,要思考它做事情的先後順序,而物件導向並不是這樣。 Programming in Objective-C 2.0這本書的第三章,以車子做為例子來說明這些術語之間的關係,我稍為修改了一點地方,好讓大家能更易了解。 假設你有一台車,它是一個實體,這台車在某個工廠生產,也許是底特律或在日本或其他的地方,你的車子有個可以識別的獨特數字(車牌)等等的資料。 用物件導向Objective-C的說法,你的車子(一個object)是個車子類別(class)的 實體(instance)。 用我個人的理解來說,假如車子是喜美1.6款式的車,那喜美1.6就是這台車的class。Class你可以把它當作是一個款式、資料、設計、印象來看。喜美1.6它並不是一個實際的車,只是一個代稱,它只是代表這種車的資訊,這種車配有1600cc的引擊、五人座位、置物箱等等的各種配備,可以看成是你的車的設計或定義。 而你的車,則是一個照著喜美1.6的設計圖中生產出來的實體(instance)。 你的車子可能是銀色外表、有個黑色的內裝、可替換的天窗等等,就些車子實際的內容及狀態,可以看成是各種的變數,這些變數就是實體變數(instance variables)。又你想到對你的車子做些什麼動作,如駕駛、加油、清洗、保養等等,這些你會對車子做的動作,稱為方法(Methods)。下表是對你的車子的各種動作,而這些動作,別人也可以對他的車子這樣做。
Instances Methods and Class Methods 車子髒了,你會想要清洗它;沒汽油了,你會去加油;也許你會打開冷氣、關上窗戶等等各種改變車子現實狀態(這些狀態都是instance valuables)的動作,就稱為實體方法(instance methods)。 而查找出喜美1.6的資訊、買一台喜美1.6這種做用在類別(如對喜美1.6這個class )上面的方法稱為類別方法(class methods)。 假設你有兩台出自同產線、同款式的車,同樣的顔色、內裝等等,一開始它們也許是一樣的,但是不久後一台車也許出現了刮痕,另一台車的里程也許遠一點。每台車的 instance 不只是出廠時的設定,而且也有自已的特性,這些特性會動態的改變,如當你駕車的時候,汽油越來越少、里程越來越高、輪胎磨耗越來越多等等。 在這裡有個重要的觀念,就是object是class的各別的表現,而每個object都含有一些各別資訊(data,這些data就是instance valuables),而 methods 提供了可以存取該種data的動作。 Objective-C 語法 在Objective-C程式語言中,可以用特別的語法操作 mathods 對 class 或 instance 做一些事情: [ Class method]; 或者 [ Instance method]; 在這語法中,左中括號緊接著 class 名稱或是 instance of class 的名稱, 然後空一個 space,再接上一個你要實行的 method,再加上右中括號,最後再加上一個分號,這個句子就完成了。另一種說法是當你想要某個 class 或 instance 表現出某個動作,可以說你送一個 message 給 class 或 instance,而接收message者則稱為 receiver。所以上二句語法可以看成是這樣: [ receiver message]; [接收者 訊息]; 回到Objective-C的語法上,當你要要一台新車時,到工廠去取得它,語法如: yourCar = [ Car new]; 這樣你送了一個 message 給 Car class (訊息的接收者),命令它給你一台新車。這個新車資料存入了變數 yourCar 中。現在,新車可以被你用來做任何事情了。 因為你從工廠取得的一台新車,這個 方法 new 被稱為為工廠 或 class 方法。其他要在這台新車上面要做的事情則稱為 instance methods,如這些例子: [yourCar prep]; [yourCar drive]; [yourCar getGas]; [yourCar service]; [yourCar topDown]; [yourCar topUp]; currentMileage = [suesCar currentOdometer]; 最後一行是從Sue的車子讀取里程表上面的值存到變數currentMileage中。你的姊姊Sue也有一台車,也可以用同樣的methods來操作她的車: [suesCar drive]; [suesCar wash]; [suesCar getGas]; 用同樣的 methods 去操作不同的種件是物件導向程式設計的重要觀念,以後我們會學到很多。 在實際的程式設計時,你的Object會像是電腦關連的東西,像是 視窗、長方型、文字塊,也計是個計算機(calculator)或是歌曲列表,而這些的語法就像操作車子的 methods 一樣,像是: [myWindow erase]; 清空視窗 [myRect getArea]; 計算長方型面積 [userText spellCheck]; 對某字詞做拼字檢查 [deskCalculator clearEntry]; 清除上次輸入的值 [favoritePlaylist showSongs]; 列出喜好的歌曲列表 [phoneNumber dial]; 撥打電話 |
||||||||||||||
( 知識學習|其他 ) |