ajout de decelerate () dans DrunkCar.java

This commit is contained in:
Chahrazad650
2025-12-13 08:49:03 +01:00
parent 5926c23824
commit c3facd829d
2 changed files with 39 additions and 2 deletions

View File

@@ -1,8 +1,15 @@
import java.util.Random;
/**
* Décorateur Drunk :
* la voiture peut accélérer ou ralentir au hasard.
* DrunkCar = décorateur "pilote ivre".
*
* Idée :
* - Quand l'utilisateur demande "Accelerer", le pilote peut se tromper
* et faire "Rallentir" à la place (au hasard).
* - Pareil quand on demande "Rallentir".
*
* => On modifie seulement les actions utilisateur (accelerate/decelerate),
* sans modifier la classe Car.
*/
public class DrunkCar extends CarDecorator {
@@ -11,6 +18,7 @@ public class DrunkCar extends CarDecorator {
public DrunkCar(Car car) {
super(car);
}
// 50% : fait la bonne action, 50% : fait l'inverse
@Override
public String accelerate() {
@@ -20,4 +28,13 @@ public class DrunkCar extends CarDecorator {
return car.decelerate();
}
}
@Override
public String decelerate() {
if (RANDOM.nextBoolean()) {
return car.decelerate();
} else {
return car.accelerate();
}
}
}

20
src/HybridCar.java Normal file
View File

@@ -0,0 +1,20 @@
/**
* Décorateur Hybrid :
* consomme moins de carburant.
*/
public class HybridCar extends CarDecorator {
public HybridCar(Car car) {
super(car);
}
@Override
public void run() {
// une fois sur deux, pas de consommation
if (Math.random() < 0.5) {
car.move();
} else {
car.run();
}
}
}