Finally! Started on Objective C

I’ve finally got round trying some Objective C programming beyond outputting “hello world” with what is in effect ANSI C. I’m coming from a Perl background with a a smattering of other experience such as ANSI C, ASP and PHP all a looooong time ago. I recently read through a couple of Ruby texts which were very good, but to be honest I couldn’t find a reason to stop using Perl and start with Ruby. It did give me a good course on Object Oriented programming, which as you would expect by the name, Objective C is. I’m using “Programming in Objective-C” by Stephen G. Kochan as my text, lets hope its a good as the Llama book was for Perl. The first two chapters are pretty much background, but by the end of Chapter 3 there is a worthwhile exercise to which is to define a class, create an objet from the class, use it and get rid of it. Here’s my first stab, so stand by…

#import 

// INTERFACE SECTION

@interface XYPoint: NSObject
{
    int x;
    int y;
}

-(void) print;
-(void) setX: (int) xentry;
-(void) setY: (int) yentry;

@end

// IMPLEMENTATION SECTION

@implementation XYPoint

-(void) print;
{
printf("%i,%i", x,y);
}

-(void) setX:(int)xentry
{
    x=xentry;
}

-(void) setY:(int)yentry
{
    y=yentry;
}

@end

int main (int argc, const char * argv[])
{

    @autoreleasepool {

        XYPoint *myXYP = [[XYPoint alloc] init];
        [myXYP setX:20];
        [myXYP setY:30];
        printf("The coordinate is :");
        [myXYP print];
        printf("\n");

    }
    return 0;
}

Incredibly it compiles and runs without error! The output is:

The coordinate is :20,30
Program ended with exit code: 0

I’m using Xcode 4 after a brief battle with it described in an earlier post. It’s very complicated with a lot of stuff that I certainly don’t need to write Objective-C programs, but the consensus of opinion seems to be that its worth the learning curve to use.

This entry was posted in C and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *