Hi Steve,
First sorry for my english.
I am little stumped on this chapter, because use of @class directive in real life is not crystal clear. As I could understand you, no need for it at all, because we can do it all through defining new class XYPoint (including all variables in that class). This is my version (sorry, it is on croatian), and please be patient to look at it, and please help me to understand what is difference by including @class directive in another .h file, and defining separate class.
This is the code:
XYPoint.h
#import <Foundation/Foundation.h>
@interface XYPoint : NSObject
{
int x;
int y;
}
@property int x, y;
-(void) setX: (int) xKoordinata setY: (int) yKoordinata;
@end
XYPoint.m
#import "XYPoint.h"
@implementation XYPoint
@synthesize x, y;
-(void) setX: (int) xKoordinata setY: (int) yKoordinata
{
x = xKoordinata;
y = yKoordinata;
}
@end
Pravokutnik.h
#import <Foundation/Foundation.h>
@interface Pravokutnik : NSObject
{
int sirina;
int visina;
}
@property int sirina, visina;
-(int) povrsina;
-(int) opseg;
-(void) setSirina:(int) s setVisina: (int) v;
@end
Pravokutnik.m
#import "Pravokutnik.h"
@implementation Pravokutnik
@synthesize sirina, visina;
-(int) povrsina
{
return (sirina + visina) * 2;
}
-(int) opseg
{
return sirina * visina;
}
-(void) setSirina:(int) s setVisina: (int) v
{
sirina = s;
visina = v;
}
@end
mojPravokutnik.m
#import <Foundation/Foundation.h>
#import "Pravokutnik.h"
#import "XYPoint.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Pravokutnik *mojPravokutnik = [[Pravokutnik alloc] init];
XYPoint *mojaLokacija = [[XYPoint alloc] init];
[mojaLokacija setX:100 setY:200];
[mojPravokutnik setSirina:5 setVisina:8];
NSLog (@"Sirina = %i, Visina = %i", mojPravokutnik.sirina, mojPravokutnik.visina);
NSLog (@"Povrsina = %i, Opseg = %i", mojPravokutnik.povrsina, mojPravokutnik.opseg);
NSLog (@"Lokacija na %i, %i", mojaLokacija.x, mojaLokacija.y);
[mojaLokacija release];
[mojPravokutnik release];
[pool drain];
return 0;
}