Le but est de modéliser une bibliothèque en utilisant le pattern Composite.
Une bibliothèque est composée de pièces.
Une pièce est composée d'étagères.
Chaque étagère contient des livres.
Les noeuds composés sont donc : bibliothèque, pièce, étagère.
La structure a un noeud terminal (sans enfant) : livre.
Chaque élément (noeud) de la structure a un champ
name
, ainsi que 3 "méthodes composites" (fonctionnant comme la méthode operation()
dans la terminologie GOF) :
Type de retour | Nom de la méthode | Action |
---|---|---|
void | print() |
Affiche une chaîne de caractères contenant :
|
int | getNombreLivres() | Renvoie le nombre de livres contenus dans tous ses descendants. |
int | getNombrePages() | Renvoie le nombre de pages des livres contenus dans tous ses descendants. |
Implémentez un composite répondant à ces spécifications et créez une bibliothèque de test dans une fonction
main()
de manière à ce que la fonction print()
de votre bibliothèque produise cet affichage :
Bibliothèque 1 : 10 livres, 2659 pages Pièce 1 : 5 livres, 1729 pages Etagère 1_1 : 3 livres, 825 pages Livre 1 : 200 pages Livre 2 : 375 pages Livre 3 : 250 pages Etagère 1_2 : 2 livres, 904 pages Livre 4 : 404 pages Livre 5 : 500 pages Pièce 2 : 5 livres, 930 pages Etagère 2_1 : 2 livres, 150 pages Livre 6 : 75 pages Livre 7 : 75 pages Etagère 2_2 : 1 livres, 75 pages Livre 8 : 75 pages Etagère 2_3 : 2 livres, 705 pages Livre 9 : 75 pages Livre 10 : 630 pages