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