Application
1. Ecrire une classe qui représente un étudiant. Chaque étudiant a un nom, un prénom,
une note moyenne, la liste des matières qui représente un tableau de chaine et un
identifiant unique.
2. Utiliser l’encapsulation pour protéger les attributs de la classe.
3. Créer des accesseurs (getters) et des modificateurs (setters).
4. Implémenter un constructeur avec paramètre permettant d’initialiser tous les champs
d’un étudiant (utiliser le mot-clé this pour désambiguïser les variables).
5. Implémenter un constructeur sans paramètre permettant d’initialiser tous les champs
d’un étudiant par des valeur null en faisant appel au constructeur avec paramètre
implémenté dans la question 4 (i.e., on utilise this()).
6. Redéfinir la fonction toString() pour afficher les informations de l’étudiant de façon
lisible.
Remarque : La méthode toString() est utilisée pour obtenir une représentation textuelle
d’un objet. Par défaut, elle retourne une chaîne qui combine le nom de la classe à laquelle
appartient l’objet et ses caractéristiques : String toString(){…}
Ecrire une classe Main permettant de tester la classe Etudiant :
1. Créer deux instances de la classe Etudiant e1 et e2. L’objet e1 est instancié avec le
constructeur sans paramètre et l’objet e2 est créé avec le constructeur avec paramètre
tel que :
e2 {id=1, nom=’’Bel Hadj Mohamed’’, prénom=’’Ahmed’’, moyenne=15.5,
matières :{Mathématiques, Physique, Informatique}}
2. Afficher les informations de chaque objet en utilisant la fonction toString() ;
3. Changer la matière ‘informatique’ de l’objet e2 par ‘réseau informatique’ et réafficher
les nouvelles informations.
Correction :
package Ex1;
import java.util.Arrays;
public class Etudiant {
// Attributs privés (Encapsulation)
private String nom;
private String prenom;
private double moyenne;
private int id;
private String[] matieres; // tableau de matières
// Constructeur sans paramètre faisant appel au constructeur
avec paramètre
public Etudiant() {
this("", "", 0.0, 0, new String[]{""});
}
// Constructeur avec paramètres
public Etudiant(String nom, String prenom, double moyenne, int
id, String[] matieres) {
this.nom = nom;
this.prenom = prenom;
this.moyenne = moyenne;
this.id = id;
this.matieres = matieres;
}
// Getters (accesseurs)
public String getNom() {
return nom;
}
public String getPrenom() {
return prenom;
}
public double getMoyenne() {
return moyenne;
}
public int getId() {
return id;
}
public String[] getMatieres() {
return matieres;
}
// Setters (modificateurs)
public void setNom(String nom) {
this.nom = nom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public void setMoyenne(double moyenne) {
if (moyenne >= 0 && moyenne <= 20) {
this.moyenne = moyenne;
} else {
System.out.println("Erreur : La moyenne doit être entre 0 et 20.");
}
}
public void setId(int id) {
this.id = id;
}
public void setMatieres(String[] matieres) {
this.matieres = matieres;
}
// Redéfinition de toString()
@Override
public String toString() {
return "Étudiant{" +
"id=" + id +
", nom='" + nom + '\'' +
", prénom='" + prenom + '\'' +
", moyenne=" + moyenne +
", matières=" + Arrays.toString(matieres) +
'}';
}
}
package Ex1;
public class Main {
public static void main(String[] args) {
// 1. Instanciation d'un étudiant sans paramètre
Etudiant e1 = new Etudiant();
System.out.println(e1);
// 2. Instanciation d'un étudiant avec des paramètres
String[] matieresE2 = {"Mathématiques", "Physique",
"Informatique"};
Etudiant e2 = new Etudiant("Hadj Mohamed", "Ahmed", 15.5,
1, matieresE2);
System.out.println(e2);
// 3. Modification des matières avec le setter
String[] nouvellesMatieres = {"Mathématiques", "Physique",
"Réseau Informatique"};
e2.setMatieres(nouvellesMatieres);
System.out.println("Après modification des matières : " +
e2);
// 4. Test d'une moyenne invalide
e2.setMoyenne(25.0); // Affichera un message d'erreur
}
}