5 votes

Confusion dans la définition de la classe Objective C

Je suis en train d'apprendre Objective-C à travers Cocoa (et j'adore ça). Je suis un tutoriel. Il y a une classe appelée Menu et l'interface ressemble à ceci.

@interface Menu: MenuObject {}
@end

@interface MenuLayer : LayerObject {}
-(void) someMethod:(id)sender
-(void) someOtherMethod:(id)sender
@end

et les implémentations suivent la même convention

@implementation Menu
    -(id)init{
        // blah blah blah
    }
@end

@implementation MenuLayer
    // init, someMethod et someOtherMethod ici
@end

Ce qui, pour moi, ressemble à deux objets/classes distincts étant définis et implémentés dans les mêmes fichiers. Y a-t-il une raison de faire cela? Le résultat serait-il le même si je séparais les fichiers .h et .m en Menu.h/.m et MenuLayer.h/.m ? Ou est-ce que je comprends mal quelque chose de fondamental?

5voto

Eric Petroelje Points 40734

Il devrait être bien si vous divisez cela en fichiers séparés. La plupart du temps, lorsque vous voyez des choses implémentées de cette façon, c'est juste parce que les 2 classes sont tellement étroitement couplées ensemble que vous n'utiliseriez vraiment jamais l'une sans l'autre.

Donc, c'est vraiment juste une question de style. Il n'y a pas de "magie" dans le fait qu'ils sont tous les deux définis et implémentés dans le même fichier.

3voto

Brian Campbell Points 101107

Il s'agit simplement d'une question de préférence personnelle. Vous devriez pouvoir les diviser, tant que vous #import l'un des en-têtes de l'autre si nécessaire. En Objective-C, vous avez simplement le choix de regrouper des classes dans des fichiers, plutôt qu'en Java où vous êtes obligé de les diviser. Si les classes sont étroitement liées, il peut être plus facile de comprendre comment tout fonctionne dans un seul fichier, plutôt que de devoir passer de l'un à l'autre.

1voto

e.James Points 51680

Votre évaluation est correcte. Deux classes séparées sont déclarées et définies.

La raison probable de cela est que les deux classes sont nécessaires pour faire ce que fait Menu. Avoir les deux classes dans le même en-tête et source rend simplement l'interface plus compacte.

Le diviser en deux fichiers fonctionnerait toujours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X