Présentation du projet et conception UML
Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy. Leçon 77 sur 87.
Défi
FacileCommençons le projet de système de gestion de bibliothèque en construisant les fondations : les classes d’entités essentielles dont tout le reste dépendra. Ce premier défi consiste à créer des classes Book et User bien structurées qui modélisent les entités principales du système.
Vous organiserez votre code dans trois fichiers :
Book.java: créez la classeBookqui représente un livre de bibliothèque. Chaque livre doit posséder des champs privés pourisbn(String),title(String),author(String) etisAvailable(boolean, initialisé par défaut àtrue). Incluez un constructeur qui accepte isbn, title et author. Fournissez les méthodes getter appropriées pour tous les champs, ainsi qu’un setter pourisAvailable. Ajoutez une méthodegetDetails()qui renvoie une chaîne formatée :[isbn] title by author.User.java: créez la classeUserreprésentant un membre de la bibliothèque. Chaque utilisateur doit posséder des champs privés pourid(String) etname(String). Incluez un constructeur qui accepte les deux valeurs et fournissez des méthodes getter pour chaque champ. Ajoutez une méthodetoString()qui renvoie :User[id]: name.Main.java: réunissez vos classes pour démontrer qu’elles fonctionnent correctement. Vous recevrez cinq entrées : l’ISBN, le titre et l’auteur d’un livre, puis l’identifiant et le nom d’un utilisateur.Créez un
Bookavec les trois premières entrées et unUseravec les deux dernières. Affichez les détails du livre à l’aide degetDetails(), puis affichez si le livre est disponible au formatAvailable: trueouAvailable: false. Enfin, affichez l’utilisateur à l’aide de sa méthodetoString().
Vous recevrez cinq entrées dans l’ordre suivant : ISBN (String), titre (String), auteur (String), identifiant utilisateur (String) et nom d’utilisateur (String).
Par exemple, avec les entrées 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 et Alice Smith, votre sortie serait :
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithCes classes fondamentales serviront de briques de base pour l’ensemble du système de gestion de bibliothèque. Dans les prochaines leçons, vous les compléterez avec des fonctionnalités d’emprunt, des capacités de recherche et bien plus encore !
Essayez vous-même
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Lire les informations du livre
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// Lire les informations de l'utilisateur
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: Créer un objet Book avec isbn, title et author
// TODO: Créer un objet User avec userId et userName
// TODO: Afficher les détails du livre en utilisant getDetails()
// TODO: Print whether the book is available (format: "Available: true" or "Available: false")
// TODO: Afficher l'utilisateur en utilisant toString()
}
}
Toutes les leçons de Programmation Orientée Objet
1Fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses vs ObjetsLe mot-clé thisMéthodesChamps (Attributs)Méthode constructeurSurcharge de constructeurRécapitulatif - Calculatrice simple4Héritage
Héritage de base (extends)Le mot-clé superRedéfinition de méthode (@Override)Chaînage de constructeursLa classe ObjectHéritage simple et multiniveauPourquoi pas d'héritage multiple de classesRécapitulatif - Hiérarchie des employés7Méthodes spéciales et classe Object
Méthode toString()equals() et hashCode()Méthode clone()compareTo() et ComparableInterface ComparatorRécapitulatif - Tri personnalisé10Gestion des exceptions en POO
Hiérarchie des classes d'exceptionExceptions personnaliséesErreurs Checked vs UncheckedPattern Try-with-resourcesRécapitulatif - Utilisateur validé13Projet : Gestion de bibliothèque
Présentation du projet et conception UMLClasses Livre et UtilisateurSystème d'empruntFonctionnalité de rechercheInterface administrateurIntégration de la gestion des exceptionsTests et intégration2Modificateurs d'accès et Encapsulation
Aperçu des niveaux d'accèsMéthodes Getter et SetterMasquage d'informationsLe mot-clé finalRécapitulatif - Gestionnaire de compte bancaire5Polymorphisme
Bases de la surcharge de méthodesRedéfinition de méthodes (Run-Time)Upcasting et DowncastingL'opérateur instanceofClasses et méthodes abstraitesRécapitulatif - Calculateur de formes8Concepts avancés de la POO
Composition vs HéritageAgrégation vs CompositionClasses internes, imbriquées et anonymesEnums et méthodes d'EnumRecords (Java 16+)Classes scellées (Java 17+)11Patrons de conception, partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FabriquePatron MonteurPatron ObservateurPatron Stratégie3Propriétés de classe et membres statiques
Variables d'instance vs variables statiquesMéthodes statiquesBlocs statiquesConstantes (static final)Récapitulatif - Compteur et utilitaire6Interfaces et Classes Abstraites
Introduction aux InterfacesImplémentation d'InterfacesImplémentation d'Interfaces MultiplesDefault et Static dans les InterfacesClasses Abstraites vs InterfacesInterfaces FonctionnellesRécapitulatif - Système de Paiement9La généricité
Introduction à la généricitéClasses génériquesMéthodes génériquesParamètres de type bornésWildcards (?, extends, super)Récapitulatif - Conteneur générique12Patrons de conception, partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Template MethodPatron ÉtatPatron CompositePatron ItérateurEntraînez-vous par vous-même : Compilateur Java en ligne