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