Aprende a programar tus propias aplicaciones para el Iphone (V); Trabajando con clases
Este es el quinto tutorial para aprender a hacer tus propias aplicaciones para iPhone, si te perdiste algún artículo, los tienes aqui.

Hoy vamos a realizar nuestro primer programa trabajando con clases y métodos. Supongamos que tenemos que escribir un programa para trabajar con fracciones, sin los conocimientos necesarios sobre clases, nuestro programa sería algo similar a esto:
// Programa simple para trabajar con fracciones
#import <Foundation/Foundation.h>
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int numerador = 1;
int denominador = 3;
NSLog (@”La fracción es %i/%i”, numerador, denominador);
[pool drain];
return 0;
}
En este programa la fracción esta definida por el numerador y denominador, variables a las cuales se les asigna los valores 1 y 3, este es el mayor problema precisamente de implementar nuestro código de esta manera, ya que si necesitaramos almacenar múltiples variables deberíamos definir un par de variables para cada fracción. Mediante el uso de clases podemos definir una fracción como una entidad y referirnos únicamente a un denominador y a un numerador.
// Programa para trabajar con fracciones – trabajando con clases
#import <Foundation/Foundation.h>
// —–INTERFACE —–
@interface Fraccion: NSObject
{
int numerador;
int denominador;
}
-(void) imprimir;
-(void) setNumerador: (int)n;
-(void) setDenominador: (int) d;
@end
//—-IMPLEMENTACION—–
@implementation Fraccion
-(void) imprimir
{
NSLog(@”%i/%i”, numerador, denominador);
}
-(void) setNumerador: (int) n
{
numerador = n;
}
-(void) setDenominador: (int) d
{
denominador = d;
}
@end
//—-PROGRAMA—-
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Fraccion *miFraccion;
// Creamos una instancia de una fracción
miFraccion = [Fraccion alloc];
miFraccion = [Fraccion init];
//Fijamos el valor de la fraccion a 1/3
[miFraccion setNumerador: 1];
[miFraccion setDenominador: 3];
//Mostramos la fraccion usando el metodo imprimir
[miFraccion imprimir];
[miFraccion release];
[pool drain];
return 0;
}
El programa que hemos escrito esta perfectamente diferenciado en tres secciones:
- Interface
- Implementación
- Programa
La interface describe la clase , sus datos y sus métodos, la implementación contiene el código de los métodos a utilizar en la clase y finalmente el programa contiene el código para el propósito final del programa en sí mismo.
Un programa cualquiera de Objective-C contiene estas tres secciones las cuales normalmente suelen estar cada una en un fichero especifico pero para una mejor comprensión en nuestro ejemplo implementaremos las tres en un solo fichero.
En próximas entregas explicaremos más a fondo cada una de estas secciones.














-(void) setNumerador: (int) n
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[Fraccion<0x100001098> init]: cannot init a class object.'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff814987b4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff825ae0f3 objc_exception_throw + 45
2 CoreFoundation 0x00007fff814f1f29 +[NSObject(NSObject) init] + 137
3 prueba1 0x0000000100000da9 main + 124
4 prueba1 0x0000000100000c70 start + 52
5 ??? 0×0000000000000001 0×0 + 1
)
terminate called after throwing an instance of 'NSException'
miFraccion = [Fraccion alloc];
miFraccion = [Fraccion init];
poner
miFraccion = [[Fraccion alloc] init];