Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
restricted:mco-2:correction:tp1 [2016/02/10 09:53] – fbrucker | restricted:mco-2:correction:tp1 [2016/02/15 11:20] (Version actuelle) – fbrucker | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Correction TP1 ====== | ||
+ | |||
+ | On suppose que toutes vos classes sont dans le même package : ici '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Pour exécuter ce programme chez vous : | ||
+ | * créez un projet intellij comme pour le TP1 et placez le package de base à '' | ||
+ | * créez une classe '' | ||
+ | * copiez/ | ||
+ | * exécutez votre programme. | ||
+ | |||
+ | ===== Les classes ===== | ||
+ | |||
+ | On montrera la classe Dice et son utilisation avec la méthode main de la classe Main. | ||
+ | |||
+ | ==== Dice.java ==== | ||
+ | |||
+ | <code java> | ||
+ | package com.mco; | ||
+ | |||
+ | import java.util.Random; | ||
+ | |||
+ | public class Dice { | ||
+ | private int position; // Méthode générée automatiquement | ||
+ | private Random randomGenerator; | ||
+ | |||
+ | public Dice(int positionInitiale) { | ||
+ | position = positionInitiale; | ||
+ | randomGenerator = new Random(); | ||
+ | } | ||
+ | |||
+ | public Dice() { | ||
+ | this(1); | ||
+ | } | ||
+ | |||
+ | public int getPosition() { // Méthode générée automatiquement | ||
+ | return position; | ||
+ | } | ||
+ | |||
+ | public void setPosition(int position) { // Méthode générée automatiquement | ||
+ | this.position = position; | ||
+ | } | ||
+ | |||
+ | public void roll() { | ||
+ | position = randomGenerator.nextInt(6) + 1; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public String toString() { // Méthode générée automatiquement | ||
+ | return " | ||
+ | " | ||
+ | ' | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public boolean equals(Object o) { // Méthode générée automatiquement | ||
+ | if (this == o) return true; | ||
+ | if (o == null || getClass() != o.getClass()) return false; | ||
+ | |||
+ | Dice dice = (Dice) o; | ||
+ | |||
+ | return getPosition() == dice.getPosition(); | ||
+ | |||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public int hashCode() { // Méthode générée automatiquement | ||
+ | return getPosition(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Spécificités : | ||
+ | * deux constructeurs, | ||
+ | * le générateur de nombre aléatoire est placé en attribut privé de la classe. | ||
+ | * les méthodes '' | ||
+ | |||
+ | ==== Main.java ==== | ||
+ | |||
+ | <code java> | ||
+ | package com.mco; | ||
+ | |||
+ | public class Main { | ||
+ | |||
+ | static void testDice() { | ||
+ | System.out.println(" | ||
+ | |||
+ | Dice firstDice = new Dice(); | ||
+ | System.out.println(firstDice); | ||
+ | firstDice.setPosition(5); | ||
+ | System.out.println(firstDice); | ||
+ | |||
+ | Dice secondDice = new Dice(firstDice.getPosition()); | ||
+ | System.out.println(firstDice == secondDice); | ||
+ | System.out.println(firstDice.equals(secondDice)); | ||
+ | firstDice.setPosition(2); | ||
+ | System.out.println(firstDice.equals(secondDice)); | ||
+ | } | ||
+ | |||
+ | static void testRandom() { | ||
+ | System.out.println(" | ||
+ | |||
+ | |||
+ | final int NUMBER_TRIES = 100; | ||
+ | |||
+ | int numberOf1 = 0; | ||
+ | Dice dice = new Dice(); | ||
+ | |||
+ | for (int i=0; i < NUMBER_TRIES; | ||
+ | dice.roll(); | ||
+ | |||
+ | if (dice.getPosition() == 1) { | ||
+ | numberOf1 += 1; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | testDice(); | ||
+ | testRandom(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | Spécificités : | ||
+ | * des commentaires pour vérifier que les réponses sont correctes. | ||
+ | * utilisation de méthodes statiques dans la classe Main pour rendre la lecture plus aisée, | ||
+ | * mot clé '' | ||
+ | * on caste un entier en réel ('' | ||