基类接口部分
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property (nonatomic ) int numerator,denominator;
-(void)setTo:(int) n over:(int) d;
-(void)reduce;//约分
-(NSString *)description;//显示方法重写
@end
基类实现部分
//
// Fraction.m
// 分类
//
// Created by smartlei on 15/6/8.
// Copyright (c) 2015年 smartlei. All rights reserved.
//
#import "Fraction.h"
@implementation Fraction
@synthesize numerator,denominator;
-(void)setTo:(int) n over:(int) d
{
numerator =n;
denominator=d;
}
-(void)reduce
{
int u=numerator;
int v=denominator;
int temp;
while (v!=0)
{
temp=u%v;
u=v;
v=temp;
}
numerator/=u;
denominator/=u;
}
-(NSString *)description
{
[self reduce];
return [NSString stringWithFormat:@"%d/%d",numerator,denominator];
}
@end
分类接口集实现可以放在同一个文件中
//
// FractionMathOps.h
// 分类
//
// Created by smartlei on 15/6/17.
// Copyright (c) 2015年 smartlei. All rights reserved.
//
#import "Fraction.h"
//实现Fraction的分类
@interface Fraction (MathOps)
//+
-(Fraction *)add:(Fraction *)f;
//X
-(Fraction *)mul:(Fraction *)f;
//-
-(Fraction *)sub:(Fraction *)f;
//约分
-(Fraction *)div:(Fraction *)f;
@end
//实现部分
@implementation Fraction (MathOps)
//将两个分数相加
//a/b+c/d=(a*d)+(b*C)/db
-(Fraction *)add:(Fraction *)f
{
//定义临时变量
Fraction *result=[Fraction new];
result.numerator=(self.numerator*f.denominator)+(self.denominator*f.numerator);
result.denominator=self.denominator*f.denominator;
[result reduce];
return result;
}
//将两个数相乘
-(Fraction *)mul:(Fraction *)f
{
Fraction *result=[Fraction new];
result.numerator=(self.numerator*f.numerator);
result.denominator=self.denominator*f.denominator;
return result;
}
//两个分数相减
-(Fraction *)sub:(Fraction *)f
{
Fraction *result=[Fraction new];
result.numerator=(self.numerator*f.denominator)-(self.denominator*f.numerator);
result.denominator=self.denominator*f.denominator;
return result;
}
//两个分数相除
-(Fraction *)div:(Fraction *)f
{
Fraction *result=[Fraction new];
result.numerator=(self.numerator*f.denominator);
result.denominator=self.denominator*f.numerator;
return result;
}
@end
测试主函数
//
// main.m
// 分类
//
// Created by smartlei on 15/6/8.
// Copyright (c) 2015年 smartlei. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Fraction.h"
#import "FractionMathOps.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Fraction *a=[[Fraction alloc] init];
[a setTo:5 over:6];
Fraction *b=[[Fraction alloc] init];
[b setTo:3 over:4];
Fraction *c=[[Fraction alloc] init];
//实现两个数相加
c=[a add:b];
NSLog(@"[a add:b]=%@",c);
//实现两个数相减
c=[a sub:b];
NSLog(@"[a sub:b]=%@",c);
//实现两个分数相乘
c=[a mul:b];
NSLog(@"[a mul:b]=%@",c);
//实现两个分数相除
c=[a div:b];
NSLog(@"[a div:b]=%@",c);
}
return 0;
}