프로그래밍/Objective C

Objective C - 세터(setter)와 게터(getter) 자동 생성 및 클래스를 인자로 넘기기

가카리 2015. 9. 6. 18:27
반응형

 

Fraction.h 파일에서 멤버 변수에 @property를 지정해주면 자동으로

 

세터 함수와 게터 함수가 생성된다. Fraction.m파일에서는 @synthesize 를 멤버변수에 해줘야함..

 

Fraction.h

 

 

#import <Foundation/Foundation.h>

 

@interface Fraction : NSObject

 

//아래와 같이 하면 자동으로 세터(setter) 게터(getter) 생성된다.

@property int numerator, denominator;

 

-(void) print;

-(void) setTo: (int) n over: (int) d;

-(double) convertToNum;

-(void) add: (Fraction *) f;

-(void) reduce;

 

@end

 

 

Fraction.m

 

 

 

#import "Fraction.h"

 

@implementation Fraction

 

 

//세터(setter) 게터(getter) 생성시 반드시 아래와 같이 해줘야함

@synthesize numerator, denominator;

 

-(void) print{

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

}

 

-(double) convertToNum{

    if(denominator != 0)

        return (double) numerator / denominator;

    else

        return NAN;

}

 

-(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;

}

 

//최대 공약수를 구해서 numerator 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

 

main.m

 

 

#import <Foundation/Foundation.h>

#import "Fraction.h"

 

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

    @autoreleasepool {

        Fraction *aFraction = [[Fraction alloc] init];

        Fraction *bFraction = [[Fraction alloc] init];

        

        [aFraction setTo: 1 over: 4];//첫번째인자는 1 두번째인자는 4설정

        [bFraction setTo: 1 over: 2];

        

        [aFraction print];

        NSLog(@"+");

        [bFraction print];

        NSLog(@"=");

        

        [aFraction add:bFraction];

        

        //덧셈 결과를 약분하고 표시한다.

        

        [aFraction reduce];

        [aFraction print];

    }

    return 0;

}

 

 

실행 화면

 

 

반응형