EILCO ING 1 - POO Java – Contrôle 2014/2015 Définitions de classes permettant d
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 • La méthode toString() affichera le nom de la Personne suivie de son adresse entre parenthèses. La classe Étudiant La classe Étudiant héritera de la classe Personne. Elle correspond au diagramme UML ci-dessous. Vous utiliserez les informations suivantes : - nom : String - adresse : String + Personne(String,String) + getNom() : String + getAdresse() : String + toString() : String Personne - nombreCours : int - notes : ArrayList<Double> - cours : ArrayList<String> - MIAX_COURS : 15 + Etudiant(String,String) + ajouteCoursNote(String, double) + afficheNotes() + noteMoyenne() : double + toString() : String Etudiant 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 : 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 - nombreCours : int - cours : ArrayList<String> - MIAX_COURS : 10 + Enseignant(String,String) + ajouteCours(String) : boolean + enleveCours(String) : boolean + toString() : String Enseignant 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 T est { 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 T an", "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; } } uploads/S4/ controle-heritage-decembre-2014-correction-pdf.pdf
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 17, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.1280MB