Objective-C之成魔之路【3-類、對象和方法】

來源:互聯網
上載者:User

標籤:objective-c   ios開發   物件導向   class   執行個體   

重開發人員的勞動成果,請勿轉載


物件導向程式設計的一些關鍵概念,主要關注Objective-C定義類相關的文法。

OC物件導向方面的概念和其它語言差不多。相比其他語言更接近C++。


對象就是一個物件。物件導向的程式設計可以看成一個物件和你想對它做的事情。

對象(名詞)----實現(動詞),先定義類(Class),再定義方法(Method)。

C語言是典型的面向過程性語言。

在C語言中,通常是先考慮要實現什麼,然後才關注對象,這幾乎總是與物件導向的思考過程相反。

實現(動詞)----對象(名詞),先定義函數(Function),再定義模組(Module)。


類的獨特存在就是一個執行個體,對執行個體執行的操作稱為方法。

在某些情況下,方法可以應用於類的執行個體或類本身。

對象使用方法可以影響對象的狀態。

關鍵概念:對象是類的獨特表示,每個對象都包含一些通常對該對象來說是私人的資訊(資料)。方法提供訪問和改變這些資料的手段。


Objective-C採用特定的文法對類和執行個體應用方法:

[ ClassOrInstance method];


請求一個類或執行個體來執行某個操作時,就是向它發送一條訊息,訊息的接收者稱為Receiver。所以,可以用另外一種方式描述:

[ receiver message];


Objective-C的Method操作執行,一種理解是發送訊息,另外一種是方法調用。

前一種更貼近OC的思想。


程式在邏輯上分為下面3個部分:

@interface

@implementation

program


@interface部分用於描述類和類的方法;

@implementation部分用於描述資料(類對象的執行個體變數儲存的資料),並實現在介面中聲明方法的實際代碼;

program部分的程式碼實現了程式的預期目的。


@interface部分一般格式如下:

@interface NewClassName: ParentClassName

propertyAndMethodDeclarations;

@end


按照約定,類名以大寫字母開頭。

執行個體變數、對象以及方法的名稱,通常以小寫字母開頭。

確定名稱時,要遵循找到能反映變數或對象使用意圖的名稱。

程式具有更強的自解釋性(Self-explanatory)

制定名稱的規則相當簡單:名稱必須以字母或底線(_)開頭,之後可以使任何大小寫字母、底線或者數位組合。

另外像$空格等都是非法,記住不能數字開頭、不能使用保留字。


再次強調,Objective-C是大小寫敏感的。sum、Sum、SUM均表示不同的變數。


類或執行個體方法,開頭為負號(-)表示執行個體方法,正號(+)表示類方法。

傳回型別放在開頭的負號或正號之後的圓括弧中。

有參數時,在方法名後加冒號(:),再加上參數類型和參數名。

具體的如下例所示:

-(int) currentAge;

-(void) print;

-(void) setNumber: (int) n;

方法類型 (傳回型別) 方法名稱 方法有參數 參數類型 參數名稱


@implementation部分的一般格式如下:

@inplementation NewClassName

{

memberDeclarations;

}

methodDefinitions;

@end

需要注意的是:使用@synthesize指令能讓編譯器自動為你產生一些方法。


alloc是allocate的縮寫。如果向某個類發送alloc訊息,便獲得該類的新執行個體。

這個alloc方法繼承自父類。alloc方法保證對象的所有執行個體都變成初始狀態。

當然想要適當的方法時,必須重新初始化,調用init方法。

經常地情況是把alloc和init合在一起,或者直接使用new方法。

例如:

Fraction *myFraction;myFraction = [Fraction alloc];//類方法myFraction = [myFraction init];//執行個體方法Fraction *myFraction = [[Fraction alloc] init];//變形平板Fraction *myFraction = [Fraction new];//類方法,new包含alloc和init

記住,方法執行的上下文環境就是接收到訊息的對象。

取值方法(get)和賦值方法統(set)稱為存取方法(accessor)。

這就是資料封裝的原則,通過使用方法來訪問對“外界”隱藏的資料。


使用一個類的程式結束本章:

////  main.m//  3_2_class_object_method////  Created by haomengzhu on 14-11-01.//  Copyright (c) 2014年 haomengzhu. All rights reserved.//#import <Foundation/Foundation.h>//-------- @interface section ----------@interface Fraction: NSObject-(void) print;-(void) setNumerator: (int) n;-(void) setDenominator: (int) d;@end//-------- @implementation section ----------@implementation Fraction{    int numerator;    int denominator;}-(void) print{    NSLog(@"%i/%i", numerator, denominator);}-(void) setNumerator:(int)n{    numerator = n;}-(void) setDenominator:(int)d{    denominator = d;}@end//-------- program section ----------int main(int argc, const char * argv[]){    @autoreleasepool {        Fraction *myFraction;                // new object        myFraction = [Fraction alloc];        myFraction = [myFraction init];                // set        [myFraction setNumerator: 1];        [myFraction setDenominator: 3];                // print all        NSLog(@"Hello, World!");        [myFraction print];    }    return 0;}


Objective-C之成魔之路【3-類、對象和方法】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.