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éenne) dont la valeur par défaut esttrue. Cela permettra de suivre 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 listeborrowedBookscontenant des objetsBook. Incluez un constructeur qui initialise l'id et le nom, avec une liste vide pour les livres empruntés. RedéfinisseztoString()pour renvoyer le formatUser [id]: name (X books borrowed), où X correspond au 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 indiquez s'il est disponible en utilisant le formatAvailable: trueouAvailable: false. Affichez l'utilisateur. Ajoutez ensuite le livre à la liste des livres empruntés de l'utilisateur, définissezisAvailabledu livre surfalse, puis affichez à nouveau l'utilisateur pour montrer le nombre de livres mis à jour.
Cela établit la relation entre les livres et les utilisateurs sur laquelle vous vous appuierez pour implémenter le système complet d'emprunt dans la prochaine leçon !
Résultat attendu :
[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
1Fondamentaux de la POO
Fichiers externesBibliothèques et importsIntroduction à la POOClasses vs objetsLe mot-clé thisMéthodesVariables d’instanceBases des constructeursRécapitulatif - Calculatrice simple4Sécurité face aux valeurs nulles
Introduction à la sécurité face aux valeurs nullesNullable vs Non-NullableLes opérateurs ? et !Mot-clé Late et sécurité face aux valeurs nullesOpérateurs sensibles à nullSécurité face aux valeurs nulles dans les classesRécapitulatif – Système de profil utilisateur7Classes abstraites et interfaces
Classes abstraitesMéthodes abstraitesInterfaces en DartInterfaces implicitesImplémenter ou étendreInterfaces multiplesRécapitulatif - Calculateur de formes10Collections et génériques
Vue d’ensemble des List, Set et MapCollections à typage sûrClasses génériquesMéthodes génériquesContraintes génériquesIterable et IteratorRécapitulatif – stockage générique13Concepts avancés de la POO
Composition ou héritageMéthodes d’extensionClasses appelablesClasses scellées (Dart 3)Enregistrements (Dart 3)Patterns et correspondance (3.0)Énumérations avec méthodes16Projet : gestion de bibliothèque
Vue d’ensemble du projetClasses Livre et Utilisateur2Constructeurs en Dart
Constructeur par défautConstructeurs nommésListes d'initialisationConstructeurs constantsConstructeurs factoryConstructeurs redirigésRécapitulatif - Constructeur de formes5Encapsulation
Membres publics vs privésLa convention du préfixe _Confidentialité au niveau de la bibliothèqueApprofondissement des getters et settersMasquage de l’informationRécapitulatif - Fiches des étudiants8Mixins
Introduction aux MixinsCréer des MixinsUtiliser plusieurs MixinsMot-clé on dans les MixinsMixin ou héritageMixin ou interfaceRécapitulatif - Système animal11Méthodes spéciales
Redéfinition de toString()Redéfinition de hashCode et ==Interface ComparableMéthode call()Redéfinition de noSuchMethodRécapitulatif - Collection personnalisée14Patrons de conception, partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FactoryPatron ObserverPatron Strategy3Propriétés des classes
Membres d’instance et statiquesChamps Final et ConstVariables différéesMéthodes et champs statiquesAccesseurs et mutateursRécapitulatif - Gestionnaire de compte bancaire6Héritage
Héritage de baseLe mot-clé superRedéfinition de méthodeL’annotation @overrideLe mot-clé de classe finalConstructeurs et héritageRécapitulatif – Hiérarchie des employés9Polymorphisme
Bases du polymorphismePolymorphisme via les interfacesVérification des types à l’exécutionLes opérateurs is et asMot-clé covariantRécapitulatif - Processeur de paiements12POO asynchrone
Futures et async/awaitNotions de base des StreamsContrôleurs de StreamsConstructeurs asynchronesAsynchrone dans les méthodes de classeRécapitulatif - récupérateur de données15Patrons de conception – Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode modèlePatron ÉtatPatron CompositePatron DépôtEntraînez-vous par vous-même : Compilateur Dart en ligne