Les Bases de l'ObjectiveC
Par Contributeur - Publié le
Pourquoi l' Objective C
L' Objective C est un language orienté objet et surtout, avec Java, le language pour la programmation Cocoa. De plus, il est très facile à apprendre, et on peut faire des trucs déjà pas mal après un aprentissage relativement court. En plus, avantage par rapport au C++, le programmeur n' a pas trop à se soucier des allocations mémoires (enfin, ça dépend des fois…)
Programmer en Objective C
L' Objective C permet de faire à peu près tout ce que vous voulez (Applications, PrefsPanes…). Tant que le template existe pour Project Builder, c'est très simple, le squelette du programme vous est donné. Sinon ça peut être plus compliqué… Dans la plupart des cas, vous aurez besoin de créer une interface avec Interface Builder, que vous coordonerez avec votre code proprement dit. Pour tout cela, je vous renvoie au tutoriel "Currency Converter", une petite application très simple mais qui va vous familiariser avec le mécanisme. D'ailleurs la documentation fournie avec les developer tools est assez consistante et si vous prenez le temps de la lire, vous maitriserez déjà bien le développement en Cocoa. Ensuite, on entre dans les choses sérieuses, le langage proprement dit.
Ici, tout est très orienté objet: on définit des classes qui contiennent des données et des méthodes. La déclaration de classe se fait, pour simplifier, en deux parties:
_l' "interface", contenue entre un "@interface" et un "@end" dans laquelle on déclare les données membres de la classe et les prototypes de ses fonctions membres. Les données membres sont soit des variables de type de base ou défini par le programmeur, soit des objets provenant de Frameworks ou d'autres classes définies par le programmeur. Elles doivent être déclarées entre accolades et selon la syntaxe suivante:
type nomdevariable;
Ensuite viennent les prototypes de fonctions. On déclare juste les fonctions, sans dire ce qu'elle font. Les fonctions précédées d'un tiret sont des fonctions d'objet, celles précédées d'un signe '+' sont des fonctions de classe.Voila quelques exemples:
- (typeretourné ) nomdelafonction;
- (typeretourné ) nomdelafonction: (typedearg1)arg1;
- (typeretourné ) nomdelafonction: (typedearg1)arg1 cequevousvoulez: (typedearg2)arg2;
En principe il n't a pas d'espaces entre les deux points et les parenthèses mais je suis obligé de les mettre parceque sinon ils sont interprétés comme des smileys…
Je me rends compte que je n'ai pas expliqué la différence entre objet et classe (je suis parti du principe que vous la connaissiez…). Pour faire simple, un objet est une instance de classe, c'est à dire que la classe est le modèle sur lequel on peut faire des objets ayant justes des valeurs de données membres différentes. La plupart des méthodes de classe servent en fait à créer un objet sur lequel on travaille.
L'interface est souvent déclarée dans le header (fichier [.h) de la classe mais on peut le mettre sans problème dans le fichier ].m
_passons à ce que l'on appelle l'"implémentation": on reprend les mêmes fonctions que dans l'interface sauf qu'on va dire ce qu'elles font vraiment, cette fois (entre un "@implementation" et un "@end"). On reprend le prototype de la fonction, on enlève le point-virgule en bout de ligne et on encadre le code entre des accolades:
- (typeretourné ) nomdelafonction: (typedearg1)arg1
{
code
}
La fonction doit obligatoirement se terminer par un return suivi d'une variable du type déclaré dans le prototype.
Le gros du code se compose en fait de ce qu'on appelle les "messages" en Objective C. En fait, il s'agit d'invoquer une méthode d'une classe avec la syntaxe suivante: [class method]
La méthode peut éventuellement recevoir des arguments. [class method:arg1 and:arg2]
Il faut alors que la méthode soit définie de manière à pouvoir recevoir ces arguments, comme vu précedemment.
Les messages peuvent renvoyer des valeurs (typeretourné de la méthode) ou pas (typeretourné de la méthode = void).
J'ai volontairement laissé les variables de coté car c'est assez intuitif et je pense que pour peu que vous ayez déjà quelques notions de programmation, vous vous débrouillerez très bien avec.
D'ailleurs, je vous conseille, pour pouvoir mieux vous concentrer sur l'aspect objet du langage, de maitriser déjà les notions de programmation procédurale (si vous ne les connaissez pas, essayez Apple Script, c'est vraiment bien pour débuter).
En ce qui concerne les structures de controle, ce sont à peu près les mêmes qu'en C++ et beaucoup de langages. Je ne m'attarderai donc pas dessus.
Après, pour construire un programme entier, il faut combiner classes et fonctions selon ce qu'on veut faire. Souvent, ce sera un clic sur un bouton qui déclenchera une action définie par une fonction membre de la classe contenant le bouton (grace au principe des outlets en Cocoa).
Mais dans tous les cas, votre programme comportera un fichier main.m, qui contient la définition de la fonction main, invoquée au lancement du programme. Vous n'avez pas souvent besoin de la modifier mais il faut savoir qu'à travers divers appels systèmes, elle lance la classe principale de votre programme.
Voila en vrac la base à connaitre mais je vous invite vivement à lire ci-dessous pour savoir où obtenir plus de renseignements
Plus de renseignements
Tout d'abord, lisez la doc fournie par Apple, elle est déjà assez complète.
Vous pouvez toujours acheter des livres de programmation (il y en a pas des masses pour ObjC mais de toute façon, un bon programmeur doit connaitre plusieurs langages et c'est plus facile de pouvoir se concentrer sur le moins de choses possibles pour apprendre un nouveau langage)
Dans le même genre, je vous conseille de bien approfondir vos connaissances sur le système lui-même et sur l'informatique en général, vous en aurez toujours besoin.
Il y a, comme toujours, des tas d'informations sur Internet. Essayez par example www.stepwise.com et www.cocoadev.com (des références). Vous pouvez aussi vous inscrire à des mailing-lists mais là, j' espère que vous parlez anglais couramment parceque c'est sur les listes américaines qu'on trouve le meilleur soutien. Je vous conseille particulièrement Omnidev (voir www.omnigroup.com) et Cocoadev (www.lists.apple.com), vous m'y croiserez peut-être et il y a même des développeurs d' Omnigroup ou d' Apple, qui sont surement les plus à même de répondre à vos questions.
Enfin et dernier conseil, soyez patient, ne vous laissez pas décourager par un échec (c'est rare qu'un logiciel marche du premier coup) et surtout, prévoyez des provisions de cafe !
Pour conclure
Bon, je sais pas si j'ai été très clair mais c'est la première fois que j'entreprends d'expliquer le fonctionnement d'un langage et en si peu de mots, c'est assez difficile. Si vous avez des questions, n'hésitez pas à me mailer. j'essaierais de faire d'autres articles mais ce serait plus simple si je savais sur quels points précis ça coince, parceque parler du langage en entier comme ça, c'est pas facile…
Ah, j'allais oublier, dernier conseil, soyez prêts à affronter les foudres de votre chere et tendre et à essuyer les "J'en ai marre, tu passes plus de temps devant ce satané ordinateur qu'avec moi". Et je parle en connaissance de cause… ;)