restricted:mco-2:tp1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
restricted:mco-2:tp1 [2016/02/26 08:36] fbruckerrestricted:mco-2:tp1 [2016/03/01 10:41] (Version actuelle) fbrucker
Ligne 1: Ligne 1:
 +====== TP1 & TP2 ======
  
 +Prise en main de Java et premières classes. Ceci est une introduction à la création de classe, comme pour la [[public:mco-2:un_projet_complet:card|création de la classe Card]] du cours.
 +
 +Lancer Intellij en ouvrant un terminal et en tapant : 
 +<code terminal>
 +idea.sh
 +</code>
 +
 +
 +
 +===== Hello World! =====
 +
 +C'est une tradition de commencer tout nouveau langage par un "Hello World!". Suivez donc les instructions de [[public:java:utiliser_intellij| pour faire vos premiers pas avec Intellij]] & créer votre premier projet Java.
 +
 +Ceci fait, vous devriez avoir un environnement de développement opérationnel.
 +
 +===== Des Dés =====
 +
 +On vous demande de créer une classe ''Dice'' qui représentera un dé à 6 faces. 
 +
 +==== On débute ====
 +
 +On commence par créer une première classe ''Dice'' avec les propriétés basiques que vous testerez dans votre programme principal. 
 +
 +=== Modèle UML === 
 +
 +{{ :restricted:mco-2:tp1:dice_1.png |}}
 +
 +=== Tests === 
 +
 +Créez une méthode ''static'' (le pourquoi du ''static'' est expliqué [[public:java:misc#Understanding Class Members|ici]]) dans la classe ''Main'' où vous testerez les différentes méthodes/attributs que vous créerez.
 +
 +N'oubliez pas que les méthodes ''toString'', les getter/setter et les méthodes ''equals'' et ''hashcode'' peuvent être générés automatiquement (**"code >> generate..."**).
 +
 +
 +== Dans un premier temps ==
 +
 +  * Créez un Dé,
 +  * affichez son attribut à l'écran,
 +  * Changez sa position et vérifiez que l'affichage a bien changé.
 +
 +La doc utile pour la construction d'objets : 
 +  * [[public:java:misc#Classes| définir une classe]]
 +    * [[public:java:misc#Declaring Member Variables|ses attributs]],
 +    * [[public:java:misc#Providing Constructors for Your Classes|un constructeur]],
 +  * [[public:java:misc#créer et utiliser des objects]]
 +
 +== Dans un second temps ==
 +
 +  * Affichez un Dé
 +  * Créez un second dé et initialisez le comme le premier dé
 +  * Testez l'égalité des deux dés que vous venez de créer suivant: 
 +    * l'opérateur ''=='' (réponse ''false''),
 +    * la méthode ''equals'' (réponse ''true'' si les deux positions sont égales et ''false ''sinon). 
 +
 +La doc utile : 
 +  * [[public:java:misc#Controlling Access to Members of a Class|la visibilité]] des méthodes et classes,
 +  * [[public:java:misc#Object as a Superclass| la surcharge]] des méthodes d'Object permettant de :
 +    * afficher un objet à l'écran : méthode ''toString''
 +    * égalité entre objet, méthode ''equals'', qui ne va jamais sans la méthode ''hashcode'' (qui transforme un objet en entier).
 +
 +==== Le hasard ==== 
 +
 +En utilisant le lien suivant : 
 +[[http://www.leepoint.net/algorithms/random/random-api.html]], ajoutez une méthode ''+void: roll()'' à la classe ''Dice'' qui changera la position du dé (On suppose avoir affaire à un banal dé à six face).
 +
 +<note>
 +Les documentations officielles du lien précédent sont : 
 +  * Classe [[https://docs.oracle.com/javase/8/docs/api/java/util/Random.html|java.util.Random]]
 +  * Méthode [[https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#random--|random()]]  de la classe java.lang.Math
 +</note>
 +=== Tests === 
 +
 +Créez une méthode statique dans ''Main'' qui lance 100 fois le dé. Vérifiez que le nombre de fois où l'on obtient un 1 est cohérent avec la théorie.
 +
 +==== Tapis vert ====
 +
 +Créez une classe ''Track''. Cette classe va nous permettre de jouer aux dés. Elle doit pouvoir lancer 5 dés.
 +
 +Pour créer la classe ''Track'', vous aurez besoin de gérer des [[public:java:misc#tableaux]].
 +
 +
 +=== UML ===
 +
 +On propose le diagramme UML suivant :
 +
 +{{ :restricted:mco-2:tp1:track.png |}}
 +
 +=== tests ===
 +
 +Créez une méthode statique dans ''Main'' qui lance 100 fois les 5 dés (avec la méthode roll de ''Track'').
 +
 +Calculez la moyenne de la somme de ces 100 tirages. Est-ce cohérent avec la théorie ?
 +
 +<note warning>
 +Attention, la division de 2 entiers donne un entier : 
 +<code java>
 +int un = 1;
 +int trois = 3;
 +
 +int divisionEntiere = un / trois; // vaut 0
 +</code> 
 +
 +Pour obtenir un réel il faut utiliser la division réelle, et donc que l'un des deux protagoniste soit un réel :
 +<code java>
 +float un = 1.0;
 +int trois = 3;
 +
 +float division = un / trois; // vaut 0.3333333
 +</code>
 +
 +On peut également transformer un entier en réel en utilisant le //cast// :
 +
 +<code java>
 +int un = 1;
 +int trois = 3;
 +
 +// considere un comme un réel et on le divise par l'entier 3
 +float division = ((float) un) / trois; 
 +</code>
 +</note>