Я только начал изучать цель C и действительно запутался, как файлы .h и .m взаимодействуют друг с другом. Эта простая программа имеет 3 файла:
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;
}
Из того, что я понимаю, программа изначально запускает файл main.m. Я понимаю основные понятия C, но весь этот "класс" и "экземпляр" действительно путают. В файле Fraction.h @interface определяет числитель и знаменатель как целое число, но что еще он делает с помощью (void)? и какова цель переопределения ниже? Я также довольно смущен относительно того, что происходит с (void) и (int) частями Fraction.m и как все это объединяется в файл main.m. Я предполагаю, что я пытаюсь сказать, что это похоже на довольно легкую программу, чтобы узнать, как разные порции работают друг с другом - может ли кто-нибудь объяснить на нетехническом жаргоне?