Aller au menu - Aller au contenu

Icône Votre premier programme Objective-C

Avatar
Mise à jour : 13/10/2008
885 visites depuis 7 jours, dont 216 sur ce chapitre classé 143/786
Nous allons commencer par utiliser, plus que concevoir, un nouveau programme avec un nouveau projet Xcode que je vais vous présenter brièvement. Et vous allez pouvoir constater la façon très différente de faire des appels de méthodes en Objective-C.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

L'outil : Xcode

Avant de commencer à programmer, on va prendre nos outils en main... À savoir Xcode pour l'instant :D ; l'interface graphique, c'est pour plus tard ;) .

Le choix du projet



Donc, si vous avez lu le cours de M@teo incluant la partie sur l'IDE, vous connaissez déjà ce logiciel... Donc pas besoin de revenir là-dessus :D . On va créer un nouveau projet Objective-C :
  • faites File --> New Project... ou Cmd + Maj + N :D ;
  • sélectionnez dans la partie Command Line Utility le type Foundation Tool puis cliquez sur Next ;
  • donnez un nom à votre projet ; pour moi, ce sera TutorielOC ; choisissez-lui un emplacement sur le disque et cliquez sur Finish !


Et c'est bon, votre fenêtre de projet apparaît...


Un petit ajustement



Bon : comme je n'ai pas envie de trop m'emmerder avec les déclarations de variables, je vais vous présenter une petite option bien pratique. Votre première modification d'IDE. :D
Donc, dans votre fenêtre de projet :
  • cliquez sur le nom de votre projet dans la liste à gauche, c'est le premier élément ;
  • faites File --> Get Info... ou plus simplement Cmd + I ;
  • cliquez sur la liste déroulante Collection et choisissez Language (vous pouvez sauter cette étape, mais ça permet d'éclaircir la liste qui est juste en dessous :D ) ;
  • À côté de C Language Dialect, cliquez sur Compiler Default et choisissez C99 [-std=c99]" ;
  • fermez cette petite fenêtre...


Ce que vous venez de faire, c'est configurer votre compilateur GCC, il est possible de tout modifier grâce à Xcode, de configurer tout ce que vous voulez... Vous pouvez regarder les options disponibles. Pour l'instant, celle que je vous ai montrée nous suffit, elle met en fait le compilateur à la norme C99, ce qui nous permet notamment de déclarer les variables à la volée, c'est-à-dire au moment où on en a besoin, et non pas au début du programme, comme ce n'est pas censé être le cas en C traditionnel. Cela nous permet aussi les boucles for de ce genre : for(int i=0;..., ce qui est plus pratique :D .


Les premiers fichiers de votre projet



Pour l'instant, vous n'avez écrit aucune ligne de code, votre projet contient déjà 5 fichiers et "TutorielOC" dans la liste de gauche est sélectionné. Ce que vous avez pour l'instant, c'est :
  • Foundation.framework : on a sélectionné un projet de type Foundation Tool ; donc, ce framework contient les outils par défaut nécessaires à notre projet ;
  • TutorielOC : son nom est écrit en rouge, ça signifie juste que le fichier est référencé mais qu'il n'existe pas ; en fait, il s'agit de votre exécutable et il sera créé dés la première compilation ;
  • TutorielOC.1 : un fichier MAN pour écrire la documentation sur votre outil... On ne l'utilisera pas ;
  • Tutoriel.m : un fichier source Objective-C comme je vous l'avais dit ; quand vous ferez un projet graphique avec Cocoa, ce fichier s'appelera main.m, il contient donc la définition de la fonction main() permettant de commencer le programme. C'est ici que tout va commencer pour notre tutoriel !
  • TutorielOC_Prefix.pch : un fichier d'en-tête pour inclure tous les fichiers nécessaires à notre exécutable, on n'y touchera pas non plus.

Voilà tout pour le projet lui-même, nous allons maintenant faire votre premier programme.

Votre premier programme !

C'est parti... Compilons le programme pour rigoler :D . Cliquez sur le bouton Build and Go ou faites Cmd + R. Le programme se compile et l'exécution s'affiche finalement dans la console Xcode !
Vous devriez obtenir quelque chose de ce genre :

Citation : Console Xcode
[Session started at 2007-03-31 12:52:23 -0400.]
2007-03-31 12:52:24.929 TutorielOC[730] Hello, World!

TutorielOC has exited with status 0.

Eh oui, le fameux "Hello, World !", toujours lui !!! :D . Jamais on s'en débarrassera ! En fait, c'est juste Xcode qui vous crée un projet viable au début... Il fallait faire un choix sur le premier programme à faire fonctionner... Ils ont choisi le plus connu :D .


TutorielOC.m



Mais revenons au projet : cliquez sur le petit bouton avec une icône bleue dessus juste à côté du marteau en haut à gauche de votre fenêtre de projet. Sélectionnez le fichier TutorielOC.m, voilà ce que vous devriez avoir :

Code : Autre
1
2
3
4
5
6
7
8
9
10
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    NSLog(@"Hello, World!");
    [pool release];
    return 0;
}

Aïe ! C'est plus vraiment comme en C ! Vous commencez à découvrir l'Objective-C petit à petit...

Commençons par ce qu'on connaît plus ou moins. Déjà, je vous ai parlé de la directive de précompilation #import, bah la voici à nouveau ;) , important dans notre fichier main <Foundation/Foundation.h> qui est la framework par défaut.
Ensuite, la déclaration de la fonction main() ; pas vraiment différent, là non plus. Il faut que cette fonction retourne un int sinon GCC fait la gueule :D , et cette fonction prend deux paramètres qui sont les valeurs inscrites dans la console lorsqu'on appelle le programme... On n'en a pas besoin, là.

Rentrons dans les accolades. On voit le return 0; à la fin, signe que le programme s'est bien exécuté... Et juste au-dessus, un Hello World dans une fonction NSLog().

Quand un nom de fonction, de structure, de méthode ou de classe commence par NS, cela signifie qu'elle a été conçue par Apple, ou plus précisément par NeXT, l'entreprise que Steve Jobs a créée après son départ d'Apple dans les années 80. C'est l'entreprise qui a le plus contribué au développement de l'Objective-C en créant des frameworks complètes pour son système nommé NeXTSTEP, d'où le NS. Après le rachat de NeXT par Apple et le retour de Steve Jobs dans son entreprise, tout le travail réalisé par NeXT a été récupéré pour concevoir Mac OS X, et NeXTSTEP / OpenStep a été renommé Cocoa. Mais le préfix NS est resté depuis !

Donc, cette fonction NSLog est l'équivalent de printf(), à la différence que cette méthode prend une chaîne de caractères Objective-C, et non pas C. C'est l'un des premiers aspects de la différenciation Objective-C / C. En effet, Objective-C a l'avantage de bien différencier la partie objet de la partie procédurale dans les programmes, vous le verrez tout au long de ce tutoriel.


Les strings Objective-C



Les strings Objective-C ne sont que le premier aspect. Donc à chaque fois que je dirais qu'il faut une string, vous devrez entourer vos caractères de ces symboles @"ma chaine", et à chaque fois que je parlerai de string C, vous utiliserez cette notation : "ma chaine", sans les parenthèses bien sûr.
La string Objective-C n'est pas différente de la string C, vous pouvez faire tout ce que vous pouviez faire avec les chaînes C ; par exemple, si je veux afficher un entier dans ma string, il suffira d'écrire :

Code : Autre
1
NSLog(@"Un entier : %d\n",maVariable);

Un petit symbole de format est ajouté en plus des : %d, %ld, %f, %Lf, %s, %c..., c'est le formateur %@, c'est l'équivalent de %s mais pour les chaînes de caractères Objective-C.
De la même façon que vous pouvez écrire ça :

Code : Autre
1
NSLog(@"Ma chaine C : %s","un exemple de chaine C");

vous pouvez écrire :

Code : Autre
1
NSLog(@"Ma chaine Objective-C : %@",@"un exemple de chaine Objective-C");


L'appel de fonction VS - L'envoi de message



Voilà pour ce qu'on connaît déjà... Maintenant, regardons ce qu'on ne connaît pas encore : la première instruction de main() et l'avant-dernière !
Pour la première, il s'agit de la déclaration d'une NSAutoreleasePool qui sera utilisée pour la gestion de la mémoire (on ne va pas trop s'étendre là-dessus pour l'instant :D ) suivie de messages... Il s'agit d'appel de fonction mais pour des méthodes et des objets... Vous pouvez voir que ce n'est pas du tout écrit de la même façon... C'est même très bizarre au premier abord, n'est-ce pas ? :D
Bah, moi, c'est ce que j'aime en Objective-C : la partie procédurale en C est différenciée de la partie objet. Donc, difficile de se mélanger les pinceaux entre fonctions C et méthode d'un objet !

À chaque fois que je parlerai de fonction, il s'agira des fonctions C traditionnelles : f().
Quand je parlerai de méthode, il s'agira des trucs tout bizarres qu'on va voir juste après :D .
Voilà tout pour votre premier programme... J'y vais doucement parce qu'après, ça va devenir de plus en plus imposant ; alors, il vaut mieux bien séparer les parties :D . Vous pouvez pour l'instant faire tout ce que vous faisiez en C dans le tutoriel de M@teo, mais ça n'a pas grand-intérêt, au mieux vous rafraîchir la mémoire.
Dans le chapitre suivant, nous allons entamer les choses plus sérieuses.
Chapitre précédent Sommaire Chapitre suivant

Partager

5 commentaires pour "Votre premier programme Objective-C"
Note moyenne : 2.50 / 4 (18 votes)
Pseudo Commentaire
Hors ligne Tchouboudou # Posté le 28/03/2008 à 19:02:28
Tiens un éléphant rose !!!
Avatar

J'ai pas tous lu, juste la partie "Votre premier programme". Y a pas trop à juger dessus, pour l'instant. Par contre, je pense qu'il serait bien de préciser que dans Foundation.h, il se trouve toutes les classes de "données", si je puis dire (NSArray, NSString, NSDictionary, etc) et que dans AppKit se trouve toutes les classes relatives à l'"apparence" (NSButton, NSView, etc).

Sinon, j'ai repéré une, petite erreur, le %@ ne sert pas seulement à afficher une chaîne de caractères, mais avec %@, on peut afficher toutes les classes (même s'il y en a qu'on comprend pas bien, quand on les affiches :) ).

Voili, voilou (bonjour à Bigloo, en passant :) )…

Contrepèterie : Il fait beau et chaud
 
Hors ligne Scion # Posté le 28/09/2008 à 19:37:03

Une ou des petites captures d'écran ne serait pas de refus pour les zéros comme moi :euh:
Enfin, je dis ca mais bon :-°

Thank you !

Scion
 
Hors ligne SUNNY22 # Posté le 20/02/2010 à 11:05:22

Merci Beaucoup pour ce petit tuto,ça m'a beaucoup aidé:)
Je suis encore débutante,je cherche des exemples en objective C sur l'affichage des pages à travers des boutons(comme dans le java ou le C#)
Est il possible de me le fournir le plus tôt possible?
Hors ligne Terrien # Posté le 03/07/2010 à 09:03:54
Avatar

Avis : Mitigé

Ça prendrait une petite mise à jour car avec le Xcode 3.2.3, ce que vous dites de faire ne semble pas fonctionner. Lorsque j'exécute le programme, il m'apparaît une simulation d'iPhone et rien ne s'affiche dedans. Pas de "Hello world". J'ai un peu de la difficulté à suivre lorsque le programme ne suit pas les explications. Je vais tout de même essayer de continuer.
Hors ligne tavax # Posté le 25/10/2011 à 15:37:51
A.D.I.D.A.S. (by Korn) ^^
Avatar

Ville : Paris
Pays : France métropolitaine

Salut amis zeros !

Une petite MAJ du tuto serait cool car avec ma version de snow leopard, les 3/4 des infos sont "incompatibles" dans le sens ou ce n'est pas visible - ou simple (c'est selon) - que dans les explications du tuto.

Un grand merci pour ce tuto déjà, et surtout un big up si cela serait possible d'accéder à la requête :)

Mais vous gagnez bien votre vie ?

Bah disons que si l'Educ m'autorise à faire le ménage après les cours, en additionnant le sport, les math, la phylo et le français que j'organise déjà, avec ça, je pourrai avoir un beau smig et joindre les deux bouts.
 

Voir tous les commentaires
Ce tutoriel a été corrigé par les zCorrecteurs.