Le premier cours consacré à Cocoa, nous avons appris à manipuler d'éditeur d'interfaces pour réaliser une mini-Traiteur de texte : Votre premier programme en Cocoa. Nous parlerons ici d'un langage que l'on appel plus généralement : L'obective-C (que nous détaillerons plus tard dans un autre article).
Mais vous vous demandez sûrement à quoi celà peut bien servir ? Bien enfaite à réaliser des applications puissantes en toute facilité car pour l'instant notre éditeur d'interface ne permet pas de faire tout ce que l'on veut.
--
Avant de commencer, il nécessaire de s'approprier quelques notions au niveau du C++ plus que le C car nous introduiront le concept de la programmation orientée objet.
L'objective-C est une manière simple d'exprimer une instruction à un ordinateur semblable presque à l'ecriture d'une instruction pour une personne physique. Rien de tel qu'un exemple simple pour vous montrer le fonctionnement, pour ce faire nous allons l'illustrer avec un voyage en Italie (Hmm les Pizzas, les Pastas... ! O_o).
Voici une suite d'instructions humaine :
- Prendre une carte à l'aéroport. - Faire une jolie photo à la tour de Pizz. - Danser la macarena devant un vendeur de penne
En objective-C cela donne :
[visiteur prendreCarte: @"aeroport"]; [visiteur faireJoliePhoto: @"Pizz"]; [visiteur danserLaMacarena: @"vendeur de penne"];
En voici un tableau caractéristique :
Objet |
Action | Détail |
visiteur | prendreCarte | aeroport |
visiteur | faireJoliePhoto | Pizz |
visiteur | danserLaMacarena | vendeur de penne |
Les variables sont des containaires de valeurs permettant d'être réutiliser facilement dans un programme et très utiles lors d'une gestion dynamique. Tout comme le langage C, les variables doivent être déclarés :
int entier; id object;
int est utilisé pour stocker des entiers et id que vous ne connaissez peut être pas peut tenir un object (mais nous verrons plus profondement plus tard).
En langage de programmation, nous assignons une valeurs à une variable et ceux qui sont peut être pas fort en programmation pourront je l'espère faire une relation avec les mathématiques :
id object; object = @"Helloooww";
Le symbole "@" est une convention de l'Objective-C (Vous reviendrez pour les détails ? hein ! ).
Une méthode n'est qu'une liste d'instruction que l'ordinateur doit effectuer. Par exemple pour le voyage en italie nous ecrirons :
- visiteItalie { [self prendreCarte: @"aeroport"]; [self faireJoliePhoto: @"Pizz"]; [self danserLaMacarena: @"vendeur de penne"]; }
L'appel de la méthode se fait de cette manière :
[visiteur visiteItalie];
La sortie d'une méthode peut être réutilisé comme paramèttre pour les autres.
[visiteur visiteItalie]; // Initialisation de variable [car faireJoliePhoto: 10]; [car duree: 60]; // Initialisation multiple [car faireJoliePhoto: 10 duree: 60]; // Réutilisation de sortie qtPhoto = [car faireJoliePhoto];
Elles sont regroupe d'attributs et de méthodes.
@interface Photo : NSObject { id longueur; id largeur; id date; id titre; } @end
La définition d'une Classe commence par @interface et finie avec @end. Nous héritons cette class de NSObject pour en tirer les mêmes fonctionnalités.
Nous pouvons y ajouter des méthodes :
@interface Photo : NSObject { id longueur; id largeur; id date; id titre; } - desaturate; - display; - delete; @end
Ces méthodes ajouté se situent derrière l'accolade et devant la fin de classe, mais ne vous préoccupez pas de ces méthodes car telle qu'elles sont, elles ne font rien.
Pour nos class nous devrons créer des instances que nous appelerons Objets.
Voici une démonstration pour créer deux objet de Photo en Objective-C :
id photo1 = [[Photo alloc] init]; id photo2 = [[Photo alloc] init];
Maintenant nous pouvons utiliser les méthodes que la class Photo contient comme ceci :
[photo1 desaturate]; [photo1 display]; [photo1 delete]; [photo2 desaturate]; [photo2 display];
De cette manière nous pourront utilser les méthodes de la class Photo qui seront propre à l'Objet.
Vous pourrez reprendre le premier tutoriel pour cette partie pour pouvoir implémenter vos fonctionnalités supplémentaires. Cliquez ensuite sur Fichier -> Nouveau Fichier et séléctionnez : Class Objective-C, appliquez lui un nom et ainsi continuer pour créer un fichier .m et .h que nous éditerons.
Dans le fichier d'entête nous listerons simplement les variables et méthodes qu'utilisera notre programme tout comme le C/C++ pour lister les prototypes. Nous allons dans un premier temps ajouter un type de variable appelée "IBOutlet " (Interface Builder Outlet). Cette variable donne est une connection avec les interfaces utilisateur tout comme le champ texte...
Pour en ajouter cliquer sur le fichier .h crée dernièrement et écrivez ceci :
#import <Cocoa/Cocoa.h> @interface votreObjet : NSObject { IBOutlet id textView; } @end
Si vous voulez ajouter une méthode, faites le après l'accolade comme ceci :
@interface votreObjet : NSObject { IBOutlet id textView; } - (IBAction) clearText: sender; @end
IBAction est un type utilisé plutôt pour les boutons afin de faire une connection avec l'interface utilisateur (Formulaire, ...).
Ici dans notre .m nous rajouterons les fontionnalités de notre Classe. Pour notre mini-traiteur de texte nous allons créer une méthode d'effacement de texte (pour une simple démonstration).
#import "AppController.h" @implementation votreObjet - (IBAction) clearText: sender { [textView setString: @" "]; } @end
Ici setString permettra d'initiliser le contenu du champ de texte qui sera vidé simplement vu qu'aucuns texte ne se trouve entre les guillemets.
Rendez-vous à l'interface builder et faite glisser le fichier ".h" dernièrement crée dans la fenêtre MainMenu.nib. Vous pourrez à la suite vérifier avec l'inspector si tout est en régle.
Cela revient à la même chose que d'écrire : [[votreObjet alloc] init]. Soyez sur que votre Class votreOjet est bien séléctionné dans fenêtre et choisissez : Classes -> Instantiate votreObjet de la barre de menu.
Vous verrez donc un nouveau cube bleu, ce sera votre instance .
Allez à votre application pour connecter votre instance au champ de texte et faites la connection. Une fenêtre apparaîtra et vous n'aurez qu'à cliquer sur connecter pour finir la connection.
Créer maintenant votre bouton qui effacera le texte et relié là à l'instance. Ceci vous ouvrira encore une fenêtre vous précisans l'action pour la connection.
Une fois fait, compilez et testez le tout !
Questions + : Sur notre forum ;)
Cette création est mise à disposition sous un contrat Creative Commons