L'objet en C sharp: L'opérateur new + Le mot clé this + Un programme de test

2.1.5 L'opérateur new
La séquence d'instructions
Personne p1;
p1.Initialise("Jean","Dupont",30);
est incorrecte. L'instruction
Personne p1;
déclare p1 comme une référence à un objet de type Personne. Cet objet n'existe pas encore et donc p1 n'est pas initialisé. C'est
comme si on écrivait :
Personne p1=null;
 où on indique explicitement avec le mot clé null que la variable p1 ne référence encore aucun objet. Lorsqu'on écrit ensuite
p1.Initialise("Jean","Dupont",30);
on fait appel à la méthode Initialise de l'objet référencé par p1. Or cet objet n'existe pas encore et le compilateur signalera l'erreur.
Pour que p1 référence un objet, il faut écrire :
Personne p1=new Personne();
Cela a pour effet de créer un objet de type Personne non encore initialisé : les attributs nom et prenom qui sont des références d'objets
de type String auront la valeur null, et age la valeur 0. Il y a donc une initialisation par défaut. Maintenant que p1 référence un objet,
l'instruction d'initialisation de cet objet
p1.Initialise("Jean","Dupont",30);
est valide.

2.1.6 Le mot clé this
Regardons le code de la méthode initialise :
1. public void Initialise(string p, string n, int age) {
2. this.prenom = p;
3. this.nom = n;
4. this.age = age;
5. }
L'instruction this.prenom=p signifie que l'attribut prenom de l'objet courant (this) reçoit la valeur p. Le mot clé this désigne l'objet
courant : celui dans lequel se trouve la méthode exécutée. Comment le connaît-on ? Regardons comment se fait l'initialisation de
l'objet référencé par p1 dans le programme appelant :
p1.Initialise("Jean","Dupont",30);
C'est la méthode Initialise de l'objet p1 qui est appelée. Lorsque dans cette méthode, on référence l'objet this, on référence en fait
l'objet p1. La méthode Initialise aurait aussi pu être écrite comme suit :
1. public void Initialise(string p, string n, int age) {
2. prenom = p;
3. nom = n;
4. this.age = age;
5. }
Lorsqu'une méthode d'un objet référence un attribut A de cet objet, l'écriture this.A est implicite. On doit l'utiliser explicitement
lorsqu'il y a conflit d'identificateurs. C'est le cas de l'instruction :
this.age=age;
où  age  désigne un attribut de l'objet courant ainsi que le paramètre  age  reçu par la méthode. Il faut alors lever l'ambiguïté en
désignant l'attribut age par this.age.

 2.1.7 Un programme de test
Voici un court programme de test. Celui-ci est écrit dans le fichier source [Program.cs] :
1. using System;
2.
3. namespace Chap2 {
4. class P01 {
5. static void Main() {
6. Personne p1 = new Personne();
7. p1.Initialise("Jean", "Dupont", 30);
8. p1.Identifie();
9. }
10. }
11.}

Avant d'exécuter le projet [01], il peut être nécessaire de préciser le fichier source à exécuter :
L'objet en C sharp: L'opérateur new + Le mot clé this + Un programme de test
L'objet en C sharp: L'opérateur new + Le mot clé this + Un programme de test
Dans les propriétés du projet [01], on indique en [1] la classe à exécuter.
Les résultats obtenus à l'exécution sont les suivants :
[Jean, Dupont, 30]

Publié par Drupal french Study