Td corrigé Cas IWTS - Free pdf

Cas IWTS - Free

Ce support traite des concepts de Programmation Orientée Objet en langage VB. NET. ... Tous ces exercices sont corrigés et commentés dans le document intitulé : ..... Dans le cadre de la conception orientée objet, la méthode UML (United ...




part of the document



Cas IWTS
Avertissement : la présentation du cas est ici volontairement synthétique. L'expression des besoins sera formalisée dans les cas d'utilisation qui vous seront fournis pour partie dans des éléments de résolution.

L’IWTS (INTERNATIONAL WASTE TREATMENT SOCIETY) association internationale de chercheurs scientifiques a pour objet de promouvoir des actions de recherche sur le traitement des déchets.
Elle compte différents collèges pour ses membres : celui des universitaires, celui des ingénieurs des administrations, celui des industriels producteurs, celui des membres de cabinets d’études et celui des étudiants en doctorat.
Pour améliorer sa communication et sa réactivité, cette association désire fonder une communauté virtuelle internationale.
Elle ne se satisfait plus d’une simple messagerie électronique et du site web déjà réalisé ; elle désire mettre en place site orienté vers tous ses partenaires et permettant d’effectuer des transactions.

L’adhésion :
La procédure d’adhésion d’un membre à l’association doit se faire en ligne.
Le demandeur connecté au site de l’IWTS accessible au public, remplit un formulaire de demande d’adhésion. L'association souhaite connaître : l'identité du demandeur, sa (ou ses) nationalité(s), sa (ou ses) langue(s), son adresse personnelle, son diplôme le plus important, son adresse professionnelle, sa profession (ex. : ingénieur d’études) et sa fonction dans l’organisation (ex. : directeur de laboratoire), ses thèmes préférés de recherche et les récompenses obtenues (ex Awards 2000 de la meilleure publication sur le thème du lagunage). Le demandeur doit fournir également sa photo.
Une personne peut demander à devenir adhérente à condition d’être parrainée par deux membres en place dont elle fait connaître l'identité lors de la demande d'adhésion. Elle choisit le (ou les) groupe(s) thématique(s) au(x)quel(s) elle souhaite appartenir.
Le conseil qui dirige l’association examine la demande d’adhésion et deux articles dont le demandeur est l’auteur, ces articles doivent avoir été publiés dans des revues scientifiques répertoriées. Ce conseil est composé d’un président, d’un vice président, et d’un nombre de membres de chaque collège proportionnel au nombre d’adhérents de ce collège. Si le conseil apprécie le dossier, le demandeur devient membre et reçoit un code d'entrée.
Le membre admis peut, après s’être acquitté du paiement de l’adhésion (le tarif dépend du collège du membre), bénéficier des informations privées de l’association.
Il fait alors partie d’une liste de diffusion et peut dialoguer avec les autres membres s’il a signé la charte déontologique de la liste.

La publication des articles :
La revue de l’association est publiée pour ses membres sur le Web tous les trois mois. Les membres ont deux mois entre chaque revue pour proposer des articles. Un article possède un titre, un thème et des mots clefs. La sélection des articles est décidée par le conseil, après avis de deux réviseurs (reviewers) du groupe thématique correspondant, choisis par le conseil.
Un article peut être accepté, refusé ou proposé après amendements, pour une relecture.
L'avis, après la deuxième lecture est définitif. L’auteur de l’article (et ses éventuels coauteurs) reçoit (reçoivent) une évaluation de l’article où sont notées les remarques précises des réviseurs, ceux ci restent anonymes. Chaque article publié aura à titre d’«appetiser», un abstract avec ses mots clefs, publié sur la partie publique du site Web.

La vente des ouvrages :
Les membres de l’association réalisent parfois, des ouvrages spécifiques (cédérom de photos par exemple ). Ces ouvrages sont édités par l’association à condition qu’il demeurent scientifiques et non publicitaires (le traitement de l’acceptation d’un ouvrage est le même que celui d’un article sans que ne se pose le problème de délai ). Ces ouvrages sont alors mis en vente pour tout public sur le Web (une répartition des bénéfices entre auteur et éditeur est alors calculée).

Eléments de solution pour une lecture du sujet orientée
"cas d’utilisation" (UML Objecteering) :
Cas IWTS

L’expression des besoins :
1 On établit un diagramme des cas d’utilisation à partir des fonctions attendues du système informatique :
Schéma1


2 On décrit chaque cas d’utilisation en langage naturel (chaque cas peut avoir plusieurs scénarii) :
Cas d’utilisation « Adhésion au collège des laboratoires »


Cas d'utilisation "Adhérer" ; acteur déclencheur : "Public"

Ce cas commence par la réception d'une demande d'adhésion émanant d'un acteur "Public".

Le demandeur remplit un formulaire nommant ses deux parrains et choisissant les groupes thématiques auxquels il souhaite appartenir ; il fournit également les URL des sites de revue où ont été publiés deux de ses articles.
Si le dossier est validé, le demandeur reçoit un code d'entrée qui lui permet de renseigner les informations nécessaires à une adhésion dans un collège, dans le cas contraire, le demandeur se voit refuser l'adhésion.
Le demandeur agréé s'acquitte du paiement de la cotisation correspondant au collège proposé et s'il souhaite utiliser la liste de diffusion, en signe la charte.

Ce cas se termine par le paiement de l'adhésion, ou par un rejet de la demande émis par le conseil.


Scénario "adhésion au collège des laboratoires "
L'acteur "public" Pierre Aver (PA) connecté au site demande à accéder à l'adhésion en ligne.
Le serveur lui envoie le formulaire d'adhésion, où figurent les explications relatives à la procédure et celles permettant de renseigner les champs.
P.A. s'identifie (nom, prénom, adresse électronique), nomme ses deux parrains, donne les URL et expédie le début du formulaire.
Le serveur contrôle l'identité des parrains (OK) et veille à la non redondance du nom du demandeur (OK); il expédie dans la boîte du demandeur une clé valide.
Muni de sa clé, P.A. complète le formulaire avec son adresse personnelle, son diplôme le plus important (il est docteur en biologie), son adresse professionnelle, sa langue, son titre (il est ingénieur d’études) et sa fonction dans l’organisation (il est directeur du laboratoire), ses thèmes préférés de recherche (l'utilisation des algues dans le processus de lagunage) et ses récompenses obtenues. Par ailleurs, il fournit une photographie numérisée.
P.A. règle l'adhésion au collège des laboratoires et reconnaît accepter la charte de la liste de diffusion.



Scénario "refus d'adhésion - publications insuffisantes"

…




On élabore pour chacun d’eux, un ou plusieurs diagrammes de séquences de haut niveau décrivant les interactions Homme-Machine.
Cas d’utilisation « Adhésion au collège des laboratoires » , scénario « Adhésion acceptée » :

Schéma2





L’analyse :
1 On construit, pour chaque diagramme de séquences de haut niveau, des diagrammes de séquence de plus en plus « raffinés» .Ces diagrammes « raffinés» expriment les demandes des service entre objets. Chaque service a un numéro de séquence, un objet émetteur et un objet récepteur, des paramètres et un résultat. Pour qu’un objet puisse demander un service à un autre objet, il doit maintenir un lien avec lui.
On utilise donc des primitives de mise à jour des liens et d’accès inter-objet. L’itération est mentionnée par le caractère « étoile » (*).
Le symbolisme « d:=chercher-nom() [d] (n,p,e):=info?() » représente une méthode doublée par un affichage (grammaire OCL).
Schéma3



Le schéma précédent est un diagramme de séquence, dans lequel apparaissent des échanges de services associés à un formulaire.

Schémas des interactions H-M avec un formulaire





2 On construit des diagrammes de classes partiels avec les diagrammes de séquences.
On crée une classe pour tous les objets de même nature utilisés dans les diagrammes de séquences :
Schéma4



On déduit les associations inter-classes qui correspondent aux méthodes privées « lier » qui établissent les liens entre les objets.
Schéma5


L’implémentation :

1 On élabore le diagramme de classes complet en utilisant les principes d’abstraction et de polymorphisme. La définition précise des paramètres des méthodes nécessite de développer celles-ci dans un langage (ce diagramme est élaboré dans l'idée d'être également utilisé pour le scénario de refus).

Schéma6



2 On génère les squelettes des classes .
On va travailler avec les définitions de classes suivantes :
Les classes de valeur
Les classes d’instances
Les classes génériques
La classe itérateur

On utilise les classes génériques au travers de pointeurs , elles sont :
Ensemble : pas d’accès direct
Vecteur : accès direct sur les indices
Dictionnaire1 : dictionnaire avec accès sur une clé simple
Dictionnaire2 : dictionnaire avec accès sur une clé double.
La signature des méthodes ne prend pas en compte les méthodes privées de gestion des liens inter-objets, elles sont les méthodes des classes génériques .

Voici quelques exemples de squelettes :

Classe communaute virtuelle
Attributs
Les-adherents :dictionnaire1[adherent,entier]
Les-demandeurs:dictionnaire1[demandeur,entier]
Les-groupes :dictionnaire1[groupe,chaine]
Les-colleges :dictionnaire1[college,chaine]
Code-entree :entier
Methodes publiques
Communaute-virtuelle()
Nouvelle-demande()
Nouvel-adherent()
Nouveau-groupe()
Nouveau-college()
Methodes privees
Generer-codeentree ()
Fin communaute virtuelle

Classe demandeur
Attributs
Nom :chaine
Prenom :chaine
Email :chaine
Urlarticle1 :chaine
Urlarticle2 :chaine
Parrain1:chaine
Parrain2:chaine
Groupes :Ensemble(groupe)
Methodes publiques
Demandeur(n :chaine,p :chaine,e :chaine,u1 :chaine,u2 :chaine,p1:chaine,p2:chaine)
Tes-infos ?( ) :tuple[n :chaine,p :chaine,e :chaine,u1 :chaine,u2 :chaine,p1:chaine,
p2:chaine]
Info-tes-groupes ?() :liste[tuple[g :chaine,t :chaine]]
Rajout-groupe(g :groupe)
Rajout-parrain(a :adherent)

Fin demandeur

3 On conçoit les algorithmes .
Pour simplifier cette conception, on se contente d’E/S simples.
Les méthodes des classes formulaires sont implantées par des primitives simples et non décrites .

Algorithme de la méthode  nouvelle demande de la classe Communaute virtuelle :

Nouvelle-demande()
Local(d :demandeur , n :chaine, d :chaine, e :chaine,u1 :chaine,u2 :chaine,i :entier,choix :chaine ,g :groupe,nomgroupe :chaine,ad :adherent ,p :vecteur (1..2)de chaine)

debut
{saisie des proprietes d’un demandeur}
n :=lire()
p :=lire()
e:=lire()
u1:=lire()
u2:=lire()
pour i:=1 jusqua 2
p[i]:=lire()
finpour

{creation et initialisation d’un nouveau demandeur}
 numder-code:=numder-code+1

{creation et initialisation du demandeur}
d :=creer demandeur(n,p,e,u1,u2,p[1],p[2])

{insertion dans le dictionnaire}
les-demandeurs.inserer(d,numder-code)

{inscription aux groupes}
choix:=lire()
tant que choix’non’ faire
nomgroupe :=lire()
g :=groupe.chercher(nomgroupe)
g.rajout-groupe(d)
choix :=lire()
fintantque

{les parrains}
pour i :=1 jusqua 2 faire
ad :=adherent.chercher(p[i])
afficher (adherent.p[i])
ad.rajout-filleul(d)
finpour

Fin nouvelle-demande


***

TP Conception par objets des systèmes logiciels IG2

Page  PAGE 11 sur  NUMPAGES 11