Après, si Ada est un langage objet, il n'est pas tout à fait comme les autres, dans le sens où dans un langage OO classique, l'objet sur lequel on appel à la méthode est implicitement passé en paramètre et accessible via le mot clé "this".
C'est pareil dans d'autres langages, comme Python par exemple où il faut explicitement mettre le paramètre self en premier lors de la définition d'une méthode.
Pour l'appel de la méthode, en Ada 95 c'était limité à method(object, params...), mais depuis Ada 2005 on peut également écrire object.method(params...).
En Ada, c'est un paramètre comme un autre. On définit des fonctions qui manipules des objets, et non des méthodes. Du coup, on peut créer les fonctions n'importe où, et pas uniquement dans la classe correspondante. Bon, je suis un peu rouillé, ça fait des lustres que je n'ai pas fait d'Ada donc j'espère ne pas dire trop d'anneries...
On peut définir des fonctions/procédures un peu partout (dans des corps de package, de procédure ou fonctions, dans des blocs de code même). Mais on ne peut pas définir des méthodes n'importe où : il faut impérativement les déclarer à la suite de la définition du type de la classe et avant la classe suivante.
Le compilateur va dire que P3 est déclarée trop tard (this primitive operation is declared too late). Elle doit être déclarée avant le type Bar.
La POO dans Ada est apparue avec Ada 95, ce n'était pas natif au langage auparavant. Ça donne des constructions un peu exotiques comparées à d'autres langages directement conçus pour être orientés objet.
[^] # Re: Perf
Posté par Meku (site web personnel) . En réponse au journal la rouille et la comtesse. Évalué à 4.
C'est pareil dans d'autres langages, comme Python par exemple où il faut explicitement mettre le paramètre self en premier lors de la définition d'une méthode.
Pour l'appel de la méthode, en Ada 95 c'était limité à method(object, params...), mais depuis Ada 2005 on peut également écrire object.method(params...).
On peut définir des fonctions/procédures un peu partout (dans des corps de package, de procédure ou fonctions, dans des blocs de code même). Mais on ne peut pas définir des méthodes n'importe où : il faut impérativement les déclarer à la suite de la définition du type de la classe et avant la classe suivante.
Exemple :
Le compilateur va dire que P3 est déclarée trop tard (this primitive operation is declared too late). Elle doit être déclarée avant le type Bar.
La POO dans Ada est apparue avec Ada 95, ce n'était pas natif au langage auparavant. Ça donne des constructions un peu exotiques comparées à d'autres langages directement conçus pour être orientés objet.