debutant : catégories privées & compilation,execution
Paul_p
Membre
Salut,
j'aimerais comprendre un truc : on utilise des catégories privées (dans le fichier d'implementation de la classe) pour "cacher les méthodes à la compilation", mais pourquoi fait-on ça? ???
aussi, la différence entre compilation et execution? la compilation est-elle la dernière étape? ou c'est l'inverse? ::)
Merci
j'aimerais comprendre un truc : on utilise des catégories privées (dans le fichier d'implementation de la classe) pour "cacher les méthodes à la compilation", mais pourquoi fait-on ça? ???
aussi, la différence entre compilation et execution? la compilation est-elle la dernière étape? ou c'est l'inverse? ::)
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La compilation transforme ton code en langage machine, l'exécution essaye d'exécuter ton code compilé (mais tout ça semble relativement basique comme notion)
pour rappel on empêche de modifier certaines variables en les rendant privées? mais les variables ne sont-elles pas privées par défaut, d'où l'intérêt d'utiliser des "setters"?
pour les méthodes des catégories, je comprend pas, pourquoi les cacher aux autres programmeurs ou objets?
Merci
Ce ne sont pas les variables que l'on cache ou dont on change l'accessibilité public/privé, ce sont les méthodes que l'on ne déclare pas dans le header.
Le header d'une classe doit normalement n'exposer que ce qui est public. Pour éviter que les autres qui utiliseraient ta classe ne connaissent les détails d'implémentation et surtout risquent d'appeler des méthodes qu'ils ne devraient pas appeler directement car elles sont prévues pour toi uniquement (qui sait dans quel contexte les appeler).
Mais tout cela sont les bases même de la POO, c'est loin d'être propre à Objective-C, mais sont des concepts de base de la plupart des langages de programmation, à part des langages procéduraux comme le C (et encore là aussi il y a un concept de scope avec les déclarations static). Il te faut un bon bouquin sur la Programmation Orientée Objet pour mieux comprendre tout cela, si tu veux progresser dans ce sens plus efficacement.
ok, c'est encore flou pour moi, je verrais à la fin du livre si j'ai compris, (pourquoi ne devraient-ils pas connaitre les détails par exemple?)
merci de vos réponses en tout cas
Parce que les détails peuvent changer. Le code d'une application évolue, et si ton code se repose sur l'implémentation actuelle, il risque fort de ne plus fonctionner par la suite.
De fait, il faut s'appuyer uniquement sur les interfaces publiques; ainsi tant qu'elles restent les mêmes, l'implémentation d'une classe peut changer sans impact sur les autres classes qui l'utilisent.