0% found this document useful (0 votes)
16 views

Guide_Pas_a_Pas_Bibliotheque_Java

Uploaded by

bintinazraa
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Guide_Pas_a_Pas_Bibliotheque_Java

Uploaded by

bintinazraa
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Guide Pas-à-Pas : Système de Gestion de Bibliothèque en Java

1. Mise en Place du Projet

Créer la Structure des Répertoires du Projet :


Créer des packages :
- modèles pour les classes principales (Livre, Utilisateur, etc.).
- services pour les fonctionnalités de gestion de la bibliothèque.
- utils pour les classes ou méthodes utilitaires si nécessaire.

Configurer la Classe Principale :


Créer une classe principale dans le package racine pour gérer le point d'entrée de
l'application.

2. Définir la Classe Abstraite Book


Package : modèles

Code : Java

package models;

public abstract class Book {

private String title;

private String author;

private String ISBN;

private boolean isAvailable;

public Book(String title, String author, String ISBN) {

this.title = title;

this.author = author;

this.ISBN = ISBN;

this.isAvailable = true; // Default: available

Page 1 / 13
public String getTitle() {

return title;

public String getAuthor() {

return author;

public String getISBN() {

return ISBN;

public boolean isAvailable() {

return isAvailable;

public void setAvailable(boolean available) {

isAvailable = available;

public abstract double calculateLateFees(int daysLate);

@Override

public String toString() {

return "Book{" +

Page 2 / 13
"title='" + title + '\'' +

", author='" + author + '\'' +

", ISBN='" + ISBN + '\'' +

", isAvailable=" + isAvailable +

'}';

3. Créer des Sous-classes de Book


Package : modèles

Exemples : Java

package models;

public class FictionBook extends Book {

public FictionBook(String title, String author, String ISBN) {

super(title, author, ISBN);

@Override

public double calculateLateFees(int daysLate) {

return daysLate * 1.5; // Fiction: $1.5 per day

public class NonFictionBook extends Book {

public NonFictionBook(String title, String author, String ISBN) {

super(title, author, ISBN);

Page 3 / 13
}

@Override

public double calculateLateFees(int daysLate) {

return daysLate * 2.0; // Non-Fiction: $2 per day

4. Définir la Classe User


Package : modèles

Code : Java

package models;

import java.util.ArrayList;

public class User {

private String name;

private String userType; // e.g., Member, Librarian

private ArrayList<Book> borrowedBooks;

public User(String name, String userType) {

this.name = name;

this.userType = userType;

this.borrowedBooks = new ArrayList<>();

public String getName() {

Page 4 / 13
return name;

public String getUserType() {

return userType;

public ArrayList<Book> getBorrowedBooks() {

return borrowedBooks;

public void borrowBook(Book book) {

if (book.isAvailable()) {

borrowedBooks.add(book);

book.setAvailable(false);

System.out.println(name + " borrowed " + book.getTitle());

} else {

System.out.println(book.getTitle() + " is not available.");

public void returnBook(Book book) {

if (borrowedBooks.contains(book)) {

borrowedBooks.remove(book);

book.setAvailable(true);

System.out.println(name + " returned " + book.getTitle());

Page 5 / 13
} else {

System.out.println("Book not found in " + name + "'s borrowed list.");

@Override

public String toString() {

return "User{" +

"name='" + name + '\'' +

", userType='" + userType + '\'' +

", borrowedBooks=" + borrowedBooks +

'}';

5. Créer la Classe Library


Package: services

Code : Java

package services;

import models.Book;

import models.User;

import java.util.ArrayList;

public class Library {

private ArrayList<Book> books;

Page 6 / 13
private ArrayList<User> users;

public Library() {

this.books = new ArrayList<>();

this.users = new ArrayList<>();

public void addBook(Book book) {

books.add(book);

System.out.println(book.getTitle() + " added to the library.");

public void addUser(User user) {

users.add(user);

System.out.println(user.getName() + " registered as a user.");

public void displayAvailableBooks() {

System.out.println("Available Books:");

for (Book book : books) {

if (book.isAvailable()) {

System.out.println(book);

Page 7 / 13
public User findUser(String name) {

for (User user : users) {

if (user.getName().equalsIgnoreCase(name)) {

return user;

return null;

6. Implémenter la Classe Main


Package: root package

Code : Java

import models.FictionBook;

import models.NonFictionBook;

import models.User;

import services.Library;

public class Main {

public static void main(String[] args) {

Library library = new Library();

// Adding Books

library.addBook(new FictionBook("The Great Gatsby", "F. Scott Fitzgerald", "12345"));

library.addBook(new NonFictionBook("Sapiens", "Yuval Noah Harari", "67890"));

Page 8 / 13
// Adding Users

User user1 = new User("Alice", "Member");

User user2 = new User("Bob", "Member");

library.addUser(user1);

library.addUser(user2);

// Display Books

library.displayAvailableBooks();

// Borrow and Return Books

user1.borrowBook(library.findUser("Alice").getBorrowedBooks().get(0));

library.displayAvailableBooks();

user1.returnBook(library.findUser("Alice").getBorrowedBooks().get(0));

library.displayAvailableBooks();

7. Définir l’interface Autorisable

package models;

public interface Autorisable {

boolean hasPermission(String action);

8. Implémenter l’interface Autorisable dans la classe User

package models;

Page 9 / 13
import java.util.ArrayList;

public class User implements Autorisable {

private String name;

private String userType; // e.g., "Member", "Librarian"

private ArrayList<Book> borrowedBooks;

public User(String name, String userType) {

this.name = name;

this.userType = userType;

this.borrowedBooks = new ArrayList<>();

public String getName() {

return name;

public String getUserType() {

return userType;

public ArrayList<Book> getBorrowedBooks() {

return borrowedBooks;

@Override

Page 10 / 13
public boolean hasPermission(String action) {

if (userType.equalsIgnoreCase("Librarian")) {

// Librarians have permission for all actions

return true;

} else if (userType.equalsIgnoreCase("Member")) {

// Members can only borrow and return books

return action.equalsIgnoreCase("borrow") || action.equalsIgnoreCase("return");

// Default: No permission

return false;

9. Augmenter la classe Library pour intégrer les permissions

package services;

import models.Book;

import models.User;

import java.util.ArrayList;

public class Library {

private ArrayList<Book> books;

private ArrayList<User> users;

Page 11 / 13
public Library() {

this.books = new ArrayList<>();

this.users = new ArrayList<>();

public void addBook(Book book, User user) {

if (user.hasPermission("addBook")) {

books.add(book);

System.out.println(book.getTitle() + " added to the library by " + user.getName());

} else {

System.out.println(user.getName() + " does not have permission to add books.");

public void borrowBook(User user, Book book) {

if (user.hasPermission("borrow") && book.isAvailable()) {

user.borrowBook(book);

} else {

System.out.println(user.getName() + " cannot borrow the book.");

10. Démontrer l’usage de l’interface Autorisable et les vérifications de permission

import models.*;

Page 12 / 13
import services.*;

public class Main {

public static void main(String[] args) {

Library library = new Library();

// Create books

Book book1 = new FictionBook("The Hobbit", "J.R.R. Tolkien", "12345");

Book book2 = new NonFictionBook("Sapiens", "Yuval Noah Harari", "67890");

// Create users

User librarian = new User("Alice", "Librarian");

User member = new User("Bob", "Member");

// Add books

library.addBook(book1, librarian); // Success

library.addBook(book2, member); // Permission denied

// Borrow books

library.borrowBook(member, book1); // Success

library.borrowBook(librarian, book2); // Success (librarians have all permissions)

Page 13 / 13

You might also like