Actualites��Archives
Diffusez votre communiqué de presse
�Inscription | Plan du site | 45� visiteurs actifs �
��
���� A la Une
� Actualit�s
� Dossiers
� Coin Technique
� Agenda des salons
� Outils Web

���� R�f�rencement
� R�f�rencement professionnel
� Liens commerciaux
� Devis r�f�rencement

���� Diagnostic
� Popularit� Site Web
� Positionnement Moteur
� WebPage Alerte
� Positionnement Google

���� Archives
� S�lection
� Exp�rience qui parle
� Internet quotidien
� Tous les dossiers

���� Services
� Mise en conformit� de site
� H�bergement
� Communiqu�s de Presse
� Contenu �ditorial
� Webmastering

���� Contact
� Nous contacter
� La protection des donn�es personnelles

���� Technique
� Merise

���� Login
���
����
Inscription

Mot de passe oubli�?

�� Sondage
Les points que vous souhaitez voir traiter � l'avenir ?
4%Actualit�
29%Documentation
52%Exemples de sources
3%Liste de liens
11%Revue logiciels

�� Sondage
Vous vous int�ressez plut�t �
77%Programmation
10%Syst�me
9%Logiciel
5%Mat�riel

�� Sondage
votre niveau technique ?
15%Amateur
44%D�butant
34%Professionnel
7%Expert

���� Rechercher
����
���

�Coin Technique


Introduction aux objets en C# (2eme partie)
Ev�nements, Indexeurs et Op�rateurs.

Evénement

Un événement est un membre permettant de fournir des notifications. Les clients utilisateurs de l'objet peuvent attacher un code qui sera ex�cuté lors du déclenchement de l'événement.
Les utilisateurs Visual Basic ont l'habitude de gérer des événements sur des interfaces utilisateurs : clic sur un bouton, par exemple.
En C#, il est possible à une classe de spécifier des événements disponibles aux utilisateurs de l'objet. Cette possibilité trés pratique en conception objet, permet des développements très modulaires.

Une classe document peut ainsi prévenir de la modification d'un document, de sa sauvegarde, etc....

Un événement est défini à l'aide d'une déclaration event. Le type de cette déclaration doit être un type délégué.
Le type délégué EventHandler fourni par Le .Net Framework peut être utilisé ou vous pouvez lui substituer votre propre délégué.

Déclaration d'un événement

public event EventHandler Modified;

Appel d'un �v�nement

L'appel de l'événement s'effectue en appelant l'événement :
Modified(this, e);

L'év�nement est ici de type EventHandler :
public delegate void EventHandler(object sender, System.EventArgs e);

Raccordement à un év�nement

Le client de l'objet doit déclaré un délégué (une méthode) de type év�nement qui sera exécuté:

private void DocModified(object sender, EventArgs e)
{
....
}

Il connecte ensuite ce délégué à l'événement.

doc.Modified += new EventHandler(DocModified);

Lorsque l'événement Modified sera déclenché par l'objet, le délégué DocModified du client sera exécuté.

Exemple

public class Doc
{
	private string mTitle;
	
// D�claration de l'�v�nement public event EventHandler Modified; public Doc() { } protected virtual void OnModified(EventArgs e) { // Le champ est null si le client n'a pas raccord� un d�l�gu� � l'�v�nement // Appel de l'�v�nement, le code attach� par le client est ex�cut� if (Modified != null) Modified(this,e); } public void ChangeTitle(string title) { mTitle = title; // D�clenche l'�venement OnModified(EventArgs.Empty); } public string Title { get { return mTitle; } } } class Test { public Test() { Doc doc = new Doc(); // Attache l'�vemenent doc.Modified += new EventHandler(DocModified); doc.ChangeTitle("TEST"); } // Le d�l�gu� appell� lors du d�clenchement de l'�v�nement est de type EventHandler // public delegate void EventHandler(object sender, System.EventArgs e); private void DocModified(object sender, EventArgs e) { Doc doc = (Doc) sender; Console.WriteLine("Document modifi� : " + doc.Title); } static void Main() { Test app = new Test(); } }

Notez que EventHandler reçoit une instance de l'objet déclencheur de l'événement : sender
Si vous souhaitez envoyer des paramètres supplémentaires, dérivez une classe de System.EventArgs, déclarez un nouveau type délégué basé sur cette classe en lieu et place de EventHandler.

Indexeur

Un indexeur est un membre de classe permettant d'accéder à un objet à la manière d'un tableau.
Un indexeur se déclare de façon similaire à une propriété, dont le nom est this.
Tout comme pour une propriété, la présence des accesseurs get et set indique si l'indexeur est en lecture seule ou écriture seule.

L'indexeur peut retourner n'importe quel type de valeur.

	class ListIndexer
	{
		string[] list = new string[] {"first", "second", "third" };
		public string this[int index] 
		{
			get 
			{
				if (index < list.Length)
					return list[index];
				else
					return string.Empty;
			}
			set 
			{
				if (index < list.Length)
					list[index] = value;
			}
		}
	}
	class Test
	{
		static void Main()
		{
			ListIndexer li = new ListIndexer();
			string s = li[0];
			li[1] = "test";
		}
	}

Un indexeur peut servir à retourner un membre liste ou tableau privé de la classe, mais pourquoi pas une valeur calculée :

	class Multiple
	{
		public int this[int index] 
		{
			get 
			{
				return index * 2;			
			}
		}
	}
	class Test
	{
		static void Main()
		{
			Multiple m = new Multiple();
			int v = m[2];
			Console.WriteLine(v);
		}
	}

Opérateur

Un opérateur permet de spécifier des résultats d'opérations à appliquer sur l'objet.
Trois catégories d'opérateurs sont disponibles :

  • les opérateurs unaires :
    (+, - , !, ~, ++, --, true, false)
  • les opérateurs binaires :
    (+, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >= ou <=)
  • les opérateurs de conversion

Une d�claration d'op�rateur doit inclure un modificateur � la fois public et static.
Des règles vont s'appliquer ensuite en fonction du type d'opérateur choisi.

public class Class2
{
	private static int x = 10;
	public Class2()
	{
	}
	public static int operator+(Class2 a, int b)
	{
		return (x + b);
	}
	public static bool operator==(Class2 a, int b)
	{
		return (x == b);
	}
	public static bool operator!=(Class2 a, int b)
	{
		return (x != b);
	}	
}
class Test
{
	static void Main()
	{
		Class2 c = new Class2();
		int r = c  + 10;
		Console.WriteLine(r);
	}
}

L'opérateur + n'accepte qu'un seul paramètre de type Class2 et peur retourner n'importe quel valeur.
Les opérateurs de comparaison doivent être déclarés par couple :

operator == et operator !=
operator > et operator <
operator >= et operator <=


Jérôme Lacaille
Conception et réalisation d'applications Internet

 

�Imprimer�Donner votre avis

Actualit�s du Net

�
�� Sondage
Selon vous, quel est le meilleur moyen d�obtenir du trafic sur un site internet ?
22%Les liens commerciaux
60%Le r�f�rencement naturel
10%Les banni�res de publicit�
2%La publicit� hors ligne
6%Les communiqu�s de presse

�� Archives
� Structurer correctement un document XML�
� Il est temps de passer au XHTML 1.0�
� Votre premi�re page XHTML 1.0�
� Les expressions r�guli�res�

�

Sam-Mag - Un site du r�seau ACORUS 1996-2007
� Copyright ACORUS All rights reserved.- Mentions l�gales

Ce site respecte la loi Informatique et Libert�s. Pour en savoir plus sur la protection des donn�es personnelles, cliquez

r�f�rencement | achat de mot cl� | r�f�rencement international | web actualit�s | boutique en ligne | statistiques web | referencement site web
communiqu� de presse | r�f�rencement internet | r�f�rencement gratuit | referencement professionnel | referencement immobilier

�
Webmaster