//Fraction.h
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property int upper, lower;
-(void)print;
-(void)add:(Fraction*)bFraction;
-(void)reduce;
@end
//Fraction.m
#import "Fraction.h"
@implementation Fraction
@synthesize upper, lower;
-(void)print{
NSLog(@"%d/%d", upper, lower);
}
-(void)add:(Fraction*)bFraction{
upper = upper* bFraction.lower + bFraction.upper * lower;
lower *= bFraction.lower;
}
-(void)reduce{
int u = (upper > lower? upper: lower), v = (lower > upper? upper: lower), temp;
printf("u0 = %d\n", u);
printf("v0 = %d\n", v);
while(u % v != 0){
temp = u % v;
u = v;
v = temp;
}
upper /= v;
lower /= v;
printf("u = %d\n", u);
}
@end
//main.m
#import "Fraction.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Fraction *aFraction = [[Fraction alloc] init];
aFraction.upper = 1;
aFraction.lower = 4;
Fraction *bFraction = [[Fraction alloc] init];
bFraction.upper = 1;
bFraction.lower = 2;
[aFraction add: bFraction];
[aFraction reduce];
[aFraction print];
}
return 0;
}
或在add:方法中使用[self reduce]以简化。self代指接收消息(调用方法)的对象,在此处即aFractiion。