public class MaMontre {
public static void main(String[] args) {
Watch h1 = new Watch(); //Instanciation d'un objet watch (une montre)
Watch h2 = new Watch(23, 58); //Instanciation d'un objet watch, on précise nous même l'heure lors de l'instanciation de l'objet
//Watch h3 = new Watch(29, 588); // si on décommente, le programme doit planter (ERROR)
h1.printHour(); // minuit
h1.tick(); // minuit 1 minute
h1.printHour();
h2.printHour(); // 23:58
h2.tick();
h2.tick();
h2.tick();
h2.printHour();
h2.tick(60);
h2.printHour();
System.out.println("----------------------------------------");
Watch w = new Watch (23, 58);
w.printHour();
w.tick();
w.printHour();
w.tick (5);
w.printHour();
}
}
class Watch { //création d'une classe watch, variables d'initialisations dés la ligne suivante
int heures;
int minutes;
Watch() { // par défaut : 00h00
heures = 0;
minutes = 0;
}
/*
* throws Exception dans la signature du constructeur permet de dire
* à Java que ce constructeur, lorsqu'il est appelé, peut éventuellement
* lancer une nouvelle Exception
*
* => l'instruction throw new Exception("..."); permet de dire à Java
* qu'il faut créer un objet Exception avec un String en paramètre pour
* donner le motif et ensuite le throw permet de lancer l'exception
*/
Watch(int h, int m) throws Error { // heure : hh:mm
// petite vérification
if(h > 23 || h < 0 || m > 59 || m < 0) { // problème !
throw new Error("Erreur : heure incorrecte.");//définition d'un message d'erreur
}
heures = h;
minutes = m;
}
public void tick() {
if(minutes == 59) { // le cas XX : 59
if(heures == 23) { // le cas 23 : 59
heures = 0; // XX + 1 = 0
minutes = 0;
} else {
heures += 1; // XX + 1
minutes = 0;
}
} else {
minutes += 1; // le cas sans problème
}
}
public void tick(int n) {
// cette boucle permet de tick() n fois
for(int i = 0; i < n; i++) {
tick();
}
}
/*
* on surcharge (override) la méthode toString héritée de l'objet Object (parent de tous les
* objets) et on renvoie un String qui est la représentation de l'objet courant càd
* les heures et les minutes de l'horloge
*/
public String toString() {
return heures + ":" + minutes;
}
public void printHour() {
System.out.println(this);
}
}