用於處理分數的Objective-C類

來源:互聯網
上載者:User

現在,我們將用Objective-C定義一個實際的類,並學習如何使用類的執行個體。

同樣,我們將先學習過程。因此,實際的程式範例可能不是特別實用,那些更加實際的內容將在稍後討論。

假設要編寫一個用於處理分數的程式,可能需要處理加、減、乘、除等運算。如果你還不知道什麼是類,那麼可以從一個簡單的程式開始,代碼如下:

代碼清單3-1

// 採用分數的簡單程式

 

#import <Foundation/Foundation.h>

 

int main (int argc, char * argv[])

{

   @autoreleasepool {

      int  numerator = 1;

      int  denominator = 3;

      NSLog (@"The fraction is %i/%i", numerator, denominator);

   }

   return 0;

}

 

代碼清單3-1  輸出

The fraction is 1/3

 

在代碼清單3-1中,分數是以分子和分母的形式表示的。在@autoreleasepool指令之後,main中的前兩行將變數numerator和denominator都聲明為整型,並分別給它們賦予初值1和3。這兩個程式與下面的程式行等價:

int numerator, denominator;

 

numerator = 1;

denominator = 3;

將1儲存到變數numerator中,將3儲存到變數denominator中,這樣就表示分數1/3。如果需要在程式中儲存多個分數,這種方法可能比較麻煩。每次要引用分數時,都必須引用相應的分子和分母,而且操作這些分數也相當困難。

如果能把一個分數定義成單個實體。用單個名稱(例如myFraction)來共同引用它的分子和分母,那就會更好。這種方法可以利用Objective-C來實現,從定義一個新類開始。

代碼清單3-2通過一個名為Fraction的新類,重寫了代碼清單3-1中的函數。下面給出這個程式,隨後將詳細介紹它是如何工作的。

代碼清單3-2

// 使用分數的程式——類版本

 

#import <Foundation/Foundation.h>

 

//---- @interface 部分 ----

 

@interface Fraction: NSObject

 

-(void)   print;

-(void)   setNumerator: (int) n;

-(void)   setDenominator: (int) d;

 

@end

 

//---- @implementation 部分 ----

 

 

@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 部分 ----

 

int main (int argc, char * argv[])

{

   @autoreleasepool {

      Fraction  *myFraction;

 

      // 建立一個分數執行個體

 

      myFraction = [Fraction alloc];

      myFraction = [myFraction init];

 

      // 設定分數為1/3

 

      [myFraction setNumerator: 1];

      [myFraction setDenominator: 3];

 

      // 使用列印方法顯示分數

 

      NSLog (@"The value of myFraction is:");

      [myFraction print];

   }

   return 0;

}

 

代碼清單3-2  輸出

The value of myFraction is:

1/3

 

從代碼清單3-2的注釋中可以看到,程式在邏輯上分為以下3個部分:


@interface部分


@implementation部分


program部分

其中,@interface部分用於描述類和類的方法;@implementation部分用於描述資料(類對象的執行個體變數儲存的資料),並實現在介面中聲明方法的實際代碼;program部分的程式碼實現了程式的預期目的。

 

注意

也可以在interface(介面)部分為類聲明執行個體變數。從Xcode 4.2開始,已經可以在implementation(實現)部分添加執行個體變數,這是為了能夠以一種更好的方式來定義類。在後面章節中說明了原因。

以上3個部分存在於每個Objective-C程式中,即使你可能不需要自己編寫每一部分。你會看到,每一部分通常放在它自己的檔案中。然而,目前來說,我們將它們放在一個單獨的檔案中。

 

 

本文節選自《Objective-C
程式設計(第4版)》

電子工業出版社出版

[美]Stephen G. Kochan(斯蒂芬·G·科昌)著

林冀 
範俊朱奕欣譯

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.