Next: Importer une interface Up: Définir une classe Previous: Définir une classe

L'interface

Une déclaration d'interface commence par la directive de compilation @interface et finie par la directive @end. ( toutes les directives de compilation de ObjectiveC commence par @ pour les différentier de celles du préprocesseur cpp du C).

@interface NomClasse : SaSuperClasse
{
déclarations des variables d'instance
}
prototypes des méthodes
@end

La première ligne déclare la nouvelle classe et crée le lien avec sa superclasse. La superclasse définie la proportion de la nouvelle classe qui est héritée dans la hiérarchie des classes (voir héritage plus haut). Si le ":" et le nom de la superclasse sont oubliés la nouvelle classe est une classe racine (rivale de Object).

La zone entre € déclare les variables d'instance, la structure de données qui sera présente dans chaque instance. Par exemple une partie des variables d'instance de Matrix:

id selectedCell;
int numRows;
int numCols;
float backgroundGray;
id cellClass;

Les méthodes de la classe sont déclarées après l'accolade fermente et avant la directive @end. Les méthodes de classe utilisables par les objets classe sont précédées du signe +:

+ alloc; Les méthodes utilisables par les instances sont précédées par le signe -:

- display;
Bien que ce ne soit pas recommandé vous pouvez déclarer des méthodes de classe et d'instances avec le même nom. Une méthode peut avoir le même nom qu'une variable d'instance, c'est plus fréquent surtout quand la méthode renvoi la valeur de la variable d'instance. Ainsi la classe Matrix a une méthode selectedCell associée avec sa variable d'instance selectedCell.

La valeur de retour des méthodes est déclarée avec la syntaxe de coercition du :

- (int)tag; de même pour les arguments des méthodes:

- setTag:(int)anInt;
Si le type n'est pas explicité, le type par défaut est utilisé, c'est-à-dire un id. Les méthodes alloc, display, et setTag: détaillées au dessus retourne toutes des id.

Quand il y a plus d'un argument il sont déclarés après chaque ":" comme dans un message, par exemple:
- moveTo:(NXCoord)x :(NXCoord)y;
- getRow:(int *)aRow andColumn:(int *)aColumn ofCell:aCell;
(NXCoord est un type flotant utilisé pour les coordonnées sur l'écran.)

Pour les méthodes à nombre variable d'argument on utilisera une virgule et une ellipse, comme pour les fonctions C :

- makeGroup:group, ...;

Next: Importer une interface Up: Définir une classe Previous: Définir une classe

Dominique REVUZ
Vendredi 21 février 1997 17:27:12
Une Bug Un mail Merci