I am setting up a basic geometry class where I define a rectangle and can manipulate the width and height along with calculating the area and perimeter. Everything works and outputs fine, except the perimeter and area variables return as zero. I don't know how to set the variable properly within itself or during the @implementation
, so I'm sure it is showing the zero from when the variable is first initialized (before the width and height are set).
I'm inexperienced with OOP and ObjC so I may be missing something simple.
#import <Foundation/Foundation.h>
// @interface setup as required.
@interface Rectangle: NSObject
-(void) setWidth: (int) w;
-(void) setHeight: (int) h;
-(int) width;
-(int) height;
-(int) area;
-(int) perimeter;
-(void) print;
@end
// @implementation setup for the exercise.
@implementation Rectangle {
int width;
int height;
int perimeter;
int area;
}
// Set the width.
-(void) setWidth: (int) w {
width = w;
}
// Set the height.
-(void) setHeight: (int) h {
height = h;
}
// Calculate the perimeter.
-(int) perimeter {
return (width + height) * 2;
}
// Calculate the area.
-(int) area {
return (width * height);
}
-(void) print {
NSLog(@"The width is now: %i.", width);
NSLog(@"The height is now: %i.", height);
NSLog(@"The perimeter is now: %i.", perimeter);
NSLog(@"The area is now: %i.", area);
}
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
// Create an instance of Rectangle.
Rectangle *theRectangle;
theRectangle = [Rectangle alloc];
theRectangle = [theRectangle init];
// Use the designed methods.
[theRectangle setWidth: 100];
[theRectangle setHeight: 50];
[theRectangle print];
}
return 0;
}