2011-07-28 8 views
0

データのカプセル化で何を返すのか分かりません。あなたはクラスの分数がある場合Objective-Cとデータのカプセル化

// Program to access instance variables 
#import <Foundation/Foundation.h> 

@interface Fraction: NSObject 
{ 
    int numerator; 
    int denominator; 
} 

-(void) print; 
-(void) setNumerator: (int) n; 
-(void) setDenominator: (int) d; 
-(int) numerator; 
-(int) denominator; 

@end 

@implementation Fraction 
-(void) print 
{ 
NSLog (@"%i/%i", numerator, denominator); 
} 

-(void) setNumerator: (int) n 
{ 
numerator = n; 
} 

-(void) setDenominator: (int) d 
{ 
denominator = d; 
} 

-(int) numerator 
{ 
return numerator; 
} 

-(int) denominator 
{ 
return denominator; 
} 

@end 

int main (int argc, char *argv[]) 
{ 
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
Fraction *myFraction = [[Fraction alloc] init]; 

// Set fraction to 1/3 

[myFraction setNumerator: 1]; 
[myFraction setDenominator: 3]; 

// Display the fraction 

NSLog (@"The value of myFraction is: %i/%i", [myFraction numerator], [myFraction denominator]); 

[myFraction release]; 
[pool drain]; 

return 0; 
} 

事前

+1

完全なクラス定義ですか? – Nico

+1

質問する前に、Cの使い方、Obj-Cの使い方を学んでみてください。 – jtbandes

+0

@jtbandes - 最初にCを学ぶのはなぜですか?あなたはC++の質問者と同じことを言いますか? – KevinDTimm

答えて

1

のおかげでは: たとえば、新しいメソッドを定義しながら、

@interface Fraction{ 
    int _numerator; 
    int _denominator; 
} 

-(int) numerator; 
-(int) denominator; 

@end 


@implementation Fraction 

–(int) numerator 
{ 
return _numerator; 
} 

–(int) denominator 
{ 
return _denominator; 
} 

//setters 

@end 

をその後、我々は、取得するために他のクラスでは、このクラスを使用することができます小数点のオブジェクトの分子/分母:

//some other class 
Fraction* fraction = [[Fraction alloc]init]; 
//set numerator/denominator 
int fractionNumerator = [fraction numerator]; 

私たちは何ですか?上記で行われたaveはFractionオブジェクトが作成され、intを返すgetNumeratorメソッドが呼び出されます。これをfractionNumeratorに代入することで、この戻り値を取得します。

私はこれがあなたの後だったことを望みます..

+1

私はコードを編集して、標準的なココアのコンベンションに従いました。 'get ...'は、引数の中でポインタを使って何かを返すときにだけ使うべきです。標準getterに 'get'を置かないでください。それ以外の場合は、KVCを使用する際に大きな問題があります。 – Yuji