#import <Cocoa/Cocoa.h>
@interface PolygonShape : NSObject {
int numberOfSides;
int minimumNumberOfSides;
int maximumNumberOfSides;
float angleInDegrees;
float angleInRadians;
NSString* name;
}
- (void) dealloc;
- (id)init;
- (id)initWithNumberOfSides: (int)sides minimumNumberOfSides:(int)min maximumNumberOfSides:(int)max;
- (void) description;
@property (readwrite) int numberOfSides;
@property (readwrite) int minimumNumberOfSides;
@property (readwrite) int maximumNumberOfSides;
@property (readonly) float angleInDegrees;
@property (readonly) float angleInRadians;
@property (readonly) NSString* name;
@end
#import "PolygonShape.h"
@implementation PolygonShape
@synthesize numberOfSides;
@synthesize minimumNumberOfSides;
@synthesize maximumNumberOfSides;
- (void)dealloc
{
NSLog(@"dealloc is called. This Polygon ivar is destroyed");
[super dealloc];
}
- (void) setNumberOfSides: (int) value
{
if (value < minimumNumberOfSides)
{
NSLog(@"Invalid number of sides: %d is less than the maximum of %d allowed", value, minimumNumberOfSides);
}
else if (value > maximumNumberOfSides)
{
NSLog(@"Invalid number of sides: %d is greater than the maximum of %d allowed", value, maximumNumberOfSides);
}
else
{
numberOfSides = value;
}
}
- (void) setMinimumNumberOfSides: (int) value
{
if (value > 2)
{
minimumNumberOfSides = value;
}
else
{
NSLog(@"Invalid minimum number of sides: %d is less than the minimum of 2 allowed", value);
}
}
- (void) setMaximumNumberOfSides: (int) value
{
if (value <= 12)
{
maximumNumberOfSides = value;
}
else
{
NSLog(@"Invalid maximum number of sides: %d is greater than the maximum of 12 allowed", value);
}
}
- (id)init
{
[self initWithNumberOfSides:5 minimumNumberOfSides:3 maximumNumberOfSides:10];
return self;
}
- (id)initWithNumberOfSides: (int)sides minimumNumberOfSides:(int)min maximumNumberOfSides:(int)max
{
[super init];
self.minimumNumberOfSides = min;
self.maximumNumberOfSides = max;
self.numberOfSides = sides;
return self;
}
- (float)angleInDegrees
{
return (180 * (numberOfSides - 2) / numberOfSides);
}
- (float)angleInRadians
{
return self.angleInDegrees * 2 * 3.14 / 360;
}
- (NSString*)name
{
NSMutableString* nameOfPolygon = [NSMutableString string];
switch (numberOfSides)
{
case 3 : nameOfPolygon = @"triangle"; break;
case 4 : nameOfPolygon = @"square"; break;
case 5 : nameOfPolygon = @"pentagon"; break;
case 6 : nameOfPolygon = @"hexagon"; break;
case 7 : nameOfPolygon = @"heptagon"; break;
case 8 : nameOfPolygon = @"octagon"; break;
case 9 : nameOfPolygon = @"enneagon"; break;
case 10 : nameOfPolygon = @"decagon"; break;
case 11 : nameOfPolygon = @"hendecagon"; break;
case 12 : nameOfPolygon = @"dodecagon"; break;
default : nameOfPolygon = @"";
}
return nameOfPolygon;
}
- (void)description
{
NSLog(@"Hello, I'm a %d-sided polygon (aka a %@) with angles of %f degrees (%f radians)", numberOfSides, self.name, self.angleInDegrees, self.angleInRadians);
}
@end
'Programming > Stanford Class' 카테고리의 다른 글
Chapter 3. Custom Class, Memory Management, and Obj-C Properties (0) | 2009.06.24 |
---|---|
Chapter 2. Using Objective-C, Foundation Framework (0) | 2009.06.24 |
Stanford Class (CS193P) - IPhone Application Programming (0) | 2009.06.24 |
댓글을 달아 주세요