위와 같이 프로젝트를 구성한우 아래 소스를 입력한다.
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;
-(Fraction *) 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;
}
-(Fraction *) add: (Fraction *) f{
Fraction *result = [[Fraction alloc] init];
result.numerator = numerator * f.denominator + denominator * f.numerator;
result.denominator = denominator * f.denominator;
[result reduce];
return result;
}
//최대 공약수를 구해서 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
Complex.h
#import <Foundation/Foundation.h>
@interface Complex : NSObject
@property double real, imaginary;
-(void) print;
-(void) setReal:(double)a andImaginary:(double)b;
-(Complex *) add:(Complex *)f;
@end
Complex.m
#import <Foundation/Foundation.h>
#import "Complex.h"
@implementation Complex : NSObject
@synthesize real, imaginary;
-(void) print{
NSLog(@" %g + %gi ", real, imaginary);
}
-(void) setReal:(double)a andImaginary:(double) b{
real = a;
imaginary = b;
}
-(Complex *) add:(Complex *)f{
Complex *result = [[Complex alloc] init];
result.real = real + f.real;
result.imaginary = imaginary + f.imaginary;
return result;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Complex.h"
#import "Fraction.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
id dataValue;//id형은 어떤 클래스의 객체든 저장할 수 있다.
Fraction *f1 = [[Fraction alloc] init];
Complex *c1 = [[Complex alloc] init];
[f1 setTo:2 over:5];
[c1 setReal:10.0andImaginary:2.5];
//dataValue에 분수를 대입한다.
dataValue = f1;
[dataValue print];
//dataValue에 복소수를 대입한다.
dataValue = c1;
[dataValue print];
}
return 0;
}
실행 화면
'프로그래밍 > Objective C' 카테고리의 다른 글
Objective C - 카테고리의 이해 (0) | 2015.10.09 |
---|---|
Objective C - enum 사용 법 (0) | 2015.09.19 |
Objective C - 메소드 재정의하기 (0) | 2015.09.17 |
Objective C - @class 지시어 사용하기 (0) | 2015.09.15 |
Objective C - 상속으로 확장하기 (새 메소드 추가) (0) | 2015.09.14 |
Objective C - 간단한 예제를 이용한 상속이해 (0) | 2015.09.11 |
Objective C - 세터(setter)와 게터(getter) 자동 생성 및 클래스를 인자로 넘기기 (0) | 2015.09.06 |
Objective C - 인터페이스와 구현파일 나누기 (0) | 2015.09.06 |