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