Faculté des sciences économiques et de gestion de AU : 2020/2021
Sfax
Matière : Programmation Orientée Objet II Matricule : ……………………
Responsables du cours : N. Zaaboub Haddar, Nom : ………………………….
M. Ben Abdallah, F. Fakhfekh Prénom : ………………………
Filière : 2ième LFIG
Examen Final de Programmation
Orientée Objets II
Durée : 1h30 heure
Nombre de pages : 7
QCM :
1) Le code suivant :
1. class A {
2. public void maMethode ( ) {
3. try{
4. String s= "Java" ;
5. int n = [Link](s) ;}
6. catch (RuntimeException e){
7. throw new Exception() ;}}}
☐ contient une erreur de compilation dans la ligne 2
☐ contient une erreur de compilation dans la ligne 5
☐ contient une erreur de compilation dans la ligne 7
☐ ne contient aucune erreur de compilation
2) La classe Exception se trouve dans le package :
☐ [Link]
☐ [Link]
☐ [Link]
☐ [Link]
3) Quel est le type de paramètre qu’on doit passer à la méthode setDate() de la
classe PreparedStatement?
☐ [Link]
☐ [Link]
☐ [Link]
4) En Java, toute collection :
1
☐ est itérable.
☐ est une instance destinée à contenir d’autres instances.
☐ est une instance d’une classe qui implémente l’interface List.
☐ est instance d’une classe implémentant l’interface Collections.
5) En Java, une classe de collection implémentant List :
☐ peut contenir plusieurs fois le même objet.
☐ utilise la méthode equals() lors de l’ajout d’un nouvel élément.
☐ peut trier ses éléments.
☐ peut contenir des éléments de type primitif (int, char, .... )
6) Soient les variables suivantes :
LocalTime t1= [Link]() ;
LocalTime t2= [Link]() ;
LocalDateTime dt=[Link]() ;
Quelles sont les instructions correctes parmi les suivantes :
☐ Duration dr = [Link](t1, dt);
☐ Duration dr1 = [Link](t1, [Link]());
☐ Duration dr2 = [Link](t1, t2);
☐ long diff = [Link](t1, t2).toMillis();
7) Quel est l’affichage de ce programme ?
public static void main(String[] args)
{ try
{ [Link]("1");
int sum= 9/0; }
catch(ArithmeticException e)
{ [Link]("3"); }
catch(Exception e)
{ [Link]("4"); }
finally
{ [Link]("5"); } }
☐ 1325
☐ 1345
☐ 1342
☐ 135
8) Le programme suivant :
public static void main(String[] args)
{ Collection<String> c = new ArrayList<String>() ;
2
[Link]("Tunisie") ;
[Link]("Lybie") ;
[Link](null) ;
[Link]([Link]()) ;}
☐ affiche 3
☐ affiche 2
☐ contient une erreur de compilation
☐ lance une exception à l’exécution
9) Quel est l’affichage du programme suivant :
public static void main(String args[])
{ TreeSet<String> pays = new TreeSet<String>();
[Link]("Allemagne");
[Link]("Paris");
[Link]("Maroc");
[Link]("Italie");
Collection<String> pays2 = [Link]("Allemagne","Maroc");
Iterator it = [Link]();
while([Link]())
[Link]([Link]() + " ");}}
☐ Allemagne Paris Maroc
☐ Allemagne Italie
☐ Allemagne Italie Maroc
☐ Allemagne Paris
10) Quel est l’affichage du programme suivant :
public class MaClasse {
int nb;
ArrayList<String> liste;
public MaClasse (int nb){
[Link] = nb; }
public void ajouterElement(String s){
try {
[Link](s);
[Link]("Ajout effectué avec succès");
}
catch(Exception e) {
[Link]("Exception declenchée");
}}
3
public static void main(String []args){
MaClasse c = new MaClasse (0);
[Link]("Oiseau") ;
[Link]([Link]);
}}
☐ Ajout effectué avec succès [Oiseau]
☐ Exception déclenchée
☐ Ajout effectué avec succès 0
4
Exercice :
NB. :
• Documents autorisés.
• Vous pouvez ajouter à votre projet tout ce que vous jugez nécessaire pour le
bon fonctionnement de l’application.
• Vous devez utiliser partout des requêtes paramétrées.
Nous nous proposons d’écrire un programme java pour la gestion des rendez-vous dans
le cabinet d’un médecin. Ce programme doit communiquer avec une base de données
relationnelle gérée par Oracle ou MySQL. La structure physique de la base de données
est la suivante :
Figure 1. Structure de la base de données BDMedecin.
Travail à faire :
1. Créez sur votre bureau un répertoire "Test".
2. Lancez Eclipse en prenant le répertoire créé dans 1. comme espace de travail
(workspace) et créez y un nouveau projet dont le nom est composé de votre
matricule, nom et prénom. Exemple : 011111_Foulen_Ben_Foulen.
3. Exécutez le script [Link] que vous trouvez sur la plateforme de l’uvt,
dans l’espace du devoir.
4. Créez dans le projet trois packages : entities, accesBD et gestionnaires.
5. Dans le package entites, créez les classes Patient et Rdv conformément à la
figure 2 ci-dessous.
5
Figure 2. Les classes du package « entites ».
6. Dans le package ‘’accesBD’’, les classes SConnection, PatientDAO et RdvDAO
conformément à la figure 3.
Figure 3. Les classes du package « accesBD ».
7. Ajoutez à la classe PatientDAO la methode void addPatient (Patient p) qui
ajoute à la table TPatients le patient p passé en paramètre. Si le patient existe,
elle affiche le message "Le patient existe déjà".
8. Donnez le code de la méthode void addRdv(Rdv r) qui enregistre le rdv r passé
en paramètre, à la table TRdvs.
NB : Les transformations entre LocalTime et [Link] se font de façon
analogue à LocalDate et [Link]. Ainsi :
• Pour transformer une variable t de type LocalTime en [Link], on
utilise l’instruction suivante : [Link](t),
• Pour transformer une variable bdt de type [Link] en LocalTime, on
utilise l’instruction [Link]().
9. Donnez le code de la méthode TreeSet< Rdv > findAllByDate(LocalDate d) de la
classe RdvDAO, qui permet de chercher dans la table TRdvs les rendez-vous du
6
médecin à la date d passée en paramètre. Chaque rendez-vous doit être
retourné avec le code et le nom du patient l’ayant pris. La méthode renvoie un
TreeSet d’objets Rdv triés selon les heures des rdvs. Ce TreeSet peut être vide
s’il n’y a aucun rendez-vous à la date d.
10. Dans le paquetage gestionnaires définissez la classe GestionRdvs conformément
à figure 4 ci-après.
Figure 4. Les classes du package « gestionnaires ».
Tous les attributs de cette classe sont statiques. hDebMatin et hFinMatin
représentent respectivement l’heure de début et l’heure de fin de travail du
médecin le matin. hDebApm et hFinApm représentent l’horaire de travail dans
l’après-midi. Initialisez ces attributs respectivement à 9h, 13h, 15h et 18h.
De plus, l’attribut duree représente le temps qui sépare deux rendez-vous.
Initialisez-le à 1h.
11. Donnez le code de la méthode statique void ajouterRdv(Patient p, LocalDate d).
Cette méthode réalise les tâches suivantes :
a. Elle n’ajoute pas de rendez-vous si la date d passée en paramètre est
inférieure ou égale à la date du système.
b. Elle lance une exception de type PatientException si le patient p a déjà
un rendez-vous à la date d.
7
c. Elle lance une exception de type RdvException, si tous les rendez-vous
possibles à la date d sont déjà pris.
d. S’il n’y pas de rendez-vous à la date d, alors l’heure du rendez-vous qu’elle
donne au patient p est hDebMatin (voir figure 4).
e. La durée entre le nouveau rendez-vous et le dernier rendez-vous pris à la
date d doit être égale à l’attribut duree.
f. Elle enregistre le nouveau rendez-vous du patient p dans la base de
données.
12. Ajoutez dans la classe gestionRdvs une méthode main() et donnez-y les
instructions permettant de :
a. créer un patient p,
b. donner à p un rendez-vous le 15/06/2021,
c. afficher tous les rendez-vous du 09/06/2021.
Bon travail