Variable de classe??

tabliertablier Membre
07:19 modifié dans API AppKit #1
J'aimerais que l'on m'explique!!
Dans "Objective-C précis & concis" (page 8 ) je lis: l'ensemble des éléments d'une classe sont appelés "Champs".
Et en note  je lis ceci:
  Les champs sont aussi appelés des "variables d'instance". Nous préférons le mot "champs" pour plusieurs raisons: "variables d'instance" est redondant puisqu'il n'y a pas de variables de classe; cette expression est aussi ambiguë puisqu'elle peut faire penser que ce sont les variables qui sont des instances. "variables" seul serait aussi .... etc

Alors, je pose la question suivante: parler de variables de classe et de variables d'instance dans objective-C n'est-ce pas faire une confusion avec les définitions du C++?


Réponses

  • AliGatorAliGator Membre, Modérateur
    mars 2006 modifié #2
    Pour moi il existe des variables de classes et des variables d'instances en Objective-C. Mais.. conceptuellement parlant, en fait.
    Ce n'est peut-être pas directement des "variables de classes" au sens C++, mais le concept est là , surtout.

    Le "concept" dit ceci : les "variables de classes" sont accessibles par tous les objets de cette classe, et les variables d'instances sont rattachées à  une instance (un objet).

    Un petit tuto sur P:O

    Mais en réalité, si je ne dis pas trop de c*nneries, Objective-C ne permet pas de définir des variables à  l'intérieur des classes (c'est ce que veut dire ton bouquin), mais en utilisant des subterfuges, on y arrive quand même : par exemple des variables gloables déclarées en "static" dans le fichier .m de la classe (donc non accessibles de l'extérieur, cf l'explication récente de Bru à  ce sujet), et on rend la variable accessible via des accesseurs de la classe genre [tt]+(int)mavar[/tt] et [tt]+setMavar:(int)v[/tt].

    Conclusion : en effet on ne peut pas techniquement définir des variables de classes, mais en réalité on arrive à  retrouver le concept.
  • tabliertablier Membre
    07:19 modifié #3
    Merci Aligator pour la réponse. L'astuce des pseudo "variables de classe" est décrite dans tout les bouquins. Ma question était destinée à  préciser les choses (surtout pour les débutants comme moi).
    Je pense donc pouvoir résumer la chose ainsi: Il n'y a pas formellement de variable de classe en Objective-C, mais comme cette fonctionnalité est intéressante (voir indispensable) on s'arrange pour créer quelque chose d'équivalent. Bru ayant parfaitement décrit l'intérêt de la chose dans un message précédent.
    A+
  • AliGatorAliGator Membre, Modérateur
    07:19 modifié #4
    Nan mais y'a pas de mal au contraire : en fait en rédigeant ma réponse à  ta question je me suis rendu compte que je maà®trisais moins le sujet que je ne pensais :D

    Au début ma réflexion a été de te dire "ben si y'a des variables de classes en ObjC..." et puis "ah ben mince, tiens, non, c'est vrai ça"... "ah ben oui c'est vrai c'est pour ça qu'on fait les static machin"... "ah ben oui ayé je vois le lien d'un coup avec l'explication de Bru sur l'autre post"... "ouah, mégatilt"  :) ;D
Connectez-vous ou Inscrivez-vous pour répondre.