• Examen
de : Java
• Nom de l’enseignant : A. EL GHAZI
• Niveau : Troisième année
• Durée : 1h
• Nombre de Pages : 3
• Document autorisé : Non
IMPORTANT !!!!
1. Pour le code il faut remettre le travail sous forme de plusieurs « fichier. Java » et pour
les réponses aux questions il faut remettre un seul « [Link] »
2. Il faut mettre les fichiers dans un dossier compressé avec le nom : votre Nom_ExJ_22
3. Il faut rendre le travail par email : asmae.elghazi1@[Link]
4. Un dossier reçu après 21h ne sera pas corrigé.
5. Les Fichiers word, capture d’écran, photo, ou document
illisible… ne seront pas pris en considération.
1
Base de documents
On s’intéresse au système d’information d’une médiathèque dans lequel un ensemble de documents est
répertorié : des livres, films, ou disques. Ces documents peuvent être empruntés par les clients de la
médiathèque.
Les documents sont tous caractérisés par un titre et un auteur. Du point de vue programmation, un
document est caractérisé par l’interface ci-dessous :
import Auteur;
public interface Document {
/** @return l’auteur de ce document */
public Auteur getAuteur();
/** @return le titre de ce document */
public String getTitre();
/** @return une chaîne de caractères représentant ce document */
public String toString();
/** @param l’objet à tester
* @return true si le paramètre est un document identique à this */
public boolean equals (Object o);
/** indique si le document est emprunté ou non
* @return true si le document est emprunté
*/
public boolean estEmprunte();
/** permet de marquer comme emprunté ou non un document
* @param b true si le document est emprunté, false s’il est disponible
*/
public boolean setEmprunte(boolean b);
}
1. Définir la classe Auteur qui permet de représenter les auteurs des documents. Un auteur est défini
par son nom, de type chaîne de caractères, ses dates de naissance et de décès de type Date.
La valeur de la date de décès est null si l’auteur est encore vivant. On veut pouvoir accéder aux
différentes informations sur un auteur et tester si deux objets auteurs sont égaux (mêmes nom et dates
de naissance/décès).
La classe Date est définie en annexe.
2. Définir une classe BaseDocumentaire comportant un tableau de Documents. Cette classe permet
de rechercher des documents dans le tableau par leur titre ou leur auteur (méthode recherche),
permettant de connaître les documents empruntés ou non empruntés (méthodes rechercheEmprunte et
rechercheNonEmprunte).
3. On souhaite que les méthodes de recherche renvoient une exception (NoDocumentFoundException)
à la place de null. Expliquer les étapes nécessaires pour procéder de cette manière. Modifier une des
méthodes de recherche en conséquence. Que doit faire l’utilisateur de ces méthodes ? Écrire le code
correspondant.
2
4. On veut définir plusieurs types de documents (livre, vidéo (avec ou sans sous titres), enregistrement
audio, photo, …). Ces documents peuvent être lus, regardés ou écoutés.
Comment définir ces propriétés sans utiliser d’attributs ? faites les modifications nécessaires.
Annexe : définition UML de la classe Date
Date
- jour : int
- mois : Mois
- annee : int
+ Date(j : int, mois : Mois, annee : int)
+ toString() : String
+ equals(o : Object) : boolean
+ getJour() : int
+ getMois() : Mois
+ getAnnee() : int
+ compareTo(o : Object):int
+ differenceEnJours(d : Date):int
+ static aujourdhui(): Date