Projet Simulateur de clic de bouton (événement)
Contexte : Construisez une application console qui simule un bouton avec un événement Click. Des abonnés (par exemple, un journaliseur et un notificateur) réagissent au clic.
Exigences
Section intitulée « Exigences »- Créez une classe
Buttonavec un événementClick(selon le patternEventHandler). - Fournissez une méthode
SimulateClick()qui lève l’événement. - Créez deux classes abonnées :
LoggingSubscriberetNotificationSubscriber. - Abonnez les deux à l’événement
Clickdu bouton. - Simulez des clics et observez la sortie.
Code complet
Section intitulée « Code complet »using System;
// EventArgs personnalisé (optionnel, mais suit le pattern)public class ButtonClickEventArgs : EventArgs{ public DateTime ClickTime { get; set; } public string ButtonName { get; set; }}
// Classe Buttonpublic class Button{ public string Name { get; set; }
public event EventHandler<ButtonClickEventArgs> Click;
public Button(string name) => Name = name;
protected virtual void OnClick(ButtonClickEventArgs e) { Click?.Invoke(this, e); }
public void SimulateClick() { Console.WriteLine($"[{Name}] Bouton cliqué !"); var args = new ButtonClickEventArgs { ClickTime = DateTime.Now, ButtonName = Name }; OnClick(args); }}
// Abonné 1 : Journalisationpublic class LoggingSubscriber{ public void Subscribe(Button button) { button.Click += OnButtonClick; }
private void OnButtonClick(object sender, ButtonClickEventArgs e) { Console.WriteLine($"[LOG] Bouton '{e.ButtonName}' cliqué à {e.ClickTime:HH:mm:ss}"); }}
// Abonné 2 : Notificationpublic class NotificationSubscriber{ public void Subscribe(Button button) { button.Click += OnButtonClick; }
private void OnButtonClick(object sender, ButtonClickEventArgs e) { Console.WriteLine($"[NOTIFY] Vous avez cliqué sur {e.ButtonName} !"); }}
// Programme principalpublic class Program{ static void Main() { Console.WriteLine("=== Simulateur de clic de bouton avec événements ===\n");
Button myButton = new Button("Envoyer");
var logger = new LoggingSubscriber(); var notifier = new NotificationSubscriber();
logger.Subscribe(myButton); notifier.Subscribe(myButton);
myButton.SimulateClick(); Console.WriteLine(); myButton.SimulateClick(); }}Exemple d’exécution
Section intitulée « Exemple d’exécution »=== Simulateur de clic de bouton avec événements ===
[Envoyer] Bouton cliqué ![LOG] Bouton 'Envoyer' cliqué à 14:23:05[NOTIFY] Vous avez cliqué sur Envoyer !
[Envoyer] Bouton cliqué ![LOG] Bouton 'Envoyer' cliqué à 14:23:06[NOTIFY] Vous avez cliqué sur Envoyer !Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Frameworks d’interface graphique : Ce projet imite le fonctionnement réel des boutons dans WinForms, WPF ou MAUI. L’événement Click notifie plusieurs abonnés (mise à jour de l’interface, sauvegarde de données, lecture d’un son).
Exemple : Windows Forms Button.Click fonctionne exactement de cette manière.