Main Contents

Tutorial Objective-c et Xcode

mai 11, 2008

Ce mini tutorial est à destination de ceux qui veulent découvrir Xcode et l’objective-c. On va créer un petit programme en mode console et créer une classe toute simple.

I) Les pré-requis

Je pars du principe que le lecteur a les bases de la programmation orientée objets. C’est à dire qu’il sait ce qu’est une Classe et qu’il connait un minimum le C (langage sur lequel l’objective-c est basé).

La première chose à faire est de récupérer les outils de développement d’Apple. Pour cela, allez sur http://developer.apple.com , enregistrez vous, et téléchargez Xcode.

II) Xcode

Xcode est composé de nombreux outils pour créer votre application (Xcode, Interfacebuilder, Dashcode etc…).

Ici je ne présenterais que le logiciel Xcode qui va nous servir à créer une petite application sans interface graphique.

III) HelloWorld

Lancer Xcode, et créer un nouveau projet.

Choisissez <Foundation Tool> ce qui va nous créer un projet pour une application en mode Console. Choisissez le nom de votre projet.

tuto-objc-img1

La fenêtre du projet, avec les fichiers sources.

Celui qui va nous interesser pour le moment est <nom-du-projet>.m

tuto-objc-img2

On va commencer par ouvrir ce fichier. Par défaut vous devriez avoir :

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

// insert code here…

NSLog(@ »Hello, World! »);

[pool drain];

return 0;

}

Je passe rapidement sur les explications de ce code.

La ligne 3 commence votre programme

La ligne 4 alloue la mémoire et initialise.

La ligne 7 écrit Hello, World!.

La ligne 8 libère la mémoire.

Et la ligne 9 retourne 0, ce qui veut dire que notre programme s’est correctement exécuté.

Vous pouvez immédiatement lancer la compilation et l’exécution, un pomme-R suffit, pour voir ce que fait ce petit programme.

IV) Classe et Objet

Pour créer une classe en Objectve-c il faut définir sa structure dans un fichier maclasse.h, c’est à dire les champs et les méthodes. On appelle ca l’interface de la classe. Puis il faut écrire le code pour chaque méthode de la classe, c’est l’implémentation qui se trouve dans maclasse.m.

Par exemple nous voulons définir une classe voiture qui aura pour champs, la marque et le nombre de kilomètre parcouru.

Il suffit d’aller dans le menu File -> New file et de choisir Objective-C class

tuto-objc-img3

Donner a votre classe un nom, par exemple pour nous Voiture. Xcode va automatiquement ajouter 2 fichiers, Voiture.h qui contient l’interface, et Voiture.m qui contient l’implémentation de la classe. Xcode inclut à chaque fois les fichiers utile, et le code minimal.

Ouvrez Voiture.h, nous allons définir notre classe. Modifiez le pour que le code soit comme ce qui suit.

#import <Cocoa/Cocoa.h>

@interface Voiture : NSObject {

NSString *marque;

int kilometre;

}

-(int)kilometre;

-(NSString*)marque;

-(void)initwithmarque:(NSString*)mamarque withkm:(int)meskm;

-(void)addkm:(int)km;

@end

On définit dans 2 champs, marque, un pointeur sur un NSString, et kilometre un entier.

On définit aussi 4 méthodes :

- kilometre qui va renvoyer le nombre de kilometre parcouru

- marque qui renvoie la marque

- initwithmarque:withkm initialise en utilisant mamarque et meskm

- addkm qui va ajouter la valeur de km au nombre de kilomètre de la voiture

kilometre et marque sont des accesseurs, c’est à dire que ce sont des méthodes permettant d’acceder aux champs de l’objet, en objective-c la convention veut qu’on les nomme du nom des champs qu’elles retournent.

(void) signifie que la fonction ne va rien retourner, contrairement à (int)kilometre qui veut dire que la méthode va renvoyer un entier.

Une fois ce code modifié, on sauvegarde et on va écrire le code des ces méthodes et accesseurs. On ouvre donc le fichier Voiture.m qui contient l’implémentation de la classe.

#import « Voiture.h »

@implementation Voiture

-(int)kilometre {

return kilometre;

}

-(NSString*)marque {

return marque;

}

-(void)initwithmarque:(NSString*)mamarque withkm:(int)meskm {

marque = mamarque;

kilometre = meskm;

}

-(void)addkm:(int)nbkm {

kilometre = kilometre + nbkm;

}

@end

Rien de très compliqué ici. Pour chaque fonction on écrit le code. Pour l’accesseur kilometre on retourne le champs kilometre, et pour la méthode addkm on ajoute nbkm à kilometre. Noter que Xcode a inclus le fichier Voiture.h ligne 1.

Maintenant il faut modifier le fichier principal de l’application, le <nom-du-projet>.m

#import <Foundation/Foundation.h>

#import « Voiture.h »

int main (int argc, const char * argv[]) {

Voiture *Mavoiture = [Voiture alloc];

[Mavoiture initwithmarque:@"Peugeot" withkm:0];

[Mavoiture addkm:12];

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

NSLog(@ »Ma voiture est de la marque %@ et elle a %i kilomètre », [Mavoiture marque], [Mavoiture kilometre]);

[pool drain];

return 0;

}

Il faut bien ajouter le fichier Voiture.h pour que la classe soit connu par le compilateur. Ensuite on créer une instance de la classe Voiture, avec un pointeur sur l’objet Mavoiture, on alloue la mémoire avec alloc. Puis on l’initialise avec la marque Peugeot et 0 kilomètre.

A la ligne 8 on ajoute 12 au nombres de km de la voiture.

Ligne 10 on affiche la marque et le nombre de kilomètre que compte la voiture.

On exécute le programme, et vous devriez obtenir ce qui suit.

tuto-objc-img4

Pour le prochain tuto, on verra Interface Builder et comment créer une application avec une fenêtre simple.

Pour les commentaires ou même pour les questions, mon email : contact@jkraft.fr

Catégorie(s): Développement, Mac, Objective-C, Tutorial | Comments (7)

7 commentaires

  1. Pierre (5 comments) octobre 8, 2008 @ 20 h 09 min

    Moi qui cherche à me mettre à l’Obj-C ce tuto tombe à pic. Etant en école d’ingénieur informatique mais n’ayant pas vu la POO j’ai quelques problemes avec ce nouveau langage . Merci bcp et continue comme ça ! J’attends la suite ;)

  2. Thibault (1 comments) février 11, 2009 @ 5 h 01 min

    Merci pour ce petit tuto simple et rapide qui aide à coprendre certaines notions de bases.

  3. Tutorial Objective-c Xcode et Interface Builder | MacFan février 26, 2009 @ 22 h 28 min

    [...] récents kraft dans Navigateurs virtuelsMatC dans Navigateurs virtuelsThibault dans Tutorial Objective-c et Xcodekraft dans [MYSQL] accélerer les insertMatC dans [MYSQL] accélerer les [...]

  4. Pierrick (1 comments) mars 7, 2009 @ 14 h 27 min

    Merci beaucoup pour ces explications. J’ai cherché, et ai eu beaucoup de mal à trouver, un tuto me permettant de comprendre comment construire une classe de A à Z. Tout le monde reprend le tuto d’Apple en utilisant l’utilitaire graphique (désolé je ne connais pas encore très bien les noms) sans expliquer le pourquoi du comment.
    Alors merci pour cette clarification.
    Bonne continuation.

  5. SwissApp (2 comments) décembre 22, 2009 @ 15 h 10 min

    Salut ! Excellent tuto pour débuter et comprendres le fonctionnement de base de l’Objective-C, très bon boulot !
    Continue à en créer ils sont supers (les autres aussi) ;o)
    ++

  6. Archy (1 comments) décembre 28, 2009 @ 16 h 49 min

    Bonjour,

    Je débute avec Objective-C et j’ai remarqué que dans la méthode dealloc, il y a des objets qu’on libère (avec un release) et d’autres comme NSInteger qu’on ne libere pas, comment donc savoir quels objets on doit libérer ?

    Merci beaucoup (et bravo pour les tutos ;) )

  7. Petite liste de tutorial Objective-C et iPhone | MacFan août 13, 2010 @ 10 h 46 min

    [...] Tutorial Objective-c et Xcode [...]

Laisser un commentaire