Classes Livre et Utilisateur
Fait partie de la section Programmation Orientée Objet du Journey Dart de Coddy — leçon 102 sur 110.
Défi
FacileDans la leçon précédente, vous avez créé une classe Book avec des propriétés de base et une méthode toString(). Il est maintenant temps d'étendre votre système de bibliothèque en ajoutant une classe User pour représenter les membres de la bibliothèque qui peuvent emprunter des livres.
Vous devrez créer un nouveau fichier et mettre à jour vos fichiers existants :
book.dart: Améliorez votre classeBookexistante en ajoutant une propriétéisAvailable(booléen) qui a pour valeur par défauttrue. Cela permettra de savoir si un livre peut être emprunté.user.dart: Créez une nouvelle classeUserpour représenter les membres de la bibliothèque. Chaque utilisateur doit avoir unid(String), unname(String) et une listeborrowedBooksqui contient des objetsBook. Incluez un constructeur qui initialise l'id et le nom, avec une liste vide pour les livres empruntés. SurchargeztoString()pour retourner le formatUser [id]: name (X books borrowed)où X est le nombre de livres empruntés.main.dart: Importez vos fichiers book et user. Créez un livre avec l'ISBN978-0-13-468599-1, le titreThe Pragmatic Programmeret l'auteurDavid Thomas. Créez un utilisateur avec l'idU001et le nomAlice Johnson. Affichez le livre, puis affichez s'il est disponible en utilisant le formatAvailable: trueouAvailable: false. Affichez l'utilisateur. Ensuite, ajoutez le livre à la liste des livres empruntés de l'utilisateur, définissez leisAvailabledu livre surfalse, et affichez à nouveau l'utilisateur pour montrer le nombre de livres mis à jour.
Ceci établit la relation entre les livres et les utilisateurs sur laquelle vous vous appuierez lors de l'implémentation du système d'emprunt complet dans la prochaine leçon !
Sortie attendue :
[978-0-13-468599-1] The Pragmatic Programmer by David Thomas
Available: true
User U001: Alice Johnson (0 books borrowed)
User U001: Alice Johnson (1 books borrowed)Essayez vous-même
import 'book.dart';
// TODO: Importer user.dart
void main() {
// TODO: Créer un livre avec l'ISBN '978-0-13-468599-1', le titre 'The Pragmatic Programmer', et l'auteur 'David Thomas'
// TODO: Créer un utilisateur avec l'id 'U001' et le nom 'Alice Johnson'
// TODO: Afficher le livre
// TODO: Afficher si le livre est disponible en utilisant le format : Available: true/false
// TODO: Afficher l'utilisateur
// TODO: Ajouter le livre à la liste borrowedBooks de l'utilisateur
// TODO: Définir isAvailable du livre à false
// TODO: Afficher à nouveau l'utilisateur pour montrer le nombre de livres mis à jour
}
Toutes les leçons de Programmation Orientée Objet
1Les bases de la POO
Fichiers externesBibliothèques et importsIntroduction à la POOClasses vs ObjetsLe mot-clé thisMéthodesVariables d'instanceBases des constructeursRécapitulatif - Calculatrice simple4Null Safety
Introduction à la Null SafetyNullable vs Non-NullableLes opérateurs ? et !Le mot-clé late et la Null SafetyLes opérateurs Null-AwareLa Null Safety dans les classesRécapitulatif - Système de profil utilisateur7Classes abstraites et Interfaces
Classes abstraitesMéthodes abstraitesInterfaces en DartInterfaces implicitesImplémentation vs ExtensionInterfaces multiplesRécapitulatif - Calculateur de formes10Collections et Génériques
Aperçu des List, Set et MapCollections Type-SafeClasses génériquesMéthodes génériquesContraintes de généricitéIterable & IteratorRécapitulatif - Stockage générique13Concepts avancés de la POO
Composition vs HéritageMéthodes d'extensionClasses appelablesClasses scellées (Dart 3)Records (Dart 3)Patterns et Matching (3.0)Enums avec méthodes16Projet : Gestion de bibliothèque
Présentation du projetClasses Livre et Utilisateur2Les constructeurs en Dart
Constructeur par défautConstructeurs nommésListes d'initialisationConstructeurs constantsConstructeurs factoryConstructeurs de redirectionRécapitulatif - Shape Builder5Encapsulation
Membres publics vs privésLa convention du préfixe _Visibilité au niveau de la bibliothèqueApprofondissement des Getters & SettersMasquage d'informationsRécapitulatif - Dossiers d'étudiants8Mixins
Introduction aux MixinsCréation de MixinsUtilisation de plusieurs MixinsLe mot-clé on dans les MixinsMixin vs HéritageMixin vs InterfaceRécapitulatif - Système Animal11Méthodes spéciales
Redéfinition de toString()Redéfinition de hashCode & ==Interface ComparableMéthode call()Redéfinition de noSuchMethodRécapitulatif - Collection personnalisée14Patrons de conception Partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FabriquePatron ObservateurPatron Stratégie3Propriétés de classe
Membres d'instance vs statiquesChamps Final & ConstVariables LateMéthodes et champs statiquesGetters et SettersRécapitulatif - Gestionnaire de compte bancaire6Héritage
Bases de l'héritageLe mot-clé superRedéfinition de méthodeL'annotation @overrideLe mot-clé final pour les classesConstructeurs et héritageRécapitulatif - Hiérarchie des employés9Polymorphisme
Bases du polymorphismePolymorphisme via les interfacesVérification de type à l'exécutionLes opérateurs is & asMot-clé covariantRécapitulatif - Processeur de paiement12POO Asynchrone
Futures & async/awaitBases des StreamsStream ControllersConstructeurs asynchronesL'asynchrone dans les méthodes de classeRécapitulatif - Data Fetcher15Patrons de conception Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode ModèlePatron ÉtatPatron CompositePatron Repository