import [Link].
*;
// Interface Document
interface Document {
void afficherDetails();
}
// Classe abstraite Périodique
abstract class Périodique implements Document {
String titre;
String auteur;
String periode;
int exemplairesDisponibles;
Périodique(String titre, String auteur, String periode, int
exemplairesDisponibles) {
[Link] = titre;
[Link] = auteur;
[Link] = periode;
[Link] = exemplairesDisponibles;
}
}
// Classe Livre
class Livre implements Document {
String titre;
String auteur;
int nombrePages;
int exemplairesDisponibles;
Livre(String titre, String auteur, int nombrePages, int exemplairesDisponibles)
{
[Link] = titre;
[Link] = auteur;
[Link] = nombrePages;
[Link] = exemplairesDisponibles;
}
@Override
public void afficherDetails() {
[Link]("Titre: " + titre);
[Link]("Auteur: " + auteur);
[Link]("Nombre de pages: " + nombrePages);
[Link]("Exemplaires disponibles: " + exemplairesDisponibles);
}
}
// Classe Revue
class Revue extends Périodique {
Revue(String titre, String auteur, String periode, int exemplairesDisponibles)
{
super(titre, auteur, periode, exemplairesDisponibles);
}
@Override
public void afficherDetails() {
[Link]("Titre: " + titre);
[Link]("Auteur: " + auteur);
[Link]("Période: " + periode);
[Link]("Exemplaires disponibles: " + exemplairesDisponibles);
}
}
// Classe Article
class Article extends Périodique {
Article(String titre, String auteur, String periode, int
exemplairesDisponibles) {
super(titre, auteur, periode, exemplairesDisponibles);
}
@Override
public void afficherDetails() {
[Link]("Titre: " + titre);
[Link]("Auteur: " + auteur);
[Link]("Période: " + periode);
[Link]("Exemplaires disponibles: " + exemplairesDisponibles);
}
}
// Classe Adhérent
class Adherent {
String nom;
String prenom;
int matricule;
String email;
List<Document> documentsEmpruntes;
Adherent(String nom, String prenom, int matricule, String email) {
[Link] = nom;
[Link] = prenom;
[Link] = matricule;
[Link] = email;
[Link] = new ArrayList<>();
}
void emprunter(Document document) {
[Link](document);
}
void afficherEmprunts() {
[Link]("Livres empruntés par " + nom + " " + prenom + ":");
for (Document document : documentsEmpruntes) {
[Link]();
}
}
void rendre(Document document) {
[Link](document);
}
// Autres méthodes à implémenter selon les besoins
}
// Classe Bibliothèque
class Bibliothèque {
List<Document> documents;
List<Adherent> adherents;
// Autres variables membres et méthodes à implémenter
Bibliothèque() {
documents = new ArrayList<>();
adherents = new ArrayList<>();
}
void ajouterDocument(Document document) {
[Link](document);
}
void afficherTousDocuments() {
for (Document document : documents) {
[Link]();
}
}
// Autres méthodes à implémenter selon les besoins
}
// Classe MainBibliotheque pour les tests
public class MainBibliotheque {
public static void main(String[] args) {
// Création de la bibliothèque
Bibliothèque bibliothèque = new Bibliothèque();
// Création de 5 instances de chaque type de document et ajout à la
bibliothèque
for (int i = 0; i < 5; i++) {
Livre livre = new Livre("Titre Livre " + (i + 1), "Auteur Livre " + (i
+ 1), 200, 10);
Revue revue = new Revue("Titre Revue " + (i + 1), "Auteur Revue " + (i
+ 1), "Janvier 202" + (i + 1), 20);
Article article = new Article("Titre Article " + (i + 1), "Auteur
Article " + (i + 1), "Janvier 202" + (i + 1), 30);
bibliothè[Link](livre);
bibliothè[Link](revue);
bibliothè[Link](article);
}
// Tests des fonctionnalités de la bibliothèque
bibliothè[Link]();
// Autres tests à effectuer selon les fonctionnalités à vérifier
}
}