#import <Foundation/Foundation.h>
//-------------- interface section -----------------
@interface Fraction : NSObject
{
int numerator;
int denominator;
}
-(void) print;
/*
클래스메서드는 인스턴스 다른 곳의 인스턴스변수에 접근할 수 없다
따라서 함수 setter/getter를 만들어 함수의 return값을 통해 인스턴스 변수의 값을 참조할 수 있다.
또는 헤더파일에서 @property을 설정할 수 있다. 그러면 자동으로 setter/getter로 사용 할 수 있도록 속성을 설정할 수 있다.
actionscript와 다르게 같은 이름의 변수와 함수명에 대하여 에러를 발생하진 않는다.
*/
-(void) setNumerator:(int) n;//numerator의 setter
-(void) setDenominator:(int) d;//denominator의 setter
-(int) numerator; //numerator의 getter
-(int) denominator;//denominator의 getter
@end
//--------------- implementation section ---------------
@implementation Fraction
-(void) print
{
NSLog(@"%i/%i", numerator, denominator);
}
//인스턴스 변수의 setter부분
-(void) setNumerator:(int) n
{
numerator = n;
}
-(void) setDenominator:(int) d
{
denominator = d;
}
//인스턴스 변수의 getter부분
-(int) numerator
{
return numerator;
}
-(int) denominator
{
return denominator;
}
@end
//--------------- program section ----------------
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// insert code here...
Fraction*myFraction = [Fraction new];
[myFraction setNumerator:1];
[myFraction setDenominator:3];
NSLog(@"The Value of myFraction is %i/%i", [myFraction numerator] , [myFraction denominator]);
[myFraction release];
[pool drain];
return 0;
}