0% ont trouvé ce document utile (0 vote)
6 vues9 pages

Révision Java : Gestion d'Hôpital

Le document est un examen de révision pour un module de conception orientée objet et programmation Java, axé sur le développement d'une application de gestion d'hôpital. Les étudiants doivent compléter plusieurs classes Java incomplètes, notamment Patient, ListPatients, Medecin, SetMedecins et Hopital, en suivant des instructions spécifiques. En outre, le document contient une partie QCM sur les concepts de Java et les opérations sur les flux.

Transféré par

mnassrimayssa4
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues9 pages

Révision Java : Gestion d'Hôpital

Le document est un examen de révision pour un module de conception orientée objet et programmation Java, axé sur le développement d'une application de gestion d'hôpital. Les étudiants doivent compléter plusieurs classes Java incomplètes, notamment Patient, ListPatients, Medecin, SetMedecins et Hopital, en suivant des instructions spécifiques. En outre, le document contient une partie QCM sur les concepts de Java et les opérations sur les flux.

Transféré par

mnassrimayssa4
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Année Universitaire : 2015-2016

Examen de Révision
Module : Conception orientée objet et programmation Java Documents autorisés : Non
Enseignants : Equipe Java Nombre de pages : 5
Date : Heure : Durée : 1h30
Classes : 3INFO A, 4INFINI

GESTION D’UN HÔPITAL : RÉVISION

Nous souhaitons développer une application simplifiée de gestion d’un hôpital. Pour réaliser notre
application, nous vous demandons de compléter les classes présentées ci-dessous.
Les parties à compléter sont numérotées de 1 à 26. Vous devez mettre dans vos copies le numéro
correspondant à chaque code ajouté. Vous mettez juste la partie à compléter sans réécrire aucune ligne
de code déjà donnée dans l’énoncé.
Travail demandé :
En précisant le numéro de chaque partie à ajouter :
1) Complétez la classe Patient. Deux patients sont égaux en cas d’égalité de leurs cin ainsi que leurs
numéros de sécurité sociale.
2) Complétez la classe ListPatients regroupant un ensemble de patients dans un ArrayList. Complétez les
méthodes de cette classe sachant qu’elle implémente l’interface InterfacePatient.
3) Complétez la classe Medecin.
4) Complétez la classe SetMedecins qui regroupe un ensemble de Medecin dans un HashSet. Faites le
nécessaire pour que le HashSet n’accepte pas les doublons.
5) Complétez la classe Hopital qui regroupe pour chaque Medecin l’ensemble de ses patients dans un
hashMap.
Remarque : Toutes les classes sont présentées dans l’ANNEXE ci-dessous, vous êtes amenés à
compléter juste le code incomplet.
ANNEXE :
public class Patient {

private int cin;


private String nom;
private String prenom;
private int numSecuriteSociale;

public Patient() {
}

public Patient(int cin, String nom, String prenom, int numSecuriteSociale) {


[Link] = cin;
[Link] = nom;
[Link] = prenom;
[Link] = numSecuriteSociale;
}
Page 1/9
public int getCin() {
return cin;
}

public void setCin(int cin) {


[Link] = cin;
}

public String getNom() {


return nom;
}

public void setNom(String nom) {


[Link] = nom;
}

public int getNumSecuriteSociale() {


return numSecuriteSociale;
}

public void setNumSecuriteSociale(int numSecuriteSociale) {


[Link] = numSecuriteSociale;
}

public String getPrenom() {


return prenom;
}

public void setPrenom(String prenom) {


[Link] = prenom;
}

public String toString() {


/*à completer*/ (1) (1 point)
}

public boolean equals(Object obj) {


/*à completer*/ (2) (1 point)
}
}

public interface InterfacePatient {


public void ajouterPatient(Patient p);
public void supprimerPatient(Patient p);
public boolean rechercherPatient(Patient p);
public boolean rechercherPatient(int cin);
public void afficherPatients();
public void trierPatientsParNom();
}

public class ListPatients /*à completer*/ (3) { (0.5 point)

private List<Patient> listP;

public ListPatients(){
/*à completer*/ (4) (0.5 point)
}
Page 2/9
public void ajouterPatient(Patient p) {
/*à completer*/ (5) (0.5 point)
}

public void supprimerPatient(Patient p) {


/*à completer*/ (6) (0.5 point)
}
/* Avec l’api Stream */
public boolean rechercherPatient(Patient p){
/*à completer*/ (7) (0.5 point)
}
/* Avec l’api Stream */
public boolean rechercherPatient(int cin) {
/*à completer*/ (8) } (1 point)
/* Avec lambda expression*/
public void afficherPatients() {
/*à completer*/ (9) (1 point)
}
/* Avec l’api Stream */
public void trierPatientsParNom() {
/*à completer */ (10) (1 point)
}
/* Avec l'api stream */
public void PatientSansRedondance(){
/*à completer : Afficher la liste des patients sans redondance*/
}
}

public class Medecin

private int cin;


private String nom;
private String prenom;
private int numOrdre;

public Medecin(int cin, String nom, String prenom, int numOrdre) {


[Link] = cin;
[Link] = nom;
[Link] = prenom;
[Link] = numOrdre;
}

public int getCin() {


return cin;
}

public void setCin(int cin) {


[Link] = cin;
}

public String getNom() {


return nom;
}

public void setNom(String nom) {


[Link] = nom;
}

public int getNumOrdre() {


return numOrdre;
}
public String toString() {
/*à completer*/ (11) (1 point)

Page 3/9
}

public boolean equals(Object obj) {


/*à completer*/ (12) (1 point)
}

public int hashCode(){


/*à completer*/ (13) indication : le HashSet n’accepte pas les doublons
(1 point)
}

public class SetMedecins {

private Set<Medecin> setM;

public SetMedecins(){
/*à completer*/ (14) (1 point)
}

public void ajouterMedecin(Medecin m) {


/*à completer*/ (15) (0.5 point)
}
/* Avec l’api Stream */
public boolean rechercherMedecin(int cin) {
/*à completer*/ (16) (1 point)
}
/* Avec lambda expression */
public void afficherMedecins() {
/*à completer*/ (17) } (1 point)
/* Avec l’api Stream */
public long nombreMedecins(){
/*à completer*/
}
/* Avec l’api Stream */
public TreeSet<Medecin> trierMedecins(){
/*à completer*/
}

public class Hopital {

public Map<Medecin,ListPatients> medecinPatients;

public Hopital(){
/*à completer*/ (18) (0.5 point)

public void ajouterMedecin(Medecin m){


/*à completer*/ (19) (0.5 point)
}

public void ajouterPatient(Medecin m,Patient p){


if([Link](m)){

/*à completer*/ (20) (1 point)


}else {
/*à completer*/ (21) (1 point) }
}
/*Avec lambda expression */
public void afficherMap(){
/*à completer*/
Page 4/9
}

/* Afficher les patients d’un medecin dont le nom est "mohamed" */


public void afficherMedcinPatients (Medecin m){
/*à completer*/
}
/* Retourner les noms des patients dont le " numSecuriteSociale = 1" */
public List<String> RetournerNomPatients (){
/*à completer*/
}
}

Fin Examen
Partie Stream Rev
package [Link];

import [Link];
import [Link];

import [Link];

public class Level1 {


public static void main(String[] args) {
List<Employee> employees = [Link]();

/* TO DO 1: Afficher tous les employés */


[Link]().forEach(/* TO DO 1 */);

/*
* TO DO 2: Afficher les employés dont le nom commence par la lettre n
*/
[Link]().filter(/* TO DO 2 */).forEach(/* TO DO 2 */);

/*
* TO DO 3: Afficher les employés dont le nom commence par la lettre n
* et le salaire> 1000
*/
[Link]().filter(/* TO DO 3 */).filter(/* TO DO 3 */)
.forEach(/* TO DO 3 */);

/*
* TO DO 4: Afficher les employés dont le nom commence par la lettre s
* triés par salaire
*/

Page 5/9
[Link]().filter(/* TO DO 4 */).sorted(/* TO DO 4 */)
.forEach(/* TO DO 4 */);

/*
* TO DO 5: Afficher les noms des employés dont le salaire > 600 avec 2
* maniéres différentes
*/
/* First Way */
[Link]().filter(/* TO DO 5 */).forEach(/* TO DO 5 */);
/* Second Way */
[Link]().filter(/* TO DO 5 */).map(/* TO DO 5 */)
.forEach(/* TO DO 5 */);

/*
* TO DO 6: Ajouter 200 D pour les employés dont le nom commence avec m
* et les affichés ensuite
*/
[Link]().filter(/* TO DO 6 */).forEach(/* TO DO 6 */);

}
}

public class Level2 {


public static void main(String[] args) {
List<Employee> employees = [Link]();

/* TO DO 1: Retourner le nombre des employ�s dont le nom commence avec n */


long nbr = [Link]()./*TO DO 1 */

/* TO DO 2: Retourner la somme des salaires de tous les employ�s (hint: mapToInt) */


long sum = [Link]()./* TO DO 2 */;

/* TO DO 3: Retourner la moyenne des salaires des employ�s dont le nom commence avec s */
double average = [Link]()./* TO DO 3 */;

/* TO DO 4: Retourner la liste de tous les employ�s */


List<Employee> emps = [Link]()./* TO DO 4 */;

/* TO DO 5: Retourner la liste des employ�s dont le nom commence par s */

Page 6/9
List<Employee> emps2 = [Link]()./* TO DO 5 */;

/* TO DO 6: Retourner true si il y a au min un employ�s dont le salaire > 1000, false si non
*/
boolean test = [Link]()./* TO DO 6 */

/* TO DO 7: Afficher le premier employ� dont le nom commence avec s avec deux mani�res diff�rentes */
/*First way*/
[Link]()./* TO DO 7 */
/*Second way*/
[Link]()./* TO DO 7 */

/* TO DO 8: Afficher le second employ� dont le nom commence avec s */


[Link]()./* TO DO 8 */

}
}

public class Level3 {


public static void main(String[] args) {
List<Employee> employees = [Link]();

/* TO DO 1: Retourner une chaine de caract�re qui contient tous les noms des employ�s */
String names = [Link]()./* TO DO 1 hint(reduce)*/;

/* TO DO 2: Retourner une chaine de caract�re qui contient tous les noms des employ�s en majuscule
separ�s par # */
String namesMajSplit = [Link]()./* TO DO 2 */;

/* TO DO 3: Retourner une set d'employ�s*/


Set<Employee> emps = [Link]()./* TO DO 3 */;

/* TO DO 4: Retourner une TreeSet d'employ�s (tri par nom) */


TreeSet<Employee> emps2 = [Link]()./* TO DO 4 */

/* TO DO 5: Retourner une Map qui regroupe les employ�s par salaire */


Map<Integer, List<Employee>> map = [Link]()./* TO DO 5 */

Page 7/9
/* TO DO 6: Retourner une Map qui regroupe les nom des employ�s par salaire */
Map<Integer, String> mm = [Link]()./*TO DO 6*/

/* TO DO 7: Retourner le min, max,average, sum,count des salaires */


String s = [Link]()./* TO DO 7 */

}
}

Partie QCM :
Q1. Quel mot-clé permet l’héritage en Java ?
A. implements
B. extends
C. inherit
D. super
Q2 Une classe Java peut hériter de :
A. Plusieurs classes
B. Une seule classe
C. Aucune classe
D. Une interface uniquement
Q3. Le polymorphisme permet :
A. D’avoir plusieurs constructeurs
B. D’exécuter différentes implémentations via une même référence
C. D’empêcher l’héritage
D. D’accéder aux attributs privés
Q4. Quelle collection accepte les doublons ?
A. Set
B. Map
C. List
D. HashSet
Q5. À quoi sert un Stream ?
A. Modifier une collection
B. Lire/écrire des fichiers
C. Traiter des données de manière fonctionnelle
D. Créer des threads
Q6. Une opération terminale est :
A. filter()
B. map()
C. collect()
D. peek()

Page 8/9
Q7. Quelle est la syntaxe correcte d’une lambda ?
A. (a, b) => a + b
B. (a, b) -> a + b
C. a, b -> return a + b
D. (a + b)
Q8. Quel type est souvent utilisé avec [Link]() ?
A. Consumer
B. Supplier
C. Predicate
D. Function

Page 9/9

Vous aimerez peut-être aussi