From 3a1f73170fbd6047451c4a7a73e58a6c1393273b Mon Sep 17 00:00:00 2001 From: tuanvu Date: Mon, 10 Nov 2025 10:14:08 +0100 Subject: [PATCH 1/2] Update Capteur -> CanalAsync in Afficheur.java --- src/impl/Afficheur.java | 11 +---------- src/impl/Canal.java | 4 ++-- src/impl/CapteurImpl.java | 2 +- src/impl/Scheduler.java | 2 +- src/impl/UpdateReq.java | 8 ++++---- src/interfaces/ObserverDeCapteurAsync.java | 2 +- src/interfaces/ObserverdeCapteur.java | 4 +++- src/main.java | 12 +----------- 8 files changed, 14 insertions(+), 31 deletions(-) diff --git a/src/impl/Afficheur.java b/src/impl/Afficheur.java index 1b4193d..895888d 100644 --- a/src/impl/Afficheur.java +++ b/src/impl/Afficheur.java @@ -7,26 +7,17 @@ import java.util.Random; import java.util.concurrent.Future; public class Afficheur implements ObserverdeCapteur { - private Canal canalAsync; private int id= new Random().nextInt(100); public Afficheur() {} - public Afficheur(Canal canalAsync) { - this.canalAsync = canalAsync; - } - - public void setCanal(Canal canal){ - this.canalAsync = canal; - } - public void setId(int id){ this.id = id; } //AO1 - concrete servant @Override - public void update(Capteur subject) { + public void update(Canal canalAsync) { try{ Future futureValue= canalAsync.getValue(); Integer value=futureValue.get(); diff --git a/src/impl/Canal.java b/src/impl/Canal.java index 65a07fd..81e6f9e 100644 --- a/src/impl/Canal.java +++ b/src/impl/Canal.java @@ -21,8 +21,8 @@ public class Canal implements ObserverDeCapteurAsync, CapteurAsync { //AO1 - proxy @Override - public Future update(Capteur c) { - return scheduler.enquete(new UpdateReq(capteur,afficher),new Random().nextInt(1000)+500); + public Future update() { + return scheduler.enquete(new UpdateReq(this,afficher),new Random().nextInt(1000)+500); } //AO2 - proxy diff --git a/src/impl/CapteurImpl.java b/src/impl/CapteurImpl.java index 2efe926..7e45d48 100644 --- a/src/impl/CapteurImpl.java +++ b/src/impl/CapteurImpl.java @@ -43,7 +43,7 @@ public class CapteurImpl implements Capteur { public void tick() { value++; for (ObserverDeCapteurAsync canal : observers) { - canal.update(this); + canal.update(); } } diff --git a/src/impl/Scheduler.java b/src/impl/Scheduler.java index 3d648bb..d32653a 100644 --- a/src/impl/Scheduler.java +++ b/src/impl/Scheduler.java @@ -15,6 +15,6 @@ public class Scheduler { } public Future enquete(Callable task, long delay) { - return scheduler.schedule(task, delay, TimeUnit.MICROSECONDS); + return scheduler.schedule(task, delay, TimeUnit.MILLISECONDS); } } diff --git a/src/impl/UpdateReq.java b/src/impl/UpdateReq.java index d065174..ce5dff2 100644 --- a/src/impl/UpdateReq.java +++ b/src/impl/UpdateReq.java @@ -6,18 +6,18 @@ import interfaces.ObserverdeCapteur; import java.util.concurrent.Callable; public class UpdateReq implements Callable { - private Capteur capteur; + private Canal canalAsync; private ObserverdeCapteur afficheur; - public UpdateReq(Capteur capteur, ObserverdeCapteur afficheur) { - this.capteur = capteur; + public UpdateReq(Canal canalAsync, ObserverdeCapteur afficheur) { + this.canalAsync = canalAsync; this.afficheur = afficheur; } //AO1 - concrete MI @Override public Void call() { - afficheur.update(capteur); + afficheur.update(canalAsync); return null; } } \ No newline at end of file diff --git a/src/interfaces/ObserverDeCapteurAsync.java b/src/interfaces/ObserverDeCapteurAsync.java index e003852..ff7a0cd 100644 --- a/src/interfaces/ObserverDeCapteurAsync.java +++ b/src/interfaces/ObserverDeCapteurAsync.java @@ -4,5 +4,5 @@ import java.util.concurrent.Future; public interface ObserverDeCapteurAsync { //AO1 - service - Future update(Capteur c); + Future update(); } diff --git a/src/interfaces/ObserverdeCapteur.java b/src/interfaces/ObserverdeCapteur.java index f1e9ded..5b9c352 100644 --- a/src/interfaces/ObserverdeCapteur.java +++ b/src/interfaces/ObserverdeCapteur.java @@ -1,5 +1,7 @@ package interfaces; +import impl.Canal; + public interface ObserverdeCapteur{ //AO1 - servant - public void update(Capteur subject); + public void update(Canal canalAsync); } diff --git a/src/main.java b/src/main.java index 47df5b0..b1685b3 100644 --- a/src/main.java +++ b/src/main.java @@ -12,26 +12,16 @@ import interfaces.ObserverdeCapteur; public class main { - static int NB_CANAUX = 10; + static int NB_CANAUX = 2; public static void main(String[] argv){ Scheduler scheduler = new Scheduler(NB_CANAUX); Capteur c = new CapteurImpl(); - /* - Afficheur a=new Afficheur(); - Canal canal=new Canal(c,scheduler,a); - a.setCanal(canal); - - c.attach(canal); - */ - - for(int i = 0; i Date: Mon, 10 Nov 2025 10:32:43 +0100 Subject: [PATCH 2/2] afficheur update canalAysnc now --- src/impl/Afficheur.java | 6 +++--- src/impl/UpdateReq.java | 10 +++++----- src/interfaces/ObserverdeCapteur.java | 2 +- src/main.java | 5 +---- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/impl/Afficheur.java b/src/impl/Afficheur.java index 895888d..d91cebf 100644 --- a/src/impl/Afficheur.java +++ b/src/impl/Afficheur.java @@ -1,6 +1,6 @@ package impl; -import interfaces.Capteur; +import interfaces.CapteurAsync; import interfaces.ObserverdeCapteur; import java.util.Random; @@ -17,9 +17,9 @@ public class Afficheur implements ObserverdeCapteur { //AO1 - concrete servant @Override - public void update(Canal canalAsync) { + public void update(CapteurAsync capteurAsync) { try{ - Future futureValue= canalAsync.getValue(); + Future futureValue= capteurAsync.getValue(); Integer value=futureValue.get(); System.out.println("Afficheur " + id+", value: "+ value); }catch(Exception e){ diff --git a/src/impl/UpdateReq.java b/src/impl/UpdateReq.java index ce5dff2..3ad4023 100644 --- a/src/impl/UpdateReq.java +++ b/src/impl/UpdateReq.java @@ -1,23 +1,23 @@ package impl; -import interfaces.Capteur; +import interfaces.CapteurAsync; import interfaces.ObserverdeCapteur; import java.util.concurrent.Callable; public class UpdateReq implements Callable { - private Canal canalAsync; + private CapteurAsync canalProxy; private ObserverdeCapteur afficheur; - public UpdateReq(Canal canalAsync, ObserverdeCapteur afficheur) { - this.canalAsync = canalAsync; + public UpdateReq(CapteurAsync canalProxy, ObserverdeCapteur afficheur) { + this.canalProxy = canalProxy; this.afficheur = afficheur; } //AO1 - concrete MI @Override public Void call() { - afficheur.update(canalAsync); + afficheur.update(canalProxy); return null; } } \ No newline at end of file diff --git a/src/interfaces/ObserverdeCapteur.java b/src/interfaces/ObserverdeCapteur.java index 5b9c352..505a783 100644 --- a/src/interfaces/ObserverdeCapteur.java +++ b/src/interfaces/ObserverdeCapteur.java @@ -3,5 +3,5 @@ import impl.Canal; public interface ObserverdeCapteur{ //AO1 - servant - public void update(Canal canalAsync); + public void update(CapteurAsync capteurAsync); } diff --git a/src/main.java b/src/main.java index b1685b3..24b28e1 100644 --- a/src/main.java +++ b/src/main.java @@ -1,5 +1,3 @@ -import java.util.Timer; -import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -8,11 +6,10 @@ import impl.Canal; import impl.CapteurImpl; import impl.Scheduler; import interfaces.Capteur; -import interfaces.ObserverdeCapteur; public class main { - static int NB_CANAUX = 2; + static int NB_CANAUX = 3; public static void main(String[] argv){ Scheduler scheduler = new Scheduler(NB_CANAUX);