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



Documents pareils
Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Programmation par les Objets en Java

Utilisation d objets : String et ArrayList

Tp 1 correction. Structures de données (IF2)

Premiers Pas en Programmation Objet : les Classes et les Objets

Corrigé des exercices sur les références

TD/TP PAC - Programmation n 3

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmer en JAVA. par Tama

TD/TP PAC - Programmation n 3

Chapitre 10. Les interfaces Comparable et Comparator 1

TP1 : Initiation à Java et Eclipse

Package Java.util Classe générique

Projet de programmation (IK3) : TP n 1 Correction

TD3: tableaux avancées, première classe et chaînes

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Exercices sur les interfaces

Java Licence Professionnelle CISII,

as Architecture des Systèmes d Information

Objets et Programmation. origine des langages orientés-objet

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Auto-évaluation Programmation en Java

Programmation avec des objets : Cours 7. Menu du jour

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Langage Java. Classe de première SI

Plan du cours. Historique du langage Nouveautés de Java 7

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours 1: Java et les objets

Une introduction à Java

Un ordonnanceur stupide

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Threads. Threads. USTL routier 1

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation Orientée Objet application au langage Java Version Novembre 2007

Programmation Par Objets

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

2. Comprendre les définitions de classes

Bases Java - Eclipse / Netbeans

Programmation en Java IUT GEII (MC-II1) 1

Design patterns. Design patterns - définition. Design patterns - avantages

Héritage presque multiple en Java (1/2)

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Chapitre VI- La validation de la composition.

Programmation Objet I

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

4. Groupement d objets

Java Licence Professionnelle CISII,

Programme Compte bancaire (code)

Corrigés des premiers exercices sur les classes

Chapitre V. Les classes : Object, Vector, etc.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Généralités sur le Langage Java et éléments syntaxiques.

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Classe Interne, Anonyme & Enumération

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

INITIATION AU LANGAGE JAVA

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Apprendre Java en 154 minutes

OpenPaaS Le réseau social d'entreprise

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Traduction des Langages : Le Compilateur Micro Java

Environnements de développement (intégrés)

Java 1.5 : principales nouveautés

INF 321 : mémento de la syntaxe de Java

Génie Logiciel avec Ada. 4 février 2013

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Synchro et Threads Java TM

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Programmation Objet Java Correction

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Gestion distribuée (par sockets) de banque en Java

Initiation à JAVA et à la programmation objet.

PROGRAMMATION PAR OBJETS

Solutions du chapitre 4

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Java Licence professionnelle CISII,

Support de cours et TD Programmation Orientée Objet

Programmer en Java. OC Informatique GYMNASE DE BURIER

Java c est quoi? Java pourquoi?

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmation d application Bases de données avec Java

TP, première séquence d exercices.

Remote Method Invocation Les classes implémentant Serializable

Dis papa, c est quoi un bus logiciel réparti?

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Transcription:

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 La classe Étudiant héritera de la classe Personne. Elle correspond - notes : ArrayList<Double> au diagramme UML ci-dessous. Vous utiliserez les informations suivantes : - cours : ArrayList<String> - 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;