//// Fraction.h// OC7类//// Created by Zoujie on 15/8/23.// Copyright (c) 2015年 Zoujie. All rights reserved.//#import//接口文件@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
接口
//// 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#import "Fraction.h"//导入头文件#define Choose 0int 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;}