OC2_分数类

//

//  Fraction.h

//  OC2_分数类

//

//  Created by zhangxueming on 15/6/10.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <Foundation/Foundation.h>



@interface Fraction : NSObject

{

    NSInteger _numerator;

    NSInteger _denominator;

}



- (id)initWithNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator;



- (NSInteger)numerator;

- (NSInteger)denominator;



- (void)setNumerator:(NSInteger)aNumerator;

- (void)setDenominator:(NSInteger)aDenominator;

- (void)setNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator;



- (void)addFraction:(Fraction *)aFraction;

- (void)subFraction:(Fraction *)aFraction;

- (void)mulFraction:(Fraction *)aFraction;

- (void)divFraction:(Fraction *)aFraction;



- (void)reduceFraction;



- (void)printFraction;



+ (void)testFraction;



@end
//

//  Fraction.m

//  OC2_分数类

//

//  Created by zhangxueming on 15/6/10.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "Fraction.h"



@implementation Fraction



- (id)initWithNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator

{

    if (self = [super init]) {

        _numerator = aNumerator;

        _denominator = aDenominator;

    }

    return self;

}



- (NSInteger)numerator

{

    return self->_numerator;

}

- (NSInteger)denominator

{

    return self->_denominator;

}



- (void)setNumerator:(NSInteger)aNumerator

{

    self->_numerator = aNumerator;

}

- (void)setDenominator:(NSInteger)aDenominator

{

    self->_denominator = aDenominator;

}



- (void)setNumerator:(NSInteger)aNumerator andDenominator:(NSInteger)aDenominator

{

    self->_numerator = aNumerator;

    self->_denominator = aDenominator;

}



- (void)addFraction:(Fraction *)aFraction

{

    self->_numerator = [self numerator] * [aFraction denominator] + [self denominator] * [aFraction numerator];

    self->_denominator = [self denominator] * [aFraction denominator];

}

- (void)subFraction:(Fraction *)aFraction

{

    self->_numerator = [self numerator] * [aFraction denominator] - [self denominator] * [aFraction numerator];

    self->_denominator = [self denominator] * [aFraction denominator];

}



- (void)mulFraction:(Fraction *)aFraction

{

    _numerator = [self numerator] * [aFraction numerator];

    _denominator = [self denominator] * [aFraction denominator];

}



- (void)divFraction:(Fraction *)aFraction

{

    _numerator = [self numerator] * [aFraction denominator];

    _denominator = [self denominator] * [aFraction numerator];

}



- (void)reduceFraction

{

    NSInteger n = _numerator;

    NSInteger d = _denominator;

    while (d) {

        NSInteger temp = n%d;

        n = d;

        d = temp;

    }

    _numerator /= n;

    _denominator /= n;

}



- (void)printFraction

{

    NSLog(@"%ld/%ld", [self numerator], [self denominator]);

}



+ (void)testFraction

{

    Fraction *f1 = [[Fraction alloc] initWithNumerator:1 andDenominator:4];

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

    [f2 setNumerator:1 andDenominator:4];

    [f1 addFraction:f2];

    [f1 reduceFraction];

    [f1 printFraction];

}

@end
//

//  main.m

//  OC2_分数类

//

//  Created by zhangxueming on 15/6/10.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <Foundation/Foundation.h>

#import "Fraction.h"



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

    @autoreleasepool {

        [Fraction testFraction];

    }

    return 0;

}

 

你可能感兴趣的:(oc)