OC類

//
//  Fraction.h
//  OC7類
//
//  Created by Zoujie on 15/8/23.
//  Copyright (c) 2015年 Zoujie. All rights reserved.
//

#import <Foundation/Foundation.h>
//接口文件
@interface Fraction : NSObject

#pragma mark - 屬性 自動生成 Setter && Get
@property  int numberator1;
@property  int denominator1;
#pragma mark - Setter && Get
//-(void)setNumerator:(int)n;
//-(void)setDenominator:(int)d;
//-(int)numerator;
//-(int)denominator;
-(double) convertToNum;
-(void)print;

/**
 *  多參數函數
 */
-(void)setNumberator1:(int) n Denominator:(int)d;
/**
 *  add
 */
-(void) add:(Fraction *)f;
/**
 *  相約數
 */
-(void) reduce;
/**
 *  記數
 */
-(int)showpage;
/**
 *  new add
 */
-(Fraction *) newAdd:(Fraction *)f;
/**
 *  減去消息接受着的參數
 */
-(Fraction *) subtract :(Fraction *)f;
/**
 *  乘以
 */
-(Fraction *) multiply :(Fraction *) f;
/**
 *  除以
 */
-(Fraction *) divide :(Fraction *)f;
@end

接口ide

//
//  Fraction.m
//  OC7類
//
//  Created by Zoujie on 15/8/23.
//  Copyright (c) 2015年 Zoujie. All rights reserved.
//

#import "Fraction.h"//雙引號實用於本地文件(本身建立的文件),而不是系統文件
//實現文件  實現部分包含的私有信息

/**
 *  static 關鍵字 局部靜態變量 記錄全部對象調用函數的次數    局部變量 只記錄每一個對象本身調用函數的次數
 */
static int hitCount = 0;//調用次數

@implementation Fraction
//{
//    int numberator;
//    int denominator;
//}

/**
 *  若是省略@synthesize指令,那麼編譯器會自動分別命名底層的實例變量_numberator1,_denominator1.
 */
@synthesize numberator1,denominator1;

//-(void) setNumerator:(int)n
//{
//    numberator = n;
//}
//
//-(void) setDenominator:(int)d
//{
//    denominator = d;
//}

//********setter getter的參數名 不要跟 實例名稱 相同 *********
-(void)setNumberator:(int)numberator
{
    numberator1 = numberator;
}

-(void) setDenominator:(int)denominator
{
    denominator1 = denominator;
}
//-(void) setDenominator:(int)denominator //自動生成Setter
//{
//    denominator = denominator;
//}
-(int)numerator
{
    return numberator1;
}

-(int)denominator
{
    return denominator1;
}

-(void)print
{
        NSLog(@"%i/%i",numberator1,denominator1);
}

-(double)convertToNum
{
    if (denominator1 != 0)
    {
        return (double) numberator1 / denominator1;
    }
    else
    {
        return NAN;
    }
}

-(void)setNumberator1:(int)n Denominator:(int)d
{
    denominator1 = d;
    numberator1 = n;
}

-(void) add:(Fraction *)f
{
    numberator1 = numberator1 * f.denominator1 +denominator1 *f.numberator1;
    denominator1 = denominator1 * f.denominator1;
    
//    self 關鍵字   當前方法的接受着
    [self reduce];
}
/*
 *  new add
 */
-(Fraction *) newAdd:(Fraction *)f
{
    Fraction *result = [Fraction new];
    
    result.numberator1 = numberator1 * f.denominator1 + denominator1 * f.numberator1;
    result.denominator1 = denominator1 * f.denominator1;
    
    [result reduce];
    
    return result;
}
/**
 *  sub
 */
-(Fraction *) subtract:(Fraction *)f
{
    Fraction *result = [Fraction new];
    
    result.numberator1 = numberator1 * f.denominator1 - denominator1 * f.numberator1;
    result.denominator1 = denominator1 * f.denominator1;
    
    [result reduce];
    
    return result;
}
-(void) reduce
{
//局部變量
    int u = numberator1;
    int v = denominator1;
    int temp;
    
    while (v != 0) {
        temp = u % v;
        u = v ;
        v = temp ;
    }
    numberator1 /= u;
    denominator1 /= u;
}

-(int)showpage
{
    int hitCount = 0;
    hitCount ++;
    return hitCount;
}
@end

實現文件函數

//
//  main.m
//  OC7類
//
//  Created by Zoujie on 15/8/23.
//  Copyright (c) 2015年 Zoujie. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Fraction.h"//導入頭文件


#define Choose  0
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        Fraction *myFraction = [Fraction new];
        if (Choose)
        {
//          [myFraction setNumberator1:11];
            myFraction.denominator1 = 11;
//          [myFraction setDenominator1:3];
        myFraction.numberator1 = 3;
        }
        else
        {
            [myFraction setNumberator1:1 Denominator:7];
        }
        NSLog(@"The value of myFraction");
        [myFraction print];
        NSLog(@"The value of myFranction:%i/%i",myFraction.numberator1,myFraction.denominator1);
        
        
//   add        傳入對象參數
        Fraction *afraction = [Fraction new];
        Fraction *bfraction = [Fraction new];
        
        [afraction setNumberator1:1 Denominator:4];
        [bfraction setNumberator1:1 Denominator:2];
        
        [afraction print];
        NSLog(@"+");
        [bfraction print];
        NSLog(@"=");
//        
//        [afraction add:bfraction];
//        [afraction print];
//        
////        reduce 分數相約到最簡形式
//        [afraction reduce];
//        [afraction print];
//        
//        在方法中分配和返回對象
        Fraction *resultFraction;
        resultFraction = [afraction newAdd:bfraction];
        [resultFraction print];
        
        Fraction *subRusult = [bfraction subtract:afraction];
        [subRusult print];
        
        
    }
    return 0;
}
相關文章
相關標籤/搜索