Enonc : La socit C fabrique des pices mtalliques ralises dans son atelier. La socit C est en relation commerciale uniquement avec des clients rguliers. Les factures sont mensualises : toutes les commandes dun client dans le mois sont factures la fin du mois. A la rception dune commande, le secrtariat de la socit C dite un bon de fabrication quelle transmet latelier (un double de ce bon de fabrication est envoy au client). Une fois la pice fabrique, latelier complte le bon de fabrication et le transmet au secrtariat qui enregistre la date de fin de fabrication et informe le client que sa pice est disponible latelier. A la fin du mois, les factures sont dites. Une facture est dite pour chaque client ayant effectu une commande dans le mois. Si une facture nest pas paye dans le dlai de 10 jours ouvrables alors une lettre de relance est envoye au client : tant quil naura pas pay sa facture aucune de ses commandes ne sera acceptes : chaque fois quil effectuera une commande, une lettre de refus de commande lui sera envoy. Une facture paye est archive 10 ans et ensuite dtruite. Hypothse : nous considrons que tous les paiements sont corrects : un client paye le total factur ou il nenvoie pas de rglement. Hors Contexte : lenregistrement de nouveau client est hors contexte. Travail Faire : 1. Etablir le Diagramme de Classe 2. Etablir le Diagramme de Cas dUtilisation 3. Etablir le Diagramme de squence (Enregistrer une commande) 4. Etablir le Diagramme de squence (Refuser une commande) 5. Etablir le Diagramme de squence (Enregistrer la fin de la ralisation dune pice) 6. Etablir le Diagramme de squence (Edition dune facture) 7. Etablir le Diagramme de squence (Relancer un client qui na pas pay une facture) 8. Etablir le Diagramme de squence (Enregistrer un paiement) 9. Etablir le diagramme Etat/Transition de la classe COMMANDE 10. Etablir le diagramme Etat/Transition de la classe FACTURE 11. Etablir le diagramme Etat/Transition de la classe CLIENT
COMMANDE - num_cmd : Integer - date_cmd : Date - desc_piece : String - prix_cmd : Currency - date_realisation : Date = NULL + nv_cmd() + ARR_bon_fab_complet() 0..* facturation
FACTURE - num-fact : Integer - /prix_fact : Currency 1..* - date_fact : Date - date_relance : Date = NULL - date_paiement : Date = NULL
0..*
cmd
paiement 1..1 CLIENT - num_clt : Integer - nom_clt : String - adr_clt : String - etat_clt : String + ARR_cmd() + a_payer() + est_debiteur() + ARR_fin_mois() 1..1
La signature des oprations : ARR_cmd (desc_piece : String, prix_cmd : Currency) : Void a_payer () : Void est_debiteur () : Void ARR_fin_mois () : Void nv_cmd (clt :CLIENT, desc_piece : String, prix_cmd : Currency): Void ARR_bon_fab_complet (date_realisation : Date) : Void dde_fact (clt : CLIENT, {cmd : COMMANDE}) : Void ARR_paiement (somme_payee : Currency) : Void ARR_date_relance () : Void ARR_fin_archivage () : Void
Gestion des commandes de pices fabriques par la socit C Client facture_env relance_env refus_cmd_env info_piece_env double_bon_fab_env Horloge dde_temporisation_env
Atelier bon_fab_env
:COMMANDE
:Atelier
bon_fab_env
double_bon_fab_env
refus_cmd_env
:FACTURE :Client
facture_env
dde_temporisation_env oyee
Le diagramme de squence Vrifier quun client na pas fait de commande durant le prcdent mois : :CLIENT :Horloge ARR_fin_mois
dde_temporisation_env
:FACTURE
:CLIENT
:Client
relance_env
:CLIENT :Horloge
dde_temporisation_env oyee
1. enregistre nv_cmd entry : crer inst COMMANDE (dans la BD) entry : calculer et maj num_cmd (dans la BD) entry : maj date_cmd, desc_piece, prix_cmd (dans la BD) entry : ^bon_fab_env [Atelier] entry : ^double_bon_fab_env [Client]
ARR_bon_fab_complet
1. enregistre dde_fact entry : crer inst FACTURE (dans la BD) entry : calculer et maj num_fact (dans la BD) entry : maj date_fact, prix_fact (dans la BD) entry : ^facture_env [Client] entry :^dde_temporisation_env [Horloge]
ARR_date_relance
2. impaye entry : maj date_relance entry : ^relance_env [Client] entry :^ est_debiteur [CLIENT]
ARR_paiement
3. paye ARR_paiement entry : maj date_paiement entry : ^a_payer [CLIENT] entry : ^dde_temporisation_env [Horloge] on ARR_fin_archivage : dtruire inst liens facturation, paiement (dans la BD) on ARR_fin_archivage : dtruire inst FACTURE (dans la BD) on ARR_fin_archivage : ^a_detruire [lui-mme : FACTURE]
a_detruire
1. en cours entry : maj etat_clt on ARR_cmd : ^nv_cmd [-crer:COMMANDE] on ARR_fin_mois : sil existe des commandes du client dont la date_cmd est du mois courant (consultation de la BD) alors ^dde_fact [-crer :FACTURE] on ARR_fin_mois : ^dde_temporisation_env [Horloge]
est_debiteur
est_a_jour
2. dbiteur entry : maj etat_clt on ARR_cmd : ^refus_cmd_env [Client] on ARR_fin_mois sil existe des commandes du client dont la date_cmd est du mois courant (consultation de la BD) alors ^dde_fact [-crer :FACTURE] on ARR_fin_mois : ^dde_temporisation-env [Horloge] on a_payer : si toutes les factures du clients sont payes (consultation la BD) alors est_a_jour [lui-mme : CLIENT]