Analyse, Conception et Programmation par objets
Transcription
Analyse, Conception et Programmation par objets
Analyse, Conception et Programmation par objets Exercices “UML” : diagrammes de séquence Centre de Calcul Fabien Moutarde et Norbert Kajler fmoutarde,[email protected] 60 Bd. Saint Michel 75272 Paris Cedex 06 (Dernière mise à jour le 16 septembre 2009) 1 Caisse de supermarché On considère un logiciel de caisse de supermarché dont le fonctionnement doit être le suivant : – il existe un unique catalogue référençant tous les articles existant dans le supermarché, avec pour chacun leur code-barre, leur nom, et leur prix unitaire ; – à chaque nouveau client, on crée une nouvelle facture ; – on ajoute une ligne à une facture en lisant le code-barre d’un article, et en précisant la quantité dans le cas où un même article se présente en plusieurs exemplaires sur le tapis de la caisse ; – le total d’une facture est calculé au fur et à mesure de l’enregistrement des articles. Les premières phases de l’analyse ont conduit au modèle structurel suivant : Facture -total : real +ajouterItem(In codeBarre:integer ,In nombreExemplaires:integer) +imprimerTicket() 1 Catalogue +rechercherArticle(In codeBarre:integer):Article 1 +ligne * * +référence Item +produit -quantité : integer <<create>> +Item(In article:Article ,In quantité:integer) * 1 Article -nom : string -prixUnitaire : real -code : integer F IG . 1 – Modèle structurel Faire le diagramme de séquence explicitant le fonctionnement normal de l’opération ajouterItem(codeBarre, nombreExemplaires) sur une facture en cours d’établissement, et en déduire des ajouts nécessaires au modèle structurel. 1 2 3 Correction 1 Caisse de supermarché leCatalogue:Catalogue :Facture articleReconnu:Article rechercherArticle(codeBarre) articleReconnu Item(articleReconnu, nombreExemplaires) nouvelItem:Item addProduit(articleReconnu) quantité = nbExemplaires addLigne(nouvelItem) getPrix() getPrix() prixArticle prixItem total += prixItem prixItem = quantité*prixArticle F IG . 2 – Diagramme de séquence du fonctionnement normal ajouterItem(codeBarre, nombreExemplaires) de la classe Facture Ce diagramme permet de mettre en évidence la nécessité d’ajouter au modèle structurel : – une association de la classe Facture vers la classe Catalogue ; – des opérations publiques getPrix() dans les classes Article et Item. 4 de l’opération Facture -total : real +ajouterItem(In codeBarre:integer ,In nombreExemplaires:integer) +imprimerTicket() * 1 +catalogue 1 Catalogue +rechercherArticle(In codeBarre:integer):Article 1 +ligne * * Item +référence Article +produit -quantité : integer <<create>> +Item(In article:Article ,In quantité:integer) +getPrix():real * 1 -prixUnitaire : real -nom : string -code : integer +getPrix():real F IG . 3 – Modèle structurel complété 5