分类(类别)和扩展

#import <Foundation/Foundataion.h>


@interface Fraction:NSObject
@property int num,den;
-(void)print;
@end
/*******/
#import "Fraction.h"
@implementation Fraction
-(void)print
{
 NSLog(@"The Fraction is %i/%i",self.num,self.den);
}
@end


/****************Catalogue*********************/
#import "Fraction.h"
@interface Fraction(math)
//-(Fraction *)addWithFrac1:(Fraction*)frac1 andFrac2:(Fraction *)frac2;


-(void)add:(Fraction *)a;
-(void)sub:(Fraction *)a;
-(void)mul:(Fraction *)a;
-(void)div:(Fraction *)a;
@end
/*******/
#import "Fraction+math.h"
@implementation Fraction (math)
-(void)add:(Fraction *)a
{
 self.num=self.num*a.den+self.den*a.num;
 self.den=self.den*a.den;
}
-(void)sub:(Fraction *)a
{
 self.num=self.num*a.den-self.den*a.num;
 self.den=self.den*a.den;
}
-(void)mul:(Fraction *)a
{
 self.num=self.num*a.num;
 self.den=self.den*a.den;
}
-(void)div:(Fraction *)a
{
 self.num=self.num*a.den;
 self.den=self.den*a.num;
}
@end


/**********Extension,在原来的Fraction.m文件中******************/
#import "Fraction.h"
@interface Fracion()
-(void)reduce;
@end

@implementation Fraction
-(void)reduce
{
 int u=self.num;
 int v=self.den;
 int temp;

//分数是负数的情况,求余的时候最后可能会有些问题,老师把u,v分开考虑了下,但我觉得这样也可以
 if(u*v<0)
  u*=-1;
 while(v){
 temp=v;
 v=u%v;
 u=temp;
 }
 self.num/=u;
 self.den/=u;
}
-(void)print //重写print函数,让得到的值先约分
{
 [self reduce];
 NSLog(@"The fraction is %i/%i",self.num,self.den);
}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值