Acabo de empezar a aprender el objetivo C y estoy realmente confundido de cómo los archivos .h y .m interactúan entre sí. Este sencillo programa tiene 3 archivos:Descripción concisa de cómo los archivos .h y .m interactúan en el objetivo c?
Fraction.h
#import <Foundation/NSObject.h>
@interface Fraction : NSObject {
int numerator;
int denominator;
}
- (void) print;
- (void) setNumerator: (int) n;
- (void) setDenominator: (int) d;
- (int) numerator;
- (int) denominator;
@end
Fraction.m
#import "Fraction.h"
#import <stdio.h>
@implementation Fraction
-(void) print { printf("%i/%i", numerator, denominator); }
-(void) setNumerator: (int) n { numerator = n; }
-(void) setDenominator: (int) d { denominator = d; }
-(int) denominator { return denominator; }
-(int) numerator { return numerator; }
@end
Main.m
#import <stdio.h>
#import "Fraction.h"
int main(int argc, char *argv[]) {
Fraction *frac = [[Fraction alloc] init];
[frac setNumerator: 1];
[frac setDenominator: 3];
printf("The fraction is: ");
[frac print];
printf("\n");
[frac release];
return 0;
}
Por lo que entiendo, el programa se inicia al principio ejecutando el archivo main.m Entiendo los conceptos básicos de C, pero todo este asunto de "clase" e "instancia" es realmente confuso. En el archivo Fraction.h, la interfaz @ define el numerador y el denominador como un entero, pero ¿qué más está haciendo debajo con el (vacío)? y ¿cuál es el propósito de redefinir a continuación? También estoy bastante confundido en cuanto a lo que está sucediendo con las porciones (nulas) y (int) de Fraction.m y cómo todo esto se junta en el archivo main.m. Creo que lo que estoy tratando de decir es que este parece ser un programa bastante fácil para aprender cómo funcionan las diferentes partes entre sí. ¿Alguien podría explicarlo en una jerga no tecnológica?