Votre deuxième programme en Cocoa

Par FlUxIuS 2008-06-12 { Catégorie : Mac }

 

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.

 

Penser en Objective-C

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

Types

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).

 

Assignements

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 ! ).

 

Les méthodes

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];

 

Les Classes

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.

 

Les objets

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.

 

Utilisation de 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.

 

Le Header

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, ...).

 

Fonction de la méthode

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.

 

Integration

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.

 

Créer une instance

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 .

 

Connections

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 ;)

Powered by SlashOn blog - © Sebastien D. (FlUxIuS)

Debian powered Server Creative Commons License W3c Validation
Cette création est mise à disposition sous un contrat Creative Commons