Here's my take on 4.8. Please note: I am using Xcode 4.2 with ARC enabled, so I am not using release, dealloc, etc.
Thoughts/comments appreciated
//
#import <Foundation/Foundation.h>
// ----- Implement a Calculator Class -----
@interface Calculator : NSObject
{
@private
double accumulator;
}
// ----- Accumulator Methods -----
-(void) setAccumulator: (double) value;
-(void) clear;
-(double) accumulator;
// ----- Arithmetic Methods -----
-(double) add: (double) value;
-(double) subtract: (double) value;
-(double) multiply: (double) value;
-(double) divide: (double) value;
@end
@implementation Calculator
-(void) setAccumulator:(double)value
{
accumulator = value;
}
-(void) clear
{
accumulator = 0;
}
-(double) accumulator
{
return accumulator;
}
-(double) add:(double)value
{
accumulator += value;
return accumulator;
}
-(double) subtract:(double)value
{
accumulator -= value;
return accumulator;
}
-(double) multiply:(double)value
{
accumulator *= value;
return accumulator;
}
-(double) divide: (double)value
{
accumulator /= value;
return accumulator;
}
@end
int main (int argc, const char * argv[])
{
@autoreleasepool {
Calculator *deskCalc = [[Calculator alloc] init];
[deskCalc setAccumulator: 100.0];
NSLog (@"%g", [deskCalc accumulator]);
[deskCalc add: 200.];
NSLog (@"Plus 200 is %g", [deskCalc accumulator]);
[deskCalc divide: 15.0];
NSLog (@"Divided by 15 is %g", [deskCalc accumulator]);
[deskCalc subtract: 10.0];
NSLog (@"Minus 10 is %g", [deskCalc accumulator]);
[deskCalc multiply: 5];
NSLog (@"Times 5 is %g, the final result.", [deskCalc accumulator]);
}
return 0;
}