Définitions de classes permettant de gérer Étudiant en Enseignant

Transcription

Définitions de classes permettant de gérer Étudiant en Enseignant
EILCO ING 1 - POO Java –
Contrôle 2014/2015
Définitions de classes permettant de gérer Étudiant en
Enseignant
CORRECTION
Dans ces exercices, nous allons définir une classe Personne qui permettra de gérer un individu et
nous allons ensuite spécialiser ces classes par le mécanisme d’héritage du langage Java en deux
sous-classes qui chacune hériteront de la classe Personne : la classe Etudiant et la classe Enseignant
La classe Personne
Créer une classe Personne correspondant au schéma UML suivant
Personne
- nom : String
- adresse : String
+ Personne(String,String)
+ getNom() : String
+ getAdresse() : String
+ toString() : String
•
La méthode toString() affichera le nom de la Personne suivie de son adresse entre
parenthèses.
La classe Étudiant
Etudiant
- nombreCours : int
- notes : ArrayList<Double>
La classe Étudiant héritera de la classe Personne. Elle correspond
au diagramme UML ci-dessous. Vous
- cours : ArrayList<String>
utiliserez les informations suivantes :
- MIAX_COURS : 15
+ Etudiant(String,String)
+ ajouteCoursNote(String, double)
+ afficheNotes()
+ noteMoyenne() : double
+ toString() : String
1. la classe contient deux ArrayList, un ArrayList des modules suivis et un ArrayList des notes
obtenus à ce module. La note du ième module étant à la position i dans l’ArrayList des notes.
MAX_COURS est une constante qui correspond au nombre maximum de modules suivis ;
2. le constructeur de la classe Étudiant prendra en paramètre le nom et l’adresse de l’étudiant. Il
initialisera les deux ArrayList et la variable nombreCours à 0 ;
3. La méthode ajouteCoursNote permet d’ajouter le nom d’un module et la note obtenue dans ce
module (cf exemple plus loin) ;
4. La méthode afficheNotes() affiche tous les modules suivis par l’étudiant et les notes
correspondantes ;
5. La méthode public double noteMoyenne() retourne la note moyenne de l’étudiant ;
6. La méthode toString() affiche "étudiant" suivi de son nom et de son adresse.
La classe Enseignant
Écrire la classe Enseignant en utilisant le diagramme UML ci-dessous :
Enseignant
- nombreCours : int
- cours : ArrayList<String>
- MIAX_COURS : 10
+ Enseignant(String,String)
+ ajouteCours(String) : boolean
+ enleveCours(String) : boolean
+ toString() : String
1. L’attribut cours comme dans le cas d’un Étudiant contiendra les différents modules que cet
enseignant enseigne. Un enseignant est limité à 10 modules ;
2. le constructeur de la classe Enseignant comme pour un étudiant prend en paramètre le nom et
l’adresse de cet enseignant ;
3. la méthode ajouteCours rajoute un cours à l’attribut cours si ce cours n’est pas déjà présent dans
la liste des modules enseignés. Si le cours est déjà présent, on retournera la valeur booléen false,
true sinon ;
4. de même la méthode enleveCours permet d’enlever un cours si l’enseignant ne l’enseigne plus.
Comme pour la méthode ajouteCours, on enlèvera le cours que s’il est présent dans la liste des
modules (false ou true) ;
5. la méthode toString() affiche enseignant suivi de son nom et adresse entre parenthèses ainsi que
la liste de tous les modules enseignés.
La classe de Test
Utilisez la classe de Test ci-dessous pour tester votre programme :
import java.util.ArrayList;
// Un programme de Test
public class Test {
public static void main(String[] args) {
// Test de la classe Etudiant
Etudiant e1 = new Etudiant("Alphone Allais", "1 Avenue des Codeurs");
e1.ajouteCoursNote("Java", 19.5);
e1.ajouteCoursNote("Anglais", 17.0);
e1.ajouteCoursNote("Base de données",4.5);
e1.afficheNotes();
System.out.println("Moyenne: " + e1.noteMoyenne());
// Test de la classe Enseignant
Enseignant t1 = new Enseignant("Paul Tan", "8 rue des ArrayList");
System.out.println(t1);
ArrayList<String> desCours = new ArrayList<String>();
desCours.add("Java");
desCours.add("Algorithmique avancée");
desCours.add("Java");
// on rajoute des cours
for (int i = 0; i < desCours.size(); i++) {
if (t1.ajouteCours(desCours.get(i))) {
System.out.println(desCours.get(i) + " ajouté.");
} else {
System.out.println(desCours.get(i) + " déjà présent.");
}
}
System.out.println(t1);
// on enlève les cours
for (int i = 0; i < desCours.size(); i++) {
if (t1.enleveCours(desCours.get(i))) {
System.out.println(desCours.get(i) + " enlevé.");
} else {
System.out.println(desCours.get(i) + " non présent.");
}
}
}
}
Ce qui donne comme résultat :
étudiant: Alphone Allais(1 Avenue des Codeurs)
Java:19.5 Anglais:17.0 Base de données:4.5
Moyenne: 13.666666666666666
enseignant: Paul Tan(8 rue des ArrayList)
pas de cours
Java ajouté.
Algorithmique avancée ajouté.
Java déjà présent.
enseignant: Paul Tan(8 rue des ArrayList)
cours: Java
cours: Algorithmique avancée
Java enlevé.
Algorithmique avancée enlevé.
Java non présent.
// Define superclass Personne
public class Personne {
// attributs de la classe
private String nom;
private String adresse;
// Constructeur
public Personne(String name, String a) {
nom = name;
adresse = a;
}
// Getters
public String getNom() {
return nom;
}
public String getAdresse() {
return adresse;
}
public String toString() {
return nom + "(" + adresse + ")\n";
}
}
import java.util.ArrayList;
// Definition de la classe Enseignant
public class Enseignant extends Personne {
// attributs de la classe
private int nombreCours; // nombre de cours d'enseignement
private ArrayList<String> cours; // cours enseignés
private static final int MAX_COURS = 10; // maximum courses
// Constructeur
public Enseignant(String name, String a) {
super(name, a);
nombreCours = 0;
cours = new ArrayList<String>();
}
@Override
public String toString() {
String resultat;
resultat = "enseignant: " + super.toString();
if (cours.size() == 0)
return resultat + "\npas de cours";
for(int i = 0; i < cours.size(); i++)
resultat += "cours: " + cours.get(i) + "\n";
return resultat;
}
// Return false si cours déjà enseigné
public boolean ajouteCours(String c) {
// Regarde si le cours esr déjà dans la liste
for (int i = 0; i < cours.size(); i++) {
if (cours.get(i).equals(c)) return false;
}
cours.add(c);
nombreCours++;
return true;
}
// Return false si le cours n'apparaît pas dans la liste
public boolean enleveCours(String c) {
// Look for the course index
int coursIndex = nombreCours;
for (int i = 0; i < cours.size(); i++) {
if (cours.get(i).equals(c)) {
coursIndex = i;
break;
}
}
if (coursIndex == nombreCours) { // impossible à trouver
return false;
} else { // suppression du cours correspondant
cours.remove(coursIndex);
}
nombreCours--;
return true;
}
}
import java.util.ArrayList;
// classe Etudiant, sous classe de Personne
public class Etudiant extends Personne {
// attributs de classe
private int nombreCours; // nombre de cours suivis, MAX = 15
private ArrayList<String> cours; // nom des cours
private ArrayList<Double> notes;
// notes pour les cours correspondants
private static final int MAX_COURS = 15; // nb maximum de cours
// Constructor
public Etudiant(String name, String a) {
super(name, a);
nombreCours = 0;
cours = new ArrayList<String>();
notes = new ArrayList<Double>();
}
@Override
public String toString() {
return "étudiant: " + super.toString();
}
// Ajoute un cours et une note
public void ajouteCoursNote(String course, double grade) {
cours.add(course);
notes.add(grade);
nombreCours++;
}
// affiche tous les cours pris et les notes correspondantes
public void afficheNotes() {
System.out.print(this);
for (int i = 0; i < nombreCours; ++i) {
System.out.print(" " + cours.get(i) + ":" + notes.get(i));
}
System.out.println();
}
// Calcule la note moyenne
public double noteMoyenne() {
double sum = 0.0;
for (int i = 0; i < nombreCours; i++ ) {
sum += notes.get(i);
}
return (double)sum/nombreCours;
}
}