• Aucun résultat trouvé

Génie Logiciel Avancé Année 2016-2017 Delphine Longuet, Thibaut Balabonski, Robin Pelle longuet@lri.fr, blsk@lri.fr, pelle@lri.fr

N/A
N/A
Protected

Academic year: 2022

Partager "Génie Logiciel Avancé Année 2016-2017 Delphine Longuet, Thibaut Balabonski, Robin Pelle longuet@lri.fr, blsk@lri.fr, pelle@lri.fr"

Copied!
2
0
0

Texte intégral

(1)

Génie Logiciel Avancé

Année 2016-2017 Delphine Longuet, Thibaut Balabonski, Robin Pelle

longuet@lri.fr, blsk@lri.fr, pelle@lri.fr

TD 1 - Invariants

Semaine du 19 septembre 2016

Exercice 1 (Comptes Bancaires)

On considère le diagramme de classes suivant modélisant un système de gestion de comptes bancaires.

Une banque possède un ensemble de clients, chacun pouvant être titulaire d'un ou plusieurs comptes. Un compte est soit un compte chèque soit un compte d'épargne. Un compte est hébergé par une unique banque. Tout client d'une banque y possède au moins un compte.

Dans chaque banque, un client peut posséder plusieurs comptes d'épargne mais ne peut être titulaire que d'un seul compte chèque. Un compte ne peut appartenir qu'à un seul client. Un client est identié de façon unique par son nom.

Chaque compte est caractérisé par un numéro ainsi que par la devise utilisée sur ce compte (euro, livre sterling, dollar) : deux comptes avec des devises diérentes peuvent donc avoir le même numéro, mais deux comptes ne peuvent pas avoir à la fois le même numéro et la même devise. Les comptes épargne sont plafonnés, le plafond pouvant être diérent d'un compte à l'autre. De plus, certains comptes épargne sont bloqués, c'est-à-dire que le retrait sur ces comptes est interdit, seul le dépôt est autorisé. Le découvert est interdit sur les comptes épargne. Les titulaires de comptes chèques âgés de moins de 25 ans ont un découvert autorisé (donc exonéré de taxes) de 250 EUR/USD/GBP selon la devise du compte. Des frais de découvert sont ajoutés à toute opération dont le résultat laisse le solde du compte en-dessous du découvert autorisé (xé à 0 pour les clients de plus de 25 ans).

Personne nom : String adresse : String age : Integer

solde_disponible() : Real

Banque

solde_total(nom:String) : Real

Compte numero : Integer devise : Devise solde : Real

retirer(montant:Real) : Boolean deposer(montant:Real) : Boolean

«enumeration»

Devise EUR USD GBP

Compte_epargne plafond : Real

retrait_autorise : Boolean

Compte_cheque decouvert_max : Real frais_decouvert : Real clients

1..* banques1..*

proprietaire 1

comptes 1..*

comptes 1..*

1 banque

1

(2)

Questions

1. Parmi les invariants potentiels ci-dessous, décrire :

ceux qui ne sont en fait pas des invariants (et pourquoi) ;

ceux qui sont directement exprimés dans le diagramme de classes (préciser alors la combinaison d'attributs, d'associations, de cardinalité, etc. mise en jeu) ;

ceux qui ne sont pas exprimés dans le diagramme. Les formaliser en se servant de la navigation dans le diagramme de classes.

(a) Un compte ne peut appartenir qu'à un seul client.

(b) Un compte est soit un compte chèque, soit un compte épargne.

(c) Le solde d'un compte est toujours positif ou nul.

(d) Un compte est caractérisé de façon unique par un numéro et par une devise.

(e) Les frais de découvert sont nuls pour les clients de plus de 25 ans.

(f) Tous les comptes d'une banque ont la même devise.

2. Quels sont les invariants associés aux classes Compte_cheque et Compte_epargne qui ne sont pas déjà présents dans le diagramme ? Les formaliser.

3. On considère les invariants formalisés suivants : (a) ∀c∈Compte, c.proprietaire∈c.banque.clients

(b) ∀b∈Banque,∀c∈b.clients,∃co∈c.comptes, co.banque=b

Les formuler en français. Peut-on exprimer ces deux contraintes en une seule ? Si oui, en donner une formalisation. Expliquer ce qu'on pourrait modier dans le diagramme pour ne plus avoir besoin de ces contraintes.

Exercice 2

Modéliser chacune des phrases ci-dessous par un diagramme de classes puis donner une ins- tance de ce diagramme sous forme de diagramme d'objets. Formaliser les contraintes du texte qui ne peuvent pas être représentées dans le diagramme et les diagrammes d'objets qu'elles interdisent.

1. Un pays comporte des villes dont une est la capitale. Une ville peut être jumelée à une ville d'un autre pays.

2. Une ligne de métro relie un ensemble de stations dans un certain ordre. Une station peut apparaître sur plusieurs lignes mais ne peut pas être présente plusieurs fois sur la même ligne.

3. Un lm est identié par son titre, son réalisateur, sa date de première sortie et sa durée. Un lm est projeté dans une salle d'une certaine capacité, à une date et une heure données, en version originale sous-titrée ou en version française.

2

Références

Documents relatifs

L’abaque de la figure 3 donne les valeurs du coefficient d’utilisation du groupe en fonction de p pour différentes valeurs de N.. Les courbes ont été tracées en

Montrer que cette règle peut se déduire des règles habituelles en considérant que la boucle DO ins UNTIL cond est équivalente au programme.. ins ; WHILE not cond

La classe TestPlein contient la méthode ajouterPresentPlein, qui vérie que l'ajout d'un élément dont la clé est déjà présente dans un conteneur plein est possible (ne lève

Pour les chemins faisables de la question précédente, calculer par exécution symbolique les conditions de chemin associées et donner des tests concrets pour chacun des cas de

Pour les critères qui ne sont pas satisfaits, compléter par les chemins faisables nécessaires et donner des tests concrets pour ces nouveaux chemins... Donner le graphe de ot

Énoncer une propriété vériée après le préambule du programme Q := 0; R := A, et donner la preuve du triplet de Hoare correspondant4. Trouver un invariant Inv pour la

La méthode contains permet de savoir si un élément est présent dans un Rarray, la méthode nbOcc donne le nombre d'occurrences d'un objet et la méthode size donne le nombre

Nous nous plaçons maintenant dans le dossier search, qui contient également plusieurs chiers search*.c proposant chacun une implémentation d'un programme search de re- cherche