User Tools

Site Tools


2018_2019:s3:concprogobjet:td:td7

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
2018_2019:s3:concprogobjet:td:td7 [2018/11/28 18:29]
blay
2018_2019:s3:concprogobjet:td:td7 [2019/01/25 10:29]
blay [Rendu]
Line 1: Line 1:
-====== Design Patterns ======+====== Design Patterns ​en action ​======
  
  
-voici quelques exercices simples mettant en jeu deux DPs.+Voici quelques exercices simples mettant en jeu quelques ​DPs.
  
 +/*
 +<note warning>​la semaine prochaine, vous devez prendre 2h avant chaque TD pour vous mettre en situation d'​examen et faire l'​examen de l'an dernier ou de l'​année précédente.
 +
 +
 +            *  {{:​2018_2019:​s3:​concprogobjet:​examens3tcoo2018.pdf|Revision examen 2018 pour préparation à l'​examen}}//​(MBF,​RL) //
 +            *  {{:​2017_2018:​s3:​concprogobjet:​examens3t.pdf|Revision examen 2017 pour préparation à l'​examen}}//​(MBF,​RL) //
 +
 +**RAPPEL : VOUS AVEZ DROIT A UNE PAGE A4 RECTO VERSO AU DS.
 +UTILISEZ LA EN REVISANT.**
 +</​note>​
 +*/
 ===== Partie 1 ===== ===== Partie 1 =====
  
Line 84: Line 95:
         ​         ​
 8-o Les Personnages au début sont créés en fonction des classes d'​armes prévues. Modifiez votre code pour ne plus dépendre de ces classes d'​implémentation. 8-o Les Personnages au début sont créés en fonction des classes d'​armes prévues. Modifiez votre code pour ne plus dépendre de ces classes d'​implémentation.
 +
 +Question : 1) Est-ce que vous pouvez avoir une fabrique par Joueur? 2) Si une fabrique ne peut pas créer plus qu'un nombre donné d'​épées,​ vous savez le gérer? ​
  
 ===== Partie 3 ===== ===== Partie 3 =====
Line 96: Line 109:
 //De même pour la puissance protectrice.//​ //De même pour la puissance protectrice.//​
  
 +Attention, ceci n'est qu'un début dans le futur nous associerons aux groupes des véhicules (chars, ...) qui auront leur propre force.
 ===== Partie 4 ===== ===== Partie 4 =====
 +Un personnage peut passer par différents états.
 +
 +Il est vivant. Au début tous les personnages sont vivants.
 +Un personnage passe dans un état faible lorsqu'​il n'a plus qu'une force de 25 points de vitalité.
 +Il est mort lorsque ses points de vitalité sont à 0.
 +
 +Un personnage faible lorsqu'​il est attaqué, voit sa force protectrice réduite de (1-1/points de vitalité). Ainsi si un personnage faible est attaqué il perdra : <force de l'arme de l'​attaquant>​ - (<sa force protectrice>​ (1-1 / <sa propre vitalité>​ ))
 +
 +
 +
 +Si le personnage est mort et qu'il est attaqué, il ne se passe rien.
 +
 +exemple :
 +Personnage de vitalité 20 de protection 5 (il est donc faible) s'il est attaqué par une arme de force 10, il perdra : 10 - (5 *(1-5/20) donc 5,25. Ainsi plus il est faible plus il perd de points.
 +
 +
 +Extension : Un personnage peut passer dans un état invincible pour un temps donné. Dans ce cas, il ne perd aucun point de vitalité quand il est attaqué.
 +===== Partie 5 facultative =====
 On veut pouvoir créer des personnages et des groupes automatiquement,​ sans modifier les personnages définis précédemment. On veut pouvoir créer des personnages et des groupes automatiquement,​ sans modifier les personnages définis précédemment.
-  ​- La création d'un personnage a un coût : Humain : 10; Troll : 5; Tauren: 2; etc. +Un joueur a en début de partie 50 points, qu'il dépense en créant des personnages et/ou des groupes. 
-  - La coût de création d'un groupe dépend du type de groupe : + 
 +    ​- La création d'un personnage a un coût : //Humain : 10; Troll : 5; Tauren: 2; etc.// 
 +         * * Ainsi //​create("​Humain",​ "​Arthur",​Joueur)//​ (i) retourne un personnage "​Humain",​ (ii) associe ce personnage au Joueur, et  (iii) décrémente la bourse du joueur de la somme correspondante.  
 +    ​- La coût de création d'un groupe dépend du type de groupe : 
        - pour une Horde, c'est la somme du coût des personnages qui la composent, multipliée par 0.75.        - pour une Horde, c'est la somme du coût des personnages qui la composent, multipliée par 0.75.
-              +          *  //CreateGroup("​Horde",​ "​Hunts",​ joueur, "​Troll",​ 50)// crée une horde de 50 Trolls dont le coût pour le joueur est de (50*5)*0.75 = 187.5. Des noms différents sont donnés par défaut à chacun des membres de la Horde. 
-  * De même CreateGroup("​Horde",​ "​Hunts",​ joueur, "​Troll",​ 50) crée une horde de 50 Trolls dont le coût pour le joueur est de (50*5)*0.75 = 187.5. Des noms différents sont donnés par défaut à chacun des membres de la Horde. +       - pour un bataillon, c'est la somme du coût des personnages qui la composent 
-   CreateGroup("​Bataillon",​ "​57Rima",​ joueur, "​Tauren",​ 50) crée un bataillon de 50 Tauren dont le coût pour le joueur est de (50*2)= 100 .Des noms différents sont donnés par défaut à chacun des membres du bataillon. +          ​//CreateGroup("​Bataillon",​ "​57Rima",​ joueur, "​Tauren",​ 50)// crée un bataillon de 50 Tauren dont le coût pour le joueur est de (50*2)= 100. Des noms différents sont donnés par défaut à chacun des membres du bataillon. 
-  ​* ​Créer une armée est un peu plus complexe. CreateGroup("​Armee","​ArmeeNapoleon",​joueur,"​Humain"​) crée une armée dont le général est un humain, qui est crée avec un nom par défaut. Son coût est alors du coût de l'​humain multiplié par 1.2 soit 12. Il est ensuite possible de créer un nouveau bataillon ou autre et de les lui ajouter sans coût supplémentaire.+       - Créer une armée est un peu plus complexe. ​ 
 +          * //CreateGroup("​Armee","​ArmeeNapoleon",​joueur,"​Humain"​)// crée une armée dont le général est un humain, qui est crée avec un nom par défaut. Son coût est alors du coût de l'​humain multiplié par 1.2 soit 12. Il est ensuite possible de créer un nouveau bataillon ou autre et de les lui ajouter sans coût supplémentaire.
  
-* Ainsi create("​Humain",​ "​Arthur",​Joueur) (i) retourne un personnage "​Humain",​ (ii) associe ce personnage au Joueur, et  (iii) décrémente la bourse du joueur de la somme correspondante. ​ 
  
  
 //Bien sûr, les personnages se déplacent, les groupes aussi, etc. mais ce sera pour une autre année.// //Bien sûr, les personnages se déplacent, les groupes aussi, etc. mais ce sera pour une autre année.//
  
-===== Rendu =====+===== Rendu  =====
  
     - un diagramme UML qui visualise uniquement les classes/​interfaces dont votre code dépend directement.     - un diagramme UML qui visualise uniquement les classes/​interfaces dont votre code dépend directement.
           * le diagramme vise à visualiser l'​architecture de votre solution ​           * le diagramme vise à visualiser l'​architecture de votre solution ​
-                    * les attributs faisant référence à des classes/​interfaces sont uniquement représentés sous la forme d'​associations (rôle, cardinalité,​ orientée) 
-                    * pas de getter et setter 
-                    * pas de classes non directement utilisées par exemple. 
                     * les différents patterns apparaissent sous forme d'​annotations                     * les différents patterns apparaissent sous forme d'​annotations
           * le diagramme peut être obtenu par reverse-engineering mais doit être adapté pour répondre aux points précédents. ​           * le diagramme peut être obtenu par reverse-engineering mais doit être adapté pour répondre aux points précédents. ​
     - les codes sources des classes que vous avez créées ou modifiées exclusivement.     - les codes sources des classes que vous avez créées ou modifiées exclusivement.
 +    - la couverture de tests
  
-La date du rendu au plus tard : 6/12 à 23h45 +La date du rendu au plus tard lundi 17/12 à 12h pour les S3T et pour les S3A, le lundi é! janvier à 9h  : Sur [[http://​jalon.unice.fr/​cours/​blay/​Cours-blay-20150930110548/​BoiteDepot-blay-20161122213044309075?​mode_etudiant=false|Jalon]] avec comme nom pour l'​archive :  Gr <​numeroGroupe>​ + Nom des étudiants dans le groupe
- +
- +
-Sur [[http://​jalon.unice.fr/​cours/​blay/​Cours-blay-20150930110548/​BoiteDepot-blay-20161122213044309075?​mode_etudiant=false|Jalon]] avec comme nom pour l'​archive :  Gr <​numeroGroupe>​ + Nom des étudiants dans le groupe +
- +
  
2018_2019/s3/concprogobjet/td/td7.txt · Last modified: 2019/01/25 10:29 by blay