Côté langages
223
Côté langages
Voyons ce qu’il en est de l’affectation des objets, de leur transmission en paramètre ou en résultat, des
méthodes et attributs de classe dans les langages Java, C#, PHP et C++.
Affectation, transmission en paramètre et en résultat
Java, C# et PHP utilisent une gestion des objets par référence, de sorte que leurs propriétés concernant
l’affectation, la transmission des paramètres et celle du résultat correspondent à ce que nous avons présenté ici. Rappelons que PHP ne dispose pas de déclarations de type ; il permet néanmoins de préciser le
type d’un paramètre d’une méthode, lorsqu’il s’agit d’un type classe (voyez l’exemple PHP ci-après). Cette
indication, facultative, peut permettre à l’interpréteur de détecter certaines erreurs de programmation.
Comme nous l’avons déjà indiqué, C++ utilise par défaut une gestion par valeur avec les conséquences
que nous avons précisées dans le présent chapitre. Mais, Il est également possible d’utiliser une
transmission par référence pour les paramètres et les résultats. De plus, C++ dispose de la « gestion
dynamique » qui, appliquée aux objets, par le biais de pointeurs, permet de retrouver toutes les propriétés
de la gestion par référence. Dans ce cas, les manipulations d’objets (affectation, paramètres, valeur de
retour) peuvent se faire, soit au niveau des pointeurs eux-mêmes, avec les conséquences de la
transmission par référence, soit au niveau des « objets pointés », avec les conséquences de la
transmission par valeur.
Méthodes et attributs de classe
Les méthodes et attributs de classe existent dans les quatre langages considérés. Elles s’utilisent comme
nous l’avons décrit ici : on emploie le terme static, là où nous avons utilisé deClasse. Les attributs de
classe peuvent être initialisés lors de leur déclaration, sauf en C++ où l’initialisation doit être effectuée en
dehors de la déclaration de la classe, pour des raisons techniques liées à la compilation séparée. À titre
indicatif, voici la traduction de notre classe Cl du paragraphe 5.2.2, page 218, en C# et en C++ (elle se
transposerait à Java et à PHP) :
En C#
class Cl
{ public Cl() { nb++ ; }
public static int nObj() { return nb ; } // méthode de classe
private static int nb = 0 ;
// initialisation attribut de classe
}
223
Côté langages
Voyons ce qu’il en est de l’affectation des objets, de leur transmission en paramètre ou en résultat, des
méthodes et attributs de classe dans les langages Java, C#, PHP et C++.
Affectation, transmission en paramètre et en résultat
Java, C# et PHP utilisent une gestion des objets par référence, de sorte que leurs propriétés concernant
l’affectation, la transmission des paramètres et celle du résultat correspondent à ce que nous avons présenté ici. Rappelons que PHP ne dispose pas de déclarations de type ; il permet néanmoins de préciser le
type d’un paramètre d’une méthode, lorsqu’il s’agit d’un type classe (voyez l’exemple PHP ci-après). Cette
indication, facultative, peut permettre à l’interpréteur de détecter certaines erreurs de programmation.
Comme nous l’avons déjà indiqué, C++ utilise par défaut une gestion par valeur avec les conséquences
que nous avons précisées dans le présent chapitre. Mais, Il est également possible d’utiliser une
transmission par référence pour les paramètres et les résultats. De plus, C++ dispose de la « gestion
dynamique » qui, appliquée aux objets, par le biais de pointeurs, permet de retrouver toutes les propriétés
de la gestion par référence. Dans ce cas, les manipulations d’objets (affectation, paramètres, valeur de
retour) peuvent se faire, soit au niveau des pointeurs eux-mêmes, avec les conséquences de la
transmission par référence, soit au niveau des « objets pointés », avec les conséquences de la
transmission par valeur.
Méthodes et attributs de classe
Les méthodes et attributs de classe existent dans les quatre langages considérés. Elles s’utilisent comme
nous l’avons décrit ici : on emploie le terme static, là où nous avons utilisé deClasse. Les attributs de
classe peuvent être initialisés lors de leur déclaration, sauf en C++ où l’initialisation doit être effectuée en
dehors de la déclaration de la classe, pour des raisons techniques liées à la compilation séparée. À titre
indicatif, voici la traduction de notre classe Cl du paragraphe 5.2.2, page 218, en C# et en C++ (elle se
transposerait à Java et à PHP) :
En C#
class Cl
{ public Cl() { nb++ ; }
public static int nObj() { return nb ; } // méthode de classe
private static int nb = 0 ;
// initialisation attribut de classe
}
