Hey everyone,
This is my code for Exercise 3 Chapter 11. I have looked at others' solutions in the forum and just tried this which may appear a little less complicated.
My question is: Is it not good programming practice because it's so simple, despite the fact that it works?
Thank you in advance,
Apostle.
NSComparisonMethods.h
#import "Fraction.h"
@interface Fraction (NSComparisonMethods)
@end
NSComparisonMethods.m
#import "NSComparisonMethods.h"
@implementation Fraction (NSComparisonMethods)
-(BOOL) isEqualTo: (id) object
{
if ( (double) numerator/denominator == (double) [object numerator] / [object denominator] )
return YES;
else
return NO;
}
-(BOOL) isLessThanOrEqualTo: (id) object
{
if ( (double) numerator/denominator <= (double) [object numerator] / [object denominator] )
return YES;
else
return NO;
}
-(BOOL) isLessThan: (id) object
{
if ( (double) numerator/denominator < (double) [object numerator] / [object denominator] )
return YES;
else
return NO;
}
-(BOOL) isGreaterThanOrEqualTo: (id) object
{
if ( (double) numerator/denominator >= (double) [object numerator] / [object denominator] )
return YES;
else
return NO;
}
-(BOOL) isGreaterThan: (id) object
{
if ( (double) numerator/denominator > (double) [object numerator] / [object denominator] )
return YES;
else
return NO;
}
-(BOOL) isNotEqualTo: (id) object
{
if ( (double) numerator/denominator != (double) [object numerator] / [object denominator] )
return YES;
else
return NO;
}
@end
Ex11.3
#import "Fraction.h"
#import "NSComparisonMethods.h"
#import "MathOps.h"
#import "Comparison.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Fraction *a, *b;
a = [[Fraction alloc] initWith: 1: 1];
b = [[Fraction alloc] initWith: 2: 4];
NSLog (@"%i/%i = %i/%i? %i", a.numerator, a.denominator, b.numerator, b.denominator, [a isEqualTo: b]);
NSLog (@"%i/%i <= %i/%i? %i", a.numerator, a.denominator, b.numerator, b.denominator, [a isLessThanOrEqualTo: b]);
NSLog (@"%i/%i < %i/%i? %i", a.numerator, a.denominator, b.numerator, b.denominator, [a isLessThan: b]);
NSLog (@"%i/%i >= %i/%i? %i", a.numerator, a.denominator, b.numerator, b.denominator, [a isGreaterThanOrEqualTo: b]);
NSLog (@"%i/%i > %i/%i? %i", a.numerator, a.denominator, b.numerator, b.denominator, [a isGreaterThan: b]);
NSLog (@"%i/%i != %i/%i? %i", a.numerator, a.denominator, b.numerator, b.denominator, [a isNotEqualTo: b]);
[a release];
[b release];
[pool drain];
return 0;
}