NOMS: DIEUDONNE MERCI Jean
DEPARTEMENT : INFORMATIQUE DE GESTION L2
ID : 4223
TP DE PROGRAMMATION N°2
1. Copiez le code ci-dessus dans votre IDE et exécutez-le. Qu'est-ce qui s'affiche dans la
console ? Pourquoi ces valeurs s'affichent-elles et pas d'autres ? (Répondre à cette
question en vous basant sur la notion des variables : les valeurs par défaut des variables).
5 pts
Problème : Le code initial affiche null pour le nom et l'identifiant, et 0 pour l'âge initial.
Cause : Les variables du constructeur (nom, age, numeroIdentite) masquent les variables
d'instance de la classe. Les valeurs passées au constructeur sont assignées à ces variables locales
et non à celles de l'instance. Les variables d'instance ne sont donc pas initialisées et prennent
leurs valeurs par défaut (null pour les objets, 0 pour les entiers). La méthode setAge fonctionne
car elle ne crée pas de conflit avec une variable locale.
2. Est-ce que le code ci-dessus fonctionne correctement ? (Si "oui", expliquez pourquoi. Si
"non", expliquez pourquoi.) 5 pts
Le code ne fonctionne pas correctement même s'il compile, car les valeurs passées au
constructeur ne sont pas affectées aux variables d'instance.
Cause : L'assignation des variables a lieu entre les paramètres du constructeur (locales) et eux-
mêmes, et non avec les variables d'instance de la classe.
3. Comment pouvons-nous optimiser ce code en utilisant le mot-clé « this » (Réécrivez
l'intégralité du code en utilisant « this » et expliquez à quoi cela a servi exactement.) 10
pts
Explication : En utilisant le mot-clé this, on fait référence à l'instance courante de la classe.
Ainsi, [Link] = nom affecte la valeur du paramètre nom à la variable d'instance nom de l'objet.
4. Dans le code fourni avec la question, essayez de nommer les attributs de la classe
différemment des paramètres du constructeur et réexécutez-le. Que remarquez-vous ? 5
pts
Changement : Les variables d'instance ont des noms différents des paramètres du constructeur
(ex : personName au lieu de nom).
Résultat : Le code fonctionne correctement. L’affectation du paramètre du constructeur à la
variable d’instance fonctionne, car il n'y a plus de conflits de nom. Le mot-clé this n'est plus
strictement nécessaire, car il n'y a pas de collision de nom de variables, mais son usage reste une
bonne pratique pour la lisibilité.