Introducción a objective-c (II): Hola mundo

Como no podía ser de otra forma, y como en cualquier introducción a un lenguaje, en este artículo veremos el clásico Hola Mundo en Objective-C:

HelloWorld.h:
#import 

@interface HelloWorld : NSObject {
 
}
- (void)sayHello;
@end
HelloWorld.m:

#import  
#import "HelloWorld.h"

@implementation HelloWorld

- (void)sayHello
{
    NSLog(@"Hola, mundo, a las %@", [NSCalendarDate calendarDate]);
}

@end
Main.m:
int main (int argc, const char * argv[]) {
     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

     HelloWorld *hw = [[HelloWorld alloc] init];
     [hw autorelease];

    [hw sayHello];

    [pool release];
    return 0;
}

Aunque podría hacerse más sencillo, obviando la clase HelloWorld, he preferido crearla, ya que estamos hablando de un lenguaje orientado a objetos. En Objective-C los fuentes tienen la extensión .m y las interfaces .h (igual que en C). En las interfaces se definen las clases y métodos y se implementan el los .m. No confundir el interfaz de Objective-C o C con el de Java, no tienen nada que ver. Los interfaces, tal como los conocemos en Java, existen también, pero tienen otro nombre y los veremos más adelante. Los que conocéis C++, sabréis que se hace de la misma forma.

Veamos el método main, que es la entrada principal del programa. Detengámonos en la siguiente línea:

HelloWorld *hw = [[HelloWorld alloc] init];

Aquí hacemos varias cosas:
  • Definir un puntero a un objeto HelloWorld.
  • Enviar el mensaje alloc a HelloWorld. Este mensaje nos devuelve una instancia de HelloWorld.
  • A esa instancia le enviamos el mensaje init.
 Tambien se podría haber hecho así:

HelloWorld *hw = [HelloWorld new];

El mensaje new es lo mismo que enviar alloc e init pero en un solo paso. Este último, init, es un método que podemos definir para inicializar cualquier cosa que creamos conveniente cuando se crea una instancia de una clase. Es equivalente a lo que haríamos en el constructor de una clase Java. Veamos ahora como decimos Hola Mundo:

[hw sayHello]

A la instancia de HelloWorld le enviamos el mensaje sayHello. El receptor, hw, acepta el mensaje y ejecuta su código:

NSLog(@"Hola, mundo, a las %@", [NSCalendarDate calendarDate]);

Algunos os preguntaréis donde se define la accesibilidad de los métodos en Objective-C, como public o private. Bien, son todos públicos siempre, ya explicaré como hacer métodos privados.

0 comentarios:

Publicar un comentario