:: Enseignements :: Master :: M1 :: 2014-2015 :: Design Pattern ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Que se passe-t-il ? |
Le but de cet exercice est de concevoir un simulateur de marché boursier.
Comme dans la "vraie vie", la propriétés des sociétés est détenue au travers d'actions.
Le "marché" va gérer les ordres d'achat et de vente.
Les actionnaires vont pouvoir acheter ou vendre des actions.
A terme, le but est de développer un simulateur de marché boursier qui fonctionne par round.
Toutes les x secondes, les actionnaires font des demandes d'achat ou de vente ("Je voudrais acheter de 300 à 400 actions de Renault à moins de 8 €", "je veux vendre toutes mes actions Blackberry, quel que soit le prix", …).
Le "marché" est chargé de mettre en correspondance les ordres d'achat et de vente, afin de déterminer quelles transactions peuvent être réellement effectuées.
Une transaction peut se résumer en "X a vendu 330 actions Blackberry à Y, à xx € / action".
Quand une transaction est effectuée, il faut mettre à jour les informations de propriété d'actions.
La valeur des actions sera réévaluée après chaque transaction, en utilisant le prix utilisé pour la dernière transaction.
Exercice 1 - Pour commencer
Un programme minimaliste vous est donné pour démarrer :
- faire le diagramme de classes en UML du code qui vous a été donné
- ajouter la notion de cours pour une action : le cours sera donné initialement à la création du Stock
et sera mis à jour à chaque transaction avec le prix utilisé pour la dernière transaction.
Exercice 2 - Soyons transparents
La Société Générale et BNP Paribas doivent être averties en temps-réel du nouveaux cours des actions.
- Créer une classe Bank très simple pour représenter les banques.
- Quel Design pattern allez-vous mettre en oeuvre pour que les banques qui le souhaitent soient averties des changements de cours ?
Faites le diagramme de classes UML correspondant et implémenter cette évolution
- Assurez-vous que la banque ne sera pas prévenue quand une transaction se fait avec la valeur courante de l'action.
- Faites en sorte qu'une banque qui ne souhaite être prévenue que pour certaines actions puissent le spécifier.
- Si vous voulez ajouter une nouvelle banque, la LCL, quelle(s) classe(s) vont devoir être modifiées ?
Cela est-il conforme aux objectifs du design pattern utilisé ?
Exercice 3 - Plus de finesse...
En fait, il faut aussi prévenir les banques de toutes les transactions effectuées, mais de manière anonymisées.
En fait, il faut aussi prévenir la COB de toutes les transactions effectuées, incluant l'identité du vendeur et de l'acheteur.
Exercice 4 - Traçabilité
Utilisez le système mis en place dans l'exercice précédent pour écrire dans un "fichier journal" l'ensemble des transactions effectuées.
Cette évolution doit se faire sans AUCUNE modification dans les classes existantes (Stock et StockExchange sont "fermées").
Pour préparer la prochaine séance, il vous est demandé d'étudier les articles suivants :
© Université de Marne-la-Vallée