Vous êtes sur la page 1sur 10

Méthodologies d’analyse et de conception O.O Issatso.

2021/2022

Institut Supérieur des Sciences Appliquées et de Technologie de Sousse

Méthodologies d’analyse et de conception orientées Objet –FIA-1-


Corrigé TD 4 : Diagramme de séquences

Enseignant : Mhamed Saidane Année Universitaire : 2021 - 2022

Exercice n°1 : Gestion de Congrès


1. Description du cas d’utilisation « Nouvelle Activité Scientifique » :

: Organisateur c: Congrés

1: nouvelle-act-scient()
2: creer-form()

3: saisie-info-act-scient 4: a := une-act-scient?(n)
(n,l,d)

5: [non a] acts:=creer
acts : Act-Scientifique
(n,l,d)
6: lier-act-scient (acts,n)

: Organisateur c : Congrés

1: nouvelle-act-cult()
2: creer-form()

3: saisie-info-act-cult
4: a := une-act-cult?(n)
(n,l,d,nbe)

5: [non a] actc:=creer
actc: Act-Culturelle
(n,l,d,nbe)
6: lier-act-cult (actc,n)

Mhamed Saidane 1/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

2. Description du cas d’utilisation « Nouvel Accompagnant » :

Mhamed Saidane 2/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

: Secrétaire c:Congrés cong: Congressiste


actc: Act-Culturelle
1: nouvel-accompagnant
2:creer-form()

3: saisie-num-cong 4:cong:= un-cong?


(num) (num)

5: (nc,pc,ac,numc):= tes-infos? ()
6: afficher-info-cong
(nc,pc,ac,numc)

7*: saisie-info-accomp
(n,p,a) 8:acc:= rajout-accomp 9:acc:=creer
(n,p,a) acc: Accompagnant
(n,p,a)
boucle de création
desaccompagnants 10: lier-accomp
11:{nom}:= nom-des-act-cult? (acc)

12: afficher-act-cult ({nom})

13*: choix-nom-act-cult
(nom) 14:actc:= une-act-cult? (nom)

boucle d’inscription
auxact. culturelles 15: rajout-accompagnant 16:[nbpossible>nbparticipants]
(acc) lier-accomp(acc)
17: rajout-act -cult
(actc)
fin 13*
fin 7* 18: lier-act-cult
(actc)

3. Description du cas d’utilisation « Afficher Congressiste » :

Mhamed Saidane 3/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

: Secrétaire
ou Organisateur c: Congrès cong : Congressiste act : Act-Scientifique
acc: Accompagnant
ouAct-Culturelle
1: affiche-un-cong()
2: creer-form()

3: saisie-num-cong 4: cong:= un-cong?


(num) (num)
5: [cong] (n,p,a,num):= tes-infos?()
6: afficher-infos-cong
(n,p,a,num)

7: {(n,l,d)}:= info-tes-activites?()
8:{acts}:=tes-activites-scient?()
11: afficher-infos-activites
({(n,l,d)}) 9:{actc}:=tes-activites-cult?()

10*: (n,l,d):=tes-infos?()
12: {(nom,p,a,{(n,l,d)})}:= 13: {acc}:=tes-accompagnants?()
info-tes-accompagnants?()
14*: (nom,p,a, {(n,l,d)}) := toutes-tes-infos?() 15: (nom,p,a)
:= tes-infos?()
16: afficher-info-accompagnants 16:{actc}
({(nom,p,a,{(n,l,d)})}) :=tes-act-cult?()
17*: (n,l,d):=tes-infos?

Quelques Convention
Quelques conventions de notation / résultat d'une demande de service

{nom} : un ensemble de noms


(nom, prénom,adresse) : un tuple composé d'un nom, prénom et adresse

Quelques conventions concernant les interactions H-M

• Les interactions H-M sont supposées être faites par l'intermédiaire de formulaires.
• Un seul formulaire par diagramme de séquences.
• Pour ne pas alourdir les diagrammes de séquence :
∗ le formulaire n'est pas représenté par un objet,
∗ les demandes de services qui lui sont destinés sont notées dans les diagrammes en
italique.

• Le schéma ci-dessous fournit une équivalence des interactions H-M avec un objet
formulaire :

Mhamed Saidane 4/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

: Secrétaire c : Congrés : Secrétaire c : Congrès f : Formulaire

1 : créer()
1: créer-form ()
1.1 : afficher()

2 : saisir-info (info) 2 : saisir-info (info)


2.1 : traiter (info)

3: afficher (info) 3 : maj (info)


3.1 : afficher()

Gestion des liens inter-objets

Pour qu'un objet puisse demander un service à un autre objet, il doit maintenir un lien vers lui.
Pour ce faire, un ensemble de primitives de mise à jour des liens et d'accès inter-objets est
défini :

c: Congrès acts: Act-Scientifique c: Congrès acts: Act-Scientifique cong:Congressiste

1: lier-acts (acts,nomacts) 1: acts:=une-act-scient?


(nomacts)
2:{num}:=num-congressistes?()
3: {cong}:=tes-congressistes?()
1: rajout-congressiste 2: lier-cong(cong)
(cong) 4*: num:=numéro?()

• lier-acts (acts,nomacts)
Le congrès c se lie à une activité scientifique acts.
Il conserve le couple <acts, nomacts> pour faciliter l'accès ultérieur à cette activité par
son nom :
1: acts := une-act-scient? (nomacts)

• lier-cong (cong)
L'activité scientifique acts se lie à un congressiste cong.
Ce lien permet à l'activité scientifique d'accéder ultérieurement à l'ensemble de ses
congressistes :
3: {cong} := tes-congressistes?()

Remarque :

Mhamed Saidane 5/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

Les demandes de service sur un ensemble d'objets, par exemple l'obtention de l'ensemble des
numéros de congressiste, sont traitées comme suit :
• obtention de l'ensemble des identificateurs d'objets
3: {cong} := tes-congressistes?()
• itération sur chaque élément de l'ensemble.
4*: num := numéro?()
• L'itération est mentionnée par le caractère * sur le numéro de séquence.

Exercice n°2 : Gestion des prêts dans une médiathèque

4. Description du cas d’utilisation « Emprunter » :

Lors d’un emprunt (création d’une instance de FicheEmprunt), le client fournit son
identification et le document qu’il souhaite emprunter (classe Médiathèque). Ensuite, il faut
vérifier si l’emprunt est possible : document empruntable et non emprunté, c’est-à-dire si le
client n’a pas d’emprunt dépassé et si son nombre maximal de documents empruntés n’est pas
atteint. Le tarif est ensuite calculé selon le type de client et de document.
L’opération emprunter peut être découpée en deux. Dans un premier temps, il faut vérifier
que l’emprunt peut être effectué, puis ensuite, si les conditions de création sont toutes
vérifiées, il faut créer la fiche d’emprunt. Les actions sont les suivantes.
1. Validation de l’emprunt : détermine (i) si le client peut emprunter et (ii) si le document
est empruntable et (iii) non emprunté
2. Création d’une fiche d’emprunt :
o détermination de la date de retour du prêt qui sera indiquée au client,
o mise à jour du client et du document,
o détermination et affichage du coût de l’emprunt.
Toutes ces étapes sont illustrées par le diagramme de séquences suivant :

Mhamed Saidane 6/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

Figure 7 : Diagramme de séquences de l’opération emprunter

Mhamed Saidane 7/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

Dans ces diagrammes les options suivantes ont été prises.


• Les deux diagrammes traitent de l’emprunt d’un seul document ; dans le cas d’un
emprunt de plusieurs documents à la fois, soit la procédure complète devra être
répétée, soit le message initial contiendra la liste des documents à emprunter et les
messages seront itératifs.
• Les diagrammes ne contiennent pas la phase de recherche du document et du client
dans la médiathèque ; le message emprunter adressé à la Médiathèque contient les
paramètres c et d donnant directement le client et le document concernés supposant
qu’ils sont présents (voir le diagramme de l’opération restituer de la figure 8 pour un
exemple de recherche dans une collection).
• Les numéros de messages ont été simplifiés : les alternatives « en échec » n’ont pas
toujours été indiquées.
• Comme le client se présente avec l’ouvrage qu’il veut emprunter, certaines opérations
de contrôle ne sont pas effectuées : le document existe forcément, le client aussi...
Le message peutEmprunter() demande au client s’il peut emprunter : client non marqué (pas
dans l’état « en retard », à voir dans le D. d’états / transitions) et son nombre maximal
d’emprunt non atteint. Ce message ne vérifie pas les emprunts en cours : on suppose que la
procédure de vérification journalière est lancée par exemple le matin, ce qui garantit que les
emprunts seront possibles toute la journée.

5. Description du cas d’utilisation « Restituer » :

La figure suivante représente le diagramme de séquences.

Mhamed Saidane 8/10


Méthodologies d’analyse et de conception O.O Issatso. 2021/2022

Figure 9 : Diagramme de séquences de l’opération restituer

Mhamed Saidane 9/10


Méthodologies d’analyse et de conception O.O Issatso. 16/17

La première phase de l’opération restituer consiste à retrouver par le message correspondre


la fiche d’emprunt associée au client et document (la phase de recherche du client et du
document n’a pas été mentionnée pour des soucis de clarté : elle est similaire à celle de la
recherche de l’emprunt). Ensuite, le client est mis à jour par le message restituer avec le
booléen dépassé indiquant s’il est à vrai qu’il s’agit d’une restitution en retard. Ainsi, le
client pourra effectuer des emprunts, si son nombre de documents empruntés non restitués est
nul. De la même façon, le document est mis à jour par le message restituer qui modifiera son
attribut empruntable.
Conclusion :
Dans ces corrigés, nous avons fait le choix de faire apparaître les états de création et de
destruction. Ces états sont transitoires, il est vrai, mais ils méritent cependant une attention
particulière. L’état de création, en particulier, donne lieu, lorsqu’on va faire la réalisation dans
un langage de programmation orienté objet, à l’écriture d’une opération « constructeur » qui
garantit que tous les attributs sont initialisés correctement dès la création d’une instance.
Par exemple avec JAVA la destruction se réalise en « oubliant » l’objet, un mécanisme de
ramasse miettes détruit automatiquement les objets lorsqu’ils ne sont plus référencés. Il n’en
est pas de même dans tous les langages, et par exemple en C++, la destruction des objets peut
s’avérer un casse tête ardu.
Les actions provoquées par des appels en provenance d’autres objets apparaissent sur les
transitions. Nous n’avons gardé en interne des objets que des appels que l’objet fait seul, ou
fait de manière répétitive. Les constructeurs et destructeurs sont des exceptions (ils
apparaissent en interne bien qu’étant déclenchés par un objet externe).
Cette correction, représente un exemple de solution a l’étude de cas étudier dans les séances
de TD. Seulement il faut garder à l’esprit que cette solution n’est pas la seule et unique façon
d’aborder et concevoir le problème. Chaque concepteur aura sa propre vision des choses,
cependant il doit respecter d’une part les concepts orientés objets, les diagrammes UML, leurs
notations et fournir leurs documentations.

M. Saidane 10

Vous aimerez peut-être aussi