Home
Browsez les 647 exemples
Téléchargez les 647 exemples
Téléchargez des chapitres
Achetez sur amazon.fr

Niveau: Débutant/Intermédiaire
ISBN-2-84177-339-6
50 Euros

Exemple 11-17 extrait du chapitre Notions de classe et d'objet


Exemple 11-16<     > Exemple 11-18


Cet exemple peut être compilé avec la ligne de commande:
csc.exe /target:exe Exemple_11_17.cs
Erreurs: 0 Avertissements: 0
Remarque:


Exemple_11_17.cs
using System;

class Abonne{
     private string m_Nom;
     public Abonne( string Nom ) { m_Nom = Nom; }
     // Méthode à appeler lorsqu'un événement est déclenché
     // (i.e lorsqu'un bulletin d'information est publié).
     public void ReceptionInfo(object sender, EventArgs e){
        InfoEventArgs info = as InfoEventArgs;
        if( info!= null ){
           Console.WriteLine( m_Nom + " reçoit l'info: " +   
                              ((InfoEventArgs)e).GetBulletinInfo() );
     }
   }
}

//La classe d'argument de l'événement bulletin d'information.
class InfoEventArgs: EventArgs{
     private string m_Description;
     public string GetBulletinInfo() { return m_Description; }
     public InfoEventArgs (string description) { 
        m_Description = description; 
     }
}

// Définition du type délégué 'handler d'un bulletin d'information'.
public delegate void InfoEventHandler(object sender, EventArgs e);

// Classe contenant les événements bulletin d'information.
class AgenceDePresse {
   // Définition des événements bulletins d'information.
   public event InfoEventHandler InfoFrance;
   public event InfoEventHandler InfoMonde; 
   // Méthodes de déclenchement des événements
   // (i.e de publication de bulletin d'information).
   public void OnInfoFrance(InfoEventArgs bulletinInfo) {
      if( InfoFrance != null )    
         InfoFrance(this,bulletinInfo);
   }
   public void OnInfoMonde(InfoEventArgs bulletinInfo) {
      if( InfoMonde != null )     
         InfoMonde(this,bulletinInfo);
   }
}

class Program {
   public static void Main(){
      // Création de l'agence de presse.
      AgenceDePresse afp = new AgenceDePresse ();
      // Création des abonnés.
      Abonne raymond = new Abonne("Raymond");
      Abonne olivier = new Abonne("Olivier");
      Abonne mathieu = new Abonne("Mathieu");
      // Création des abonnements aux événements bulletins d'info.
      afp.InfoFrance += raymond.ReceptionInfo;
      afp.InfoFrance += olivier.ReceptionInfo;
      afp.InfoMonde  += olivier.ReceptionInfo;
      afp.InfoMonde  += mathieu.ReceptionInfo;
      // Publication de bulletins d'information 
      afp.OnInfoFrance(new InfoEventArgs("Hausse du prix du tabac."));
      afp.OnInfoMonde(new InfoEventArgs(
         "Nouvelle élection au Etats-Unis."));
      // Résilation d'abonnement.
      afp.InfoFrance -= new InfoEventHandler(olivier.ReceptionInfo );
      // Publication de bulletins d'information.
      afp.OnInfoFrance(new InfoEventArgs("Baisse des impôts."));
   }
}	
Copyright Patrick Smacchia 2006 2007