Primeros Pasos con Objective-C

Desde hace un tiempo he estado intrigado con Objective-C. Se trata de un lenguaje que si bien habría sido limitado mayoritariamente al desarrollo de Software para Mac OS X, ha encontrado un nuevo nicho como el lenguaje de desarrollo por excelencia para el iPhone. Tanto es así que este lenguaje experimentó un crecimiento de más del 900% durante el 2008.

Objective-C es un superconjunto de C que agrega Programación Orientada a Objetos basada en Smalltalk. Su sintaxis parece un poco extraña al principio para quienes estamos acostumbrados a trabajar en lenguajes “hijos” de C++ como Java, C# e incluso Python (agrego Python porque pienso varias de sus convenciones se encuentran fuertemente ligadas al diseño de C++, en particular la notación de punto).

Al igual que en C++, en Objective-C las clases se implementan en dos archivos: uno con la interfaz, cuya extensión es .h y uno con la implementación, cuya extensión es .m. También se puede mezclar código Objective-C y C++ en un mismo archivo de implementación que debe denotarse con la extensión .mm.

No hay como un pequeño ejemplo de código para realmente mostrar el look-and-feel del lenguaje. En él declararemos e implementaremos una clase denominada “MyClass” y la utilizaremos desde una sencilla función main.

Primero declararemos la interfaz en el archivo MyClass.h:

#import <Foundation/NSObject>
@interface MyClass : NSObject
{
    int x;
    int y;
}
-(void)printCoords;
-(void)initFromCoords:(int)nx y:(int)ny;
@end

Esta interfaz declara que las instancias de esta clase contarán con dos variables de tipo int y dos métodos: printCoords, que imprimirá en consola las variables x e y, e initFromCoords que recibrá dos enteros por parametro y los asignará a x e y.

A continuación implementamos esta interfaz en el archivo MyClass.m:

#import "MyClass.h"

#import <stdio.h>

@implementation MyClass

-(void)printCoords
{
    printf("(%i,%i)\n", x, y);
}

-(void)initFromCoords:(int)nx y:(int)ny
{
    x = nx;
    y = ny;
}

@end

Con esto acabamos de implementar la interfaz de “MyClass”. Nótese la inclusión del cabezal de C stdio.h y el uso de la función printf.

Finalmente, implementamos una sencilla función main para probar nuestra clase en el archivo main.m:

#import "MyClass.h"

int main()
{
    MyClass* myInstance = [MyClass alloc];
    [myInstance initFromCoords:1 y:2];
    [myInstance printCoords];
    return 0;
}

Como pueden ver, aquí es donde la sintaxis difiere completamente con los lenguajes “estilo C++”. En Objective-C los mensajes son enviados a los objetos utilizando una notación de corchetes de la forma: [instancia mensaje], en vez de utilizar la clásica notación de punto (o flecha). El mensaje puede incluir opcionalmente parámetros, como se muestra en la invocación del método initFromCoords.

Para compilar este ejemplo desde la línea de comando (en Mac OS X) utilizamos el siguiente comando:

gcc -x objective-c MyClass.m main.m -Framework Foundation

Una vez compilado, ejecutamos la aplicación y -si todo está bien- deberíamos obtener el siguiente resultado:

$ ./a.out
(1,2)

Espero que este sencillo ejemplo sirva para ilustrar algunos de los conceptos detrás del lenguaje, si bien esto es apenas la punta del iceberg. Pueden encontrar una introducción bastante amigable aquí, en el sitio oficial de desarrollo de Apple.

This entry was posted in Mac OS X, Objective-C, Programacion, Tutoriales. Bookmark the permalink.

2 Responses to Primeros Pasos con Objective-C

  1. Pingback: Varrojo@Linux » Manejo de Memoria en Objective-C y Cocoa

  2. Argentiphone says:

    Muchas gracias, puedes visitar también. http://www.argentiphone.com.ar

Comments are closed.