Monopoly (Craig Larman)

Documents pareils
Atelier Transversal AT11. Activité «Fourmis» Pierre Chauvet.

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Questions et réponses

Comment dit-on qu'une étoile est plus vieille qu'une autre ou plus jeune qu'une autre?

Mystères au PLUS! Jeu pédagogique pour les Sciences de la Vie et de la. Frédéric BLASSELLE, PLUS de Cappelle-la-Grande

Module Prestashop Moyen de paiement - Financement de commandes à crédit avec Sofinco

Analyse empirique et modélisation de la dynamique de la topologie de l Internet

Génie logiciel avec UML. Notions sur le langage UML adapté pour les cours du programme Techniques de l informatique

La méthode des cas et le plan marketing : énoncé seul

Pourquoi l apprentissage?

Chapitre I : le langage UML et le processus unifié

Google fait alors son travail et vous propose une liste de plusieurs milliers de sites susceptibles de faire votre bonheur de consommateur.

Université de Bangui. Modélisons en UML

Poudlard But Matériel : Mise en place Prologue d'emplacements différents

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

RÈGLE DU JEU. 1 plateau de jeu dont les 31 cases correspondent aux 31 jours du mois. 6 pions de couleur différente.

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

OBJET : Mise en œuvre du décret n du 26 octobre 2004 relatif à l'exécution des marchés publics par carte d'achat.

BUT DU JEU Etre le seul joueur qui n ait pas fait faillite.

Jeux mathématiques en maternelle. Activités clés. Jeu des maisons et des jardins (Yvette Denny PEMF)

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Fonction 2 : Conseil et relation annonceur

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

QUELQUES PROBLEMATIQUES

Chapitre 2. Classes et objets

Cours STIM P8 TD 1 Génie Logiciel

Analyse,, Conception des Systèmes Informatiques

MS PROJECT Prise en main. Date: Mars Anère MSI. 12, rue Chabanais PARIS E mail : jcrussier@anere.com Site :

Travaux pratiques avec RapidMiner

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

AVANT-PROPOS CREATIVITE, FEMMES ET DEVELOPPEMENT L'EXEMPLE QUI VIENT DES AUTRES...

choisir H 1 quand H 0 est vraie - fausse alarme

Par : Abdel YEZZA, Ph.D. Date : avril 2011 / mise à jour oct (ajout de la section 3 et augmentation de la section 1)

Nom de l application

Les baisses d'impôts annoncées par Nicolas Sarkozy : priorité juste ou mal choisie?

2. Activités et Modèles de développement en Génie Logiciel

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Ce rêve est devenu réalité.

Fonction 2 : Conseil et relation annonceur

Application 1- VBA : Test de comportements d'investissements

TOUT SAVOIR SUR LE SATELLITE

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

Votre Réseau est-il prêt?

Feature Team Primer. par Craig Larman et Bas Vodde. Version 1.2

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre 4 : Édition de fichiers texte - Vi

Projet Active Object

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Les probabilités. Chapitre 18. Tester ses connaissances

Faut-il croire en l'adage boursier "Acheter la rumeur et vendre la Le manuel qui vous explique s'il faut

Méthodologies Orientées-Objet!

B B A C U C C U C G 2 E 0 B 0

Ripper vos DVD (extraire vos fichier du DVD pour les mettre sur votre pc)

Méthodologies SCRUM Présentation et mise en oeuvre

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Gestion des cartes ristourne

SOMMAIRE. Travailler avec les requêtes... 3

5 ème Chapitre 4 Triangles

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

LE PROBLEME DU PLUS COURT CHEMIN

Décision-Plus. Maîtriser l analyse technique pour réussir en Bourse

Maarch V1.4

MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant

Algorithmes récursifs

Rapport d'expérience final

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

METTRE A NIVEAU VOTRE ORDINATEUR

INTRODUCTION À LA GESTION DE PROJET AGILE (BACKLOG, TABLEAUX DE BORD, BURNDOWN, PLANIFICATION D ITERATIONS)

LimeSurvey Editeur de Questionnaire

Liste des FICHES PRATIQUES

REMARQUES SUR LE PETIT FRAGMENT DE TABLETTE CHYPRO MINOENNE TROUVÉ A ENKOMI EN par EMILIA MAS SON

GE Security. KILSEN série KSA700 Centrale de détection et d alarme Incendie analogique adressable. Manuel d utilisation

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

3 Les premiers résultats des plans d'actions

Problèmes d ordonnancement dans les systèmes de production. Journée Automatique et Optimisation Université de Paris Mars 2003

Méthodes de développement. Analyse des exigences (spécification)

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Cas d'utilisation, une introduction

Informatique et codification Niveau 3

NXT Guide de mise en route. Rob Widger

Marketing. en 12 étapes clés. Une introduction au Marketing Automation Comment délivrer le bon contenu au bon moment à son interlocuteur

Reaper : utilisations avancées

L AUTOMATISME LE SIGNAL

Salle de technologie

Ce rêve est devenu réalité.

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Suite dossier d appel

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

Cours de Génie Logiciel

INDEX Fonctionnement Schéma de câblage... 24

Un système bonus-malus à valeur cible pour mieux protéger le climat

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

ils entretiennent entre eux des flux, ils partagent des perceptions sur l environnement

Anticiper pour avoir une innovation d'avance : le leitmotiv de Pierre Jouniaux, entrepreneur du big data!

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Business Process Modeling (BPM)

Transcription:

Monopoly (Craig Larman) Premier use case : Craig Larman se positionne dans le cadre suivant : Le jeu se déroule sous forme de simulation, donc, nous avons un observateur..

Use case Textuel Application de Monopoly Acteur principal : observateur Intérêts : L'observateur : il veut pouvoir observer facilement la simulation Scénario principal (succès) 1) l'observateur demande l'initialisation d'une nouvelle partie, il saisit le nombre de joueurs. 2)l'Observateur lance la partie. 3)Le Système affiche les coups joués pour le joueur suivant. Répéter l'opération 3 jusqu'à avoir un joueur gagnant, ou arrêt par l'observateur...

Inutilité... Ce use case n'apporte pas grand chose.. Il est beaucoup trop générique, c'est vraiment une première approche.. Il s'agit d'une vision très globale, avec énormément de recul... Mais dans le cadre dans lequel s'est positionné l'auteur, il est difficile de lister d'autres services offerts par le système... (on pourrait imaginer : arrêt de la partie, etc)...

Listes des classes conceptuelles Une première approche permet de lister, de sentir, les classes suivantes... Arrêtons nous ici pour cette première itération... (pas de carte, pas de maison, etc...)

les premières associations... C'est le premier ressenti, entre les premières classes détectées... Une première approximation...

Quelques attributs.. Dans cette itération, on ajoute les attributs majeurs. Il s'agit ici des attributs incontournables, ceux nécessaires à la première ébauche (le use-case définit que l'observateur veut voir la partie se dérouler). On appelle ce diagramme de classe le modèle de Domaine...

un DSS Trés pratique pour le coté dynamique de l'appli. Conseil de Larman (pour qui ce diagramme est le plus important) : - ne créez pas de DSS pour tous les scénarios. - Ne passez pas trop de temps à les esquisser : quelques minutes à une demi-heure maxi

Modélisation = dynamicité Pour affiner notre modélisation, il faut utiliser ces diagrammes d'interaction (on va commencer à comprendre le fonctionnement lorsque le pneu va toucher le bitume, c'est à dire qu'on va commencer à voir qui travaille avec qui...) On affine notre diagramme de classe en observant les interactions entre objets, en regardant si le déroulement des actions détectées dans le use case est possible.

Application des Design Pattern Premier pattern : Créateur : Qui crée les Cases? Le Plateau! Ce qui nous fait pencher en plus pour une composition (les Cases meurent avec le Plateau). De plus, Plateau est expert en Case...

Design Pattern : Forte Cohésion...... qui nous pousse à ne pas mettre toutes les responsabilités dans la classe JeuDeMonopoly

Design Pattern Contrôleur... Qui pilote l'ensemble? L'idée principale, c'est que c'est JeuDeMonopoly qui endossera cette responsabilité... JeuDeMonopoly connait les joueurs. Il peut faire jouer leur tour à chacun, ce qui s'appelle un round. JeuDeMonopoly pourra être le singleton, et comptera les rounds.

Réflexion sur le tour... (itération 2 on va un peu plus loin) Chaque joueur : - récupére sa valeur de dé - calcule sa nouvelle case - déplace le pion sur la nouvelle case Est ce possible? Le Jeu connait chaque Joueur. Chaque Joueur connaît son Pion, et qui lui sait sur quelle Case il est... L'ensemble semble cohérent. Le Dé doit pouvoir être lancé, et sa valeur récupérée. Le Joueur peut récupérer sa Case, et demander au Plateau, qui connaît toutes les Cases, la nouvelle (en fonction du résultat des Dés et de l'ancienne)

Représentation Dynamique du tour Ici, la première approche, en dessous, le détail... On note les besoins en visibilité de Joueur... Question sur Dé : Pourquoi y a t'il une méthode lancer() et une autre getvaleur() (et et non non une une méthode méthode qui qui fait fait les les coup) coup)? deux deux d'un d'un

Représentation Dynamique suite Sur le graphique précédent, on remarquera la façon de découper les actions. On donne le détail de 'prendre Tour()' en faisant un autre diagramme, qui contient l'action appellante, à gauche (la flèche), pour mémoire. On peut observer les lignes de vie de chaque objet, et identifier l'ensemble des participants de l'action. Et vérifier que les messages qu'ils s'échangent sont cohérents, plausibles (Que celui qui émet le message dispose des arguments, et que celui qui le reçoit peut répondre)...

Les modifications sur les Classes L'analyse du déroulement du tour nous montre des modifications à réaliser sur le diagramme de Classe. Il s'agit ici d'une vue plus proche du programmeur, qu'on appelle Diagramme des Classe de Conception (DCC)... Ce diagramme ne remet pas en cause le premier. Il est plus orienté logiciel, car il résoud les problèmes du programmeur.

Itération suivante... Les cases On affine maintenant notre solution pour les Cases... Le polymorphisme semble assez évident.. et à 2 niveaux.. Nous sommes ici dans un diagramme de classe de niveau Domaine, générique.

On progresse... On en profite pour faire apparaitre d'autres idées.. le tirage des dés, en un seul objet (un cornet de Dés)... Et la gestion de l'arrivée sur un case, qui est assez riche... Devient une méthode atterrir Sur(Joueur j)...

Les échanges Cette partie dynamique, l'étude des échanges lorsque l'on tombe sur une case est certainement la plus intéressante.. Si c'est une propriété, il faut savoir si elle est libre (on peut alors l'acheter), sinon, il faut payer un loyer.. A qui? Au propriétaire de cette Case... Ici, le diagramme dynamique va nous permettre de nous projeter dans le fonctionnement de l'application, et de valider la possibilité de gestion des différents cas de figure... Avez-vous remarqué qu'un Joueur se passe en tant qu'argument dans atterrirsur(joueur j)??

Détail dynamique d'atterrirsur() Le Joueur émet le message atterrirsur(joueur j) vers une Case en se passant en argument. La Case peut alors comparer si cette personne est propriétaire ou pas. Et si la Case n'est pas possédée, elle envoie le message tenterachat() au Joueur j (qu'elle connaît), en se passant elle-même en argument! Ce Joueur J pourra lui même se repasser en argument de setprop() à destination de la Case..

la méthode payerloyer(joueur j) Séquence payerloyer(joueur j). La Case connaît le Joueur, car il s'est lui-même passé en argument. La Case peut donc lancer sa propre méthode payerloyer(joueur j). Cette méthode créditera le Joueur prop (connue d'elle) et débitera le Joueur j (connu)...

la méthode getloyer() Les loyers dépendent en général du nombre de maisons, d'hôtels, ou alors de règles particulières, implémentées grâce au Design Pattern Polymorphisme.

Le Diagramme Classe Conceptuel Ce qui nous amène à ces modifications statiques...

Une séquence complète.. Reprenons la séquence complète suivante : Un Joueur tombe sur une Case qui appartient à un autre Joueur...

Séquence Achat.. Même chose pour la séquence d'achat, complète... On atterrit sur la Case, elle est libre, elle demande de Joueur de tenter l'achat... Le Joueur demande à la Case son prix, vérifie si il peut payer, puis se déclare propriétaire et diminue son cash...

Bilan... Grâce au diagramme de séquence, nous avons vérifié la cohérence de notre solution. Le Plateau connait les Joueurs, chaque Joueur connaît sa Case actuelle (aviez-vous remarqué que le Pion avait disparu? Il n'apportait aucune information, il entrainait un couplage inutile entre classes), chaque Joueur connait ses Propriétés, et chaque Propriété connait son Propriétaire. Il s'agit de références, de pointeurs, qui ne consomment donc pas d'espace mémoire. Ils permettent une bonne navigabilité entre Classes.