Commit 9e49133d authored by Alan's avatar Alan

Modification du code

parent 31520476
# TP Chronometre
```
.
├── README.md
└── src
├── Arrete.java
├── Chronometre.java
├── ChronometreState.java
├── Demarre.java
├── EnPause.java
├── Main.java
└── Reinitialise.java
```
public class Arrete implements ChronometreState {
private Chronometre chronometre;
public Arrete(Chronometre chronomètre) {
this.chronometre = chronomètre;
}
@Override
public void demarrer() {
System.out.println("Démarrage du chronomètre");
chronometre.setState(new Demarre(chronometre));
}
@Override
public void mettreEnPause() {
// Ne fait rien
}
@Override
public void arreter() {
// Ne fait rien
}
@Override
public void reinitialiser() {
System.out.println("Réinitialisation du chronomètre");
chronometre.setState(new Reinitialise(chronometre));
}
@Override
public String getTemps() {
return "0";
}
}
public class Chronometre {
private ChronometreState state;
private ChronometreState état;
private long tempsEcoule;
public Chronometre() {
this.state = new ArreteState(this);
this.tempsEcoule = 0;
état = new Arrete(this);
tempsEcoule = 0;
}
public void setState(ChronometreState state) {
this.state = state;
public void setState(ChronometreState état) {
this.état = état;
}
public long getTempsEcoule() {
return tempsEcoule;
public void démarrer() {
état.demarrer();
}
public void mettreEnPause() {
état.mettreEnPause();
}
public void demarrer() {
state.demarrer();
public void arrêter() {
état.arreter();
}
public void pause() {
state.pause();
public void réinitialiser() {
état.reinitialiser();
}
public void arreter() {
state.arreter();
public String getTemps() {
return état.getTemps();
}
public void reset() {
state.reset();
public void setTemps(long x) {
this.tempsEcoule = x;
}
public long getTempsInitial() {
return tempsEcoule;
}
}
......@@ -2,9 +2,11 @@ public interface ChronometreState {
void demarrer();
void pause();
void mettreEnPause();
void reinitialiser();
void arreter();
void reset();
String getTemps();
}
public class Demarre implements ChronometreState {
private Chronometre chronometre;
public Demarre(Chronometre chronometre) {
this.chronometre = chronometre;
this.chronometre.setTemps(System.currentTimeMillis());
}
@Override
public void demarrer() {
// Ne fait rien
}
@Override
public void mettreEnPause() {
System.out.println("Mise en pause du chronomètre");
chronometre.setState(new EnPause(chronometre));
}
@Override
public void arreter() {
System.out.println("Arrêt du chronomètre");
chronometre.setState(new Arrete(chronometre));
}
@Override
public void reinitialiser() {
System.out.println("Réinitialisation du chronomètre");
chronometre.setState(new Reinitialise(chronometre));
}
@Override
public String getTemps() {
long tempsActuel = System.currentTimeMillis();
long tempsEcoule = tempsActuel - chronometre.getTempsInitial();
return String.format("%d", tempsEcoule);
}
}
public class DemarreState implements ChronometreState {
private Chronometre chronometre;
public DemarreState(Chronometre chronometre) {
this.chronometre = chronometre;
}
@Override
public void demarrer() {
// Ne fait rien
}
@Override
public void pause() {
chronometre.setState(new PauseState(chronometre));
}
@Override
public void arreter() {
chronometre.setState(new ArreteState(chronometre));
}
@Override
public void reset() {
chronometre.setTempsEcoule(0);
}
}
\ No newline at end of file
public class EnPause implements ChronometreState {
private Chronometre chronometre;
public EnPause(Chronometre chronometre) {
this.chronometre = chronometre;
}
@Override
public void demarrer() {
System.out.println("Démarrage du chronomètre");
chronometre.setState(new Demarre(chronometre));
}
@Override
public void mettreEnPause() {
// Ne fait rien
}
@Override
public void arreter() {
System.out.println("Arrêt du chronomètre");
chronometre.setState(new Arrete(chronometre));
}
@Override
public void reinitialiser() {
System.out.println("Réinitialisation du chronomètre");
chronometre.setState(new Reinitialise(chronometre));
}
@Override
public String getTemps() {
long tempsActuel = System.currentTimeMillis();
long tempsEcoule = tempsActuel - chronometre.getTempsInitial();
return String.format("%d", tempsEcoule);
}
}
public class Main {
public static void main(String[] args) {
public static void main(String[] args) throws InterruptedException {
Chronometre chronometre = new Chronometre();
chronometre.demarrer();
chronometre.démarrer();
System.out.println(chronometre.getTemps());
// Le chronomètre est en marche
System.out.println("Temps écoulé : " + chronometre.getTempsEcoule());
Thread.sleep(3000);
chronometre.pause();
chronometre.mettreEnPause();
System.out.println(chronometre.getTemps());
// Le chronomètre est en pause
System.out.println("Temps écoulé : " + chronometre.getTempsEcoule());
chronometre.réinitialiser();
chronometre.arrêter();
chronometre.arreter();
System.out.println(chronometre.getTemps());
// Le chronomètre est arrêté
System.out.println("Temps écoulé : " + chronometre.getTempsEcoule());
chronometre.reset();
// Le chronomètre est remis à zéro
System.out.println("Temps écoulé : " + chronometre.getTempsEcoule());
}
}
\ No newline at end of file
public class PauseState implements ChronometreState {
private Chronometre chronometre;
public PauseState(Chronometre chronometre) {
this.chronometre = chronometre;
}
@Override
public void demarrer() {
chronometre.setState(new DemarreState(chronometre));
}
@Override
public void pause() {
// Ne fait rien
}
@Override
public void arreter() {
chronometre.setState(new ArreteState(chronometre));
}
@Override
public void reset() {
chronometre.setTempsEcoule(0);
}
}
\ No newline at end of file
public class ArreteState implements ChronometreState {
public class Reinitialise implements ChronometreState {
private Chronometre chronometre;
public ArreteState(Chronometre chronometre) {
public Reinitialise(Chronometre chronometre) {
this.chronometre = chronometre;
}
@Override
public void demarrer() {
chronometre.setState(new DemarreState(chronometre));
System.out.println("Démarrage du chronomètre");
chronometre.setState(new Demarre(chronometre));
}
@Override
public void pause() {
public void mettreEnPause() {
// Ne fait rien
}
......@@ -22,7 +23,13 @@ public class ArreteState implements ChronometreState {
}
@Override
public void reset() {
chronometre.setTempsEcoule(0);
public void reinitialiser() {
// Ne fait rien
}
@Override
public String getTemps() {
return "0";
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment