<인터페이스와 구현 파일 나누기>
Interface 부분은 *.h 파일로 만들고
Implementation 부분 + program 부분은 main 소스파일(*.m)로 만들면 된다.
메인 파일 만들때 #import "파일이름.h" 추가하는 것은 잊지 말아야 한다.
또한 implementation, program 파일은 따로따로 만들어 주는 것이 정석이다.
<자동 생성 접근자 메서드>
Object-2.0 부터는 세터와 게터 메서드(둘다 합쳐서 접근자 메서드라고 한다.)를 자동으로 생성할 수 있다.
1. 인터페이스 부분에서 @property 지시어를 사용하여 지정한다.
임플리멘트에 @synthesize 넣어주면 컴파일러가 자동으로 생성된다.
@interface Fraction : NSObject
{
int numerator;
int denominator;
}
@property int numerator, denominator;
- (void) print;
- (void) convertToNum;
@end
#import "Fraction.h"
@implement Fraction
@synthesize numerator, denominator;
- (void) print
.....
- (double) convertToNum
.....
@end
<점 연산자를 사용하여 프로퍼티에 접근하기>
[myFraction numerator] = myFraction.numerator
myFraction.numerator = value 는 [myFraction.numerator : value] 로 나타낼 수도 있다.
ex. [myFraction setNumerator : 1];
myFraction.numerator = 1;
<메서드에 여러 인수 넘겨주기>
[myFraction setNumerator : 1 andDenominator : 3];
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int numerator;
int denominator;
}
@property int numerator, denominator;
- (void) print;
- (void) setTo : (int) n over: (int) d;
- (double) convertToNum;
- (void) add: (Fraction *) f;
- (void) reduce;
@end
@implementation Fraction
@synthesize numerator, denominator;
- (void) print
{
NSLog(@"%i%i", numerator, denominator);
}
- (double) convertToNum
{
if (denominator!=0)
return (double) numerator / denominator;
else
return 1;
}
- (void) setTo : (int) n over: (int) d
{
numerator = n;
denominator = d;
}
- (void) add: (Fraction *) f
{
numerator = numerator * f.denominator + denominator * f.numerator;
denominator = denominator * f.denominator
}
- (void) reduce // 약분
{
int u = numerator;
int v = denominator;
int temp;
while (v!=0) {
temp = u % v;
u=v;
v=temp;
}
numerator /= u;
denominator /= u;
}
@end
int main(int argc, char *argv[])
{
Fraction *aFraction = [[Fraction alloc] init];
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
[aFraction setTo : 1 over: 2];
[bFraction setTo : 1 over: 4];
[aFraction print];
NSLog(@"+");
[bFraction print];
NSLog(@"=");
[aFraction add: bFraction];
[aFraction reduce];
[aFraction print];
[aFraction release];
[bFraction release];
[pool drain];
return 0;
}
// 분수 계산하기
#import "Fraction.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Fraction * aFraction = [[Fraction alloc] init];
Fraction *sum = [[Fraction alloc] init], *sum2;
int i, n, pow2;
[sum setTo : 0 over : 1];
NSLog(@"Enter your value for n: ");
scanf("%i", &n);
pow2 = 2;
for(i=1, i<=n; ++i){
[aFraction setTo : 1 over : pow2];
sum2 = [sum add: aFraction];
[sum release];
sum = sum2;
pow2 *= 2;
}
NSLog(@"After %i iterations, the sum is %g",n, [sum convertToNum]);
[aFraction release];
[sum release];
[pool drain];
return 0;
}
출처 : Programming in Object-C 2.0 / 스티븐 코찬 지음, 박세헌 옮김 / 인사이트 출판