#include #include #include @interface Hello : NSObject + (instancetype)new; - (void)sayHello; @end @implementation Hello + (instancetype)new { return [[self alloc] init]; } - (void)sayHello { printf("Hello from Objective-C!\n"); } @end @interface ExtendedHello: Hello - (void)sayHello; - (void)baldNiko; @end @implementation ExtendedHello - (void)baldNiko { printf("67 67 bald niko 67\n"); } - (void)sayHello { [super sayHello]; [self baldNiko]; } @end @interface DoubleExtendedHello: ExtendedHello - (void)baldNiko; @end @implementation DoubleExtendedHello - (void)baldNiko { printf("bald niko with CHEESE !!!\n"); } @end @interface Player : NSObject { int x; int y; NSString *name; } - (instancetype)init; - (void)setX:(int)x; - (void)setY:(int)y; - (void)setName:(NSString *)name; - (void)sayHi; + (int)playerCount; @end @implementation Player static int playerCount = 0; - (instancetype)init { self = [super init]; if (self) { x = 0; y = 0; name = @"Player"; playerCount++; } return self; } - (void)setX:(int)val { x = val; } - (void)setY:(int)val { y = val; } - (void)setName:(NSString *)val { name = val; } - (void)sayHi { printf("Hello, I'm %s, and I am at X: %d, Y: %d!\n", [name UTF8String], x, y); } + (int)playerCount { return playerCount; } @end int main(void) { Hello *hello = [Hello new]; [hello sayHello]; NSString *string = @"Test\n"; printf([string UTF8String]); ExtendedHello *ehello = [ExtendedHello new]; [ehello sayHello]; DoubleExtendedHello *dehello = [DoubleExtendedHello new]; [dehello sayHello]; Player *player = [Player new]; [player setName:@"John Hackclub"]; [player setX:27]; [player setY:538]; [player sayHi]; printf("player count: %d\n", [Player playerCount]); Player *player2 = [Player new]; [player2 setName:@"French Hacker"]; [player2 setX:67]; [player2 setY:41]; [player2 sayHi]; printf("player count: %d\n", [Player playerCount]); return 0; }