黑马程序员--分类


基类接口部分

#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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值