Commit 9e49133d authored by Alan's avatar Alan

Modification du code

parent 31520476
# TP Chronometre # 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 { public class Chronometre {
private ChronometreState state; private ChronometreState état;
private long tempsEcoule; private long tempsEcoule;
public Chronometre() { public Chronometre() {
this.state = new ArreteState(this); état = new Arrete(this);
this.tempsEcoule = 0; tempsEcoule = 0;
} }
public void setState(ChronometreState state) { public void setState(ChronometreState état) {
this.state = state; this.état = état;
} }
public long getTempsEcoule() { public void démarrer() {
return tempsEcoule; état.demarrer();
}
public void mettreEnPause() {
état.mettreEnPause();
} }
public void demarrer() { public void arrêter() {
state.demarrer(); état.arreter();
} }
public void pause() { public void réinitialiser() {
state.pause(); état.reinitialiser();
} }
public void arreter() { public String getTemps() {
state.arreter(); return état.getTemps();
} }
public void reset() { public void setTemps(long x) {
state.reset(); this.tempsEcoule = x;
} }
public long getTempsInitial() {
return tempsEcoule;
}
} }
...@@ -2,9 +2,11 @@ public interface ChronometreState { ...@@ -2,9 +2,11 @@ public interface ChronometreState {
void demarrer(); void demarrer();
void pause(); void mettreEnPause();
void reinitialiser();
void arreter(); 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 class Main {
public static void main(String[] args) { public static void main(String[] args) throws InterruptedException {
Chronometre chronometre = new Chronometre(); Chronometre chronometre = new Chronometre();
chronometre.demarrer(); chronometre.démarrer();
System.out.println(chronometre.getTemps());
// Le chronomètre est en marche Thread.sleep(3000);
System.out.println("Temps écoulé : " + chronometre.getTempsEcoule());
chronometre.pause(); chronometre.mettreEnPause();
System.out.println(chronometre.getTemps());
// Le chronomètre est en pause chronometre.réinitialiser();
System.out.println("Temps écoulé : " + chronometre.getTempsEcoule()); 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; private Chronometre chronometre;
public ArreteState(Chronometre chronometre) { public Reinitialise(Chronometre chronometre) {
this.chronometre = chronometre; this.chronometre = chronometre;
} }
@Override @Override
public void demarrer() { public void demarrer() {
chronometre.setState(new DemarreState(chronometre)); System.out.println("Démarrage du chronomètre");
chronometre.setState(new Demarre(chronometre));
} }
@Override @Override
public void pause() { public void mettreEnPause() {
// Ne fait rien // Ne fait rien
} }
...@@ -22,7 +23,13 @@ public class ArreteState implements ChronometreState { ...@@ -22,7 +23,13 @@ public class ArreteState implements ChronometreState {
} }
@Override @Override
public void reset() { public void reinitialiser() {
chronometre.setTempsEcoule(0); // 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