Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

C Sharp – Liaison tardive

Programmation en C# (C Sharp)



Lorsque le compilateur du langage met en place un mécanisme de liaison du code de la méthode lors de l’exécution et non lors de la compilation on parle alors de liaison dynamique ou tardive. Une telle méthode est qualifiée de virtuelle et doit être déclarée avec le mot clef virtual :

class Vehicule
{
    protected int nbr_passager = 0;
    public virtual void Passager( int nb) // méthode virtuelle à liaison tardive
    {
        nbr_passager =nb; 
     }
}
class Voiture : Vehicule
{
   // hérite de la méthode à liaison virtuelle de la mère
}

Si vous déclarez dans une classe dérivée une méthode ayant la même signature qu’une méthode dynamique de la classe ancêtre, la nouvelle méthode redéfinit la méthode héritée dans la classe dérivée, l’utilisation du mot clef override est obligatoire

class Voiture : Vehicule
{
    public override void Passager( int nb) // méthode virtuelle redéfinissant celle de la classe mère
    {
        nbr_passager = nb+1; 
     }
}

Lors de l’exécution c’est l’environnement d’exécution qui va chercher le bon code de méthode à exécuter dans une table contenant toutes les méthodes virtuelles.



using System;

class Vehicule
{
protected int nbr_passager = 0;
public Vehicule( )
{
Console.WriteLine("(constructeur Vehicule) Nombre de passagers = "+nbr_passager );
}
public virtual void Passager( int nb) // méthode virtuelle redéfinissable
{
nbr_passager =nb; 
Console.WriteLine("(Vehicule) Nombre de passagers = "+nbr_passager );
}
}

class Terrestre : Vehicule 
{
public override void Passager( int nb) // redéfinit la méthode virtuelle de classe Vehicule
{
nbr_passager =nb+1; 
Console.WriteLine("(Terrestre ) Nombre de passagers = "+nbr_passager );
}
}

class Voiture : Terrestre 
{
public override void Passager( int nb) // redéfinit la méthode virtuelle de classe Terrestre
{
nbr_passager =nb+2; 
Console.WriteLine("(Voiture ) Nombre de passagers = "+nbr_passager );
}
}

class Exercice
{
public static void Main(string[ ] args) // méthode principale de lancement de l'exécution
{
Vehicule mercedes;

mercedes =  new Vehicule ( );
mercedes.Passager( 3 ); // méthode Passager de la classe Vehicule  qui est utilisée

mercedes =  new Terrestre ( );
mercedes.Passager( 3 );// méthode Passager de la classe Terrestre qui est utilisée

mercedes =  new Voiture ( );
mercedes.Passager( 3 );// méthode Passager de la classe Voiture qui est utilisée

Console.ReadLine();
}
}



Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More