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.

POO – Interface générique

Programmez en orienté objet en C Sharp



Objectif : Construction d’une hiérarchie d’interface et implémentation dans une classe concrète.

On donne la hiérarchie d’interfaces suivante de l’exercice précédent :

On se propose de construire une interface générique décrivant le fonctionnement d’un troupeau d’animaux de type T (le type T est le type générique) :

Spécifications :
nbrAnimaux = le nombre d’animaux composant le troupeau.
this[ string nom ] = renvoie l’animal de type T du troupeau dont le nom est passé en index.
kmParJour( ) = le nombre de km parcourus par jour par le troupeau.
OnDeplace et OnRepose = événements se produisant lorsque le troupe marche ou lorsque le troupeau s’arrête.
enDeplacement  = type délégué pour les événements OnDeplace et OnRepose

Question : 

Construire l’interface ITroupeau < T >

using System;

interface IAnimal
{
bool isAdulte 
{
get;
} // propriété
string nom 
{
get;
set;
} // propriété
void age(int nbrMois); // méthode
}

interface IAquatique
{
int nbrNageaoires 
{
get;
set;
} // propriété
}

interface IBaleine : IAnimal, IAquatique
{
int longueur 
{
get;
set;
} // propriété
}

class BaleineBosses : IBaleine
{
public const int moisPourAdulte = 11;
private bool etatAdulte = false;
private int etatAge = 0;
private string etatNom = "non attribué";
private int etatNageoires = 5;
private int etatLongueur = 8;

public bool isAdulte
{
get 
{
return etatAdulte; 
}
} // propriété
public string nom
{
get 
{
return etatNom; 
}
set 
{
etatNom = value; 
}
} // propriété
public void age(int nbrMois)
{
etatAge = nbrMois;
etatAdulte = (nbrMois > moisPourAdulte);
} // méthode
public int nbrNageaoires
{
get 
{
return etatNageoires; 
}
set 
{
etatNageoires = value; 
}
} // propriété
public int longueur
{
get 
{
return etatLongueur; 
}
set 
{
etatLongueur = value; 
}
} // propriété
}

public delegate void enDeplacement();    //  declaration de type délégué

interface ITroupeau<T> where T : IAnimal
{
int kmParJour()// méthode
OnDeplace;   // événement du type délégué : enDeplacement 
OnRepose;   // autre événement du type enDeplacement 
int nbrAnimaux // propriété
T this[string nom]    // déclaration d'indexeur
}

class troupeauBaleineBosses : ITroupeau<BaleineBosses>
{
}

class ApplicationXXX  
{
static void Main(string[ ] args) 
{
BaleineBosses mobyDyck = new BaleineBosses( );
System.Console.Read();
}
}

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