debutant : catégories privées & compilation,execution

Paul_pPaul_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

Réponses

  • laudemalaudema Membre
    05:35 modifié #2
    On cache de cette manière les méthodes qui n'ont pas à  figurer dans l'interface qu'on propose aux autres objets ou aux autres programmeurs mais qu'on veut déclarer quand même pour ne pas avoir de warnings à  la compilation et avoir l'autocomplétion quand on les appelle dans l'implémentation.
    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)
  • Paul_pPaul_p Membre
    05:35 modifié #3
    merci,

    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 ;)
  • AliGatorAliGator Membre, Modérateur
    juin 2011 modifié #4
    Heu c'est la base de la POO et son principe d'encapsulation !
    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.
  • Paul_pPaul_p Membre
    05:35 modifié #5
    Merci, oui je suis en train de lire un "gros" livre justement ;)

    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).


    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
  • CéroceCéroce Membre, Modérateur
    05:35 modifié #6
    dans 1308535838:

    pourquoi ne devraient-ils pas connaitre les détails par exemple?

    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.
Connectez-vous ou Inscrivez-vous pour répondre.