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
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 28 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