21.3.4 处理分数的Calculator类

接下来,到了了解Calculator类的时候了。这个类的概念类似于本书中我们以前开发的相同名称的类。然而在这个例子中,我们的计算器必须知道如何处理分数。下面给出了我们新Calculator类的接口与实现文件。

代码清单21-2 Calculator.h接口文件


import<UIKit/UIKit.h>

import“Fraction.h”

@interface Calculator:NSObject{

Fraction*operand1;

Fraction*operand2;

Fraction*accumulator;

}

@property(retain, nonatomic)Fractionoperand1,operand2,*accumulator;

-(Fraction*)performOperation:(char)op;

-(void)clear;

@end


代码清单21-2 Calculator.m实现文件


import“Calculator.h”

@implementation Calculator

@synthesize operand1,operand2,accumulator;

-(id)init

{

self=[super init];

operand1=[[Fraction alloc]init];

operand2=[[Fraction alloc]init];

accumulator=[[Fraction alloc]init];

return self;

}

-(void)clear

{

if(accumulator){

accumulator.numerator=0;

accumulator.denominator=0;

}

}

-(Fraction*)performOperation:(char)op

{

Fraction*result;

switch(op){

case‘+’:

result=[operand1 add:operand2];

break;

case‘-’:

result=[operand1 subtract:operand2];

break;

case‘*’:

result=[operand1 multiply:operand2];

break;

case‘/’:

result=[operand1 divide:operand2];

break;

}

accumulator.numerator=result.numerator;

accumulator.denominator=result.denominator;

return accumulator;

}

-(void)dealloc

{

[operand1 release];

[operand2 release];

[accumulator release];

[super dealloc];

}

@end